diff --git a/gen/Manifest.toml b/gen/Manifest.toml index ed5c6c1b2..2fa092673 100644 --- a/gen/Manifest.toml +++ b/gen/Manifest.toml @@ -1,8 +1,8 @@ # This file is machine-generated - editing it directly is not advised -julia_version = "1.9.0-DEV" +julia_version = "1.9.0-beta4" manifest_format = "2.0" -project_hash = "3d1c3440c5f5d2f04d75370d10d97474962219fe" +project_hash = "26a57bd5ee5b16d5abc45095c0840c2c659a6a22" [[deps.ArgTools]] uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" @@ -33,9 +33,9 @@ version = "0.16.6" [[deps.Clang_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "TOML", "Zlib_jll", "libLLVM_jll"] -git-tree-sha1 = "c7c8938a36b2ab8e5eb9b6c937ba5049e1e666fa" +git-tree-sha1 = "b88c99c9093f9db49a40d0715ea0e3ae5bbd91f7" uuid = "0ee61d77-7f21-5576-8119-9fcc46b10100" -version = "14.0.6+0" +version = "14.0.6+2" [[deps.Dates]] deps = ["Printf"] @@ -113,9 +113,9 @@ version = "1.42.0+0" [[deps.Libiconv_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "42b62845d70a619f063a7da093d995ec8e15e778" +git-tree-sha1 = "c7cb1f5d892775ba13767a87c7ada0b980ea0a71" uuid = "94ce4f54-9a6c-5748-9c1c-f9c7231a4531" -version = "1.16.1+1" +version = "1.16.1+2" [[deps.Logging]] uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" @@ -152,7 +152,7 @@ version = "1.2.0" [[deps.Pkg]] deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "Serialization", "TOML", "Tar", "UUIDs", "p7zip_jll"] uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" -version = "1.8.0" +version = "1.9.0" [[deps.Preferences]] deps = ["TOML"] @@ -209,7 +209,7 @@ uuid = "6462fe0b-24de-5631-8697-dd941f90decc" [[deps.TOML]] deps = ["Dates"] uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76" -version = "1.0.0" +version = "1.0.3" [[deps.Tar]] deps = ["ArgTools", "SHA"] diff --git a/gen/Project.toml b/gen/Project.toml index c3fd80f5e..e1b0a3a26 100644 --- a/gen/Project.toml +++ b/gen/Project.toml @@ -2,3 +2,4 @@ Clang = "40e3b903-d033-50b4-a0cc-940c62c95e31" MIOpen_jll = "2409bb75-d5ef-542a-ac68-1cfd4c37dc24" hsa_rocr_jll = "dd59ff1a-a01a-568d-8b29-0669330f116a" +rocBLAS_jll = "1ef8cab2-a151-54b4-a57f-5fbb4046a4ab" diff --git a/gen/rocblas/generator.jl b/gen/rocblas/generator.jl new file mode 100644 index 000000000..9122e83dd --- /dev/null +++ b/gen/rocblas/generator.jl @@ -0,0 +1,18 @@ +using Clang.Generators +using rocBLAS_jll + +include_dir = normpath(rocBLAS_jll.artifact_dir, "include") +rocblas_dir = joinpath(include_dir, "rocblas") +options = load_options("rocblas/rocblas-generator.toml") + +args = get_default_args() +push!(args, "-I$include_dir") + +headers = [ + joinpath(rocblas_dir, header) + for header in readdir(rocblas_dir) + if endswith(header, ".h") +] + +ctx = create_context(headers, args, options) +build!(ctx) diff --git a/gen/rocblas/rocblas-generator.toml b/gen/rocblas/rocblas-generator.toml new file mode 100644 index 000000000..3e70b9822 --- /dev/null +++ b/gen/rocblas/rocblas-generator.toml @@ -0,0 +1,6 @@ +[general] +module_name = "LibrocBLAS" +library_name = "librocblas" +output_file_path = "./librocblas.jl" +jll_pkg_name = "rocBLAS_jll" +export_symbol_prefixes = [] diff --git a/src/blas/error.jl b/src/blas/error.jl index 257cc3343..e427956d4 100644 --- a/src/blas/error.jl +++ b/src/blas/error.jl @@ -3,38 +3,38 @@ export ROCBLASError import .AMDGPU: @check, check struct ROCBLASError <: Exception - code::rocblas_status_t + code::rocblas_status msg::AbstractString end Base.show(io::IO, err::ROCBLASError) = print(io, "ROCBLASError(code $(err.code), $(err.msg))") -function ROCBLASError(code::rocblas_status_t) +function ROCBLASError(code::rocblas_status) msg = status_message(code) return ROCBLASError(code, msg) end function status_message(status) - if status == ROCBLAS_STATUS_SUCCESS + if status == rocblas_status_success return "the operation completed successfully" - elseif status == ROCBLAS_STATUS_INVALID_HANDLE + elseif status == rocblas_status_invalid_handle return "handle not initialized, invalid or null" - elseif status == ROCBLAS_STATUS_NOT_IMPLEMENTED + elseif status == rocblas_status_not_implemented return "this function is not implemented" - elseif status == ROCBLAS_STATUS_INVALID_POINTER + elseif status == rocblas_status_invalid_pointer return "invalid pointer parameter" - elseif status == ROCBLAS_STATUS_INVALID_SIZE + elseif status == rocblas_status_invalid_size return "invalid size parameter" - elseif status == ROCBLAS_STATUS_MEMORY_ERROR + elseif status == rocblas_status_memory_error return "failed internal memory allocation, copy or dealloc" - elseif status == ROCBLAS_STATUS_INTERNAL_ERROR + elseif status == rocblas_status_internal_error return "an internal operation failed" else return "unknown status" end end -function check(status::rocblas_status_t) - if status != ROCBLAS_STATUS_SUCCESS +function check(status::rocblas_status) + if status != rocblas_status_success throw(ROCBLASError(status)) end return status diff --git a/src/blas/librocblas.jl b/src/blas/librocblas.jl index 1692fc95d..d6083d3fd 100644 --- a/src/blas/librocblas.jl +++ b/src/blas/librocblas.jl @@ -1,51 +1,2664 @@ -function rocblas_get_version_string() - vec = zeros(UInt8, 64) - str = reinterpret(Cstring, pointer(vec)) - ccall((:rocblas_get_version_string, librocblas), rocblas_status_t, (Cstring, Csize_t), str, 64) - return unsafe_string(str) +using rocBLAS_jll +export rocBLAS_jll + +using CEnum + +mutable struct _rocblas_handle end + +const rocblas_handle = Ptr{_rocblas_handle} + +@cenum rocblas_status_::UInt32 begin + rocblas_status_success = 0 + rocblas_status_invalid_handle = 1 + rocblas_status_not_implemented = 2 + rocblas_status_invalid_pointer = 3 + rocblas_status_invalid_size = 4 + rocblas_status_memory_error = 5 + rocblas_status_internal_error = 6 + rocblas_status_perf_degraded = 7 + rocblas_status_size_query_mismatch = 8 + rocblas_status_size_increased = 9 + rocblas_status_size_unchanged = 10 + rocblas_status_invalid_value = 11 + rocblas_status_continue = 12 + rocblas_status_check_numerics_fail = 13 end -function rocblas_pointer_to_mode(ptr) - ccall((:rocblas_pointer_to_mode, librocblas), rocblas_pointer_mode_t, (Ptr{Cvoid},), ptr) + +const rocblas_status = rocblas_status_ + +function rocblas_set_start_stop_events(handle, startEvent, stopEvent) + ccall((:rocblas_set_start_stop_events, librocblas_path), rocblas_status, (rocblas_handle, hipEvent_t, hipEvent_t), handle, startEvent, stopEvent) +end + +struct rocblas_bfloat16 + data::UInt16 end -function rocblas_create_handle() - handle = Ref{rocblas_handle}() - ccall((:rocblas_create_handle, librocblas), rocblas_status_t, (Ptr{rocblas_handle},), handle) - return handle[] + +mutable struct rocblas_device_malloc_base end + +const rocblas_int = Int32 + +const rocblas_stride = Int64 + +const rocblas_float = Cfloat + +const rocblas_double = Cdouble + +struct rocblas_half + data::UInt16 end -function rocblas_destroy_handle(handle) - ccall((:rocblas_destroy_handle, librocblas), rocblas_status_t, (rocblas_handle,), handle) + +struct rocblas_int8x4 + a::Int8 + b::Int8 + c::Int8 + d::Int8 +end + +struct rocblas_float_complex + x::Cfloat + y::Cfloat +end + +struct rocblas_double_complex + x::Cdouble + y::Cdouble +end + +@cenum rocblas_operation_::UInt32 begin + rocblas_operation_none = 111 + rocblas_operation_transpose = 112 + rocblas_operation_conjugate_transpose = 113 +end + +const rocblas_operation = rocblas_operation_ + +@cenum rocblas_fill_::UInt32 begin + rocblas_fill_upper = 121 + rocblas_fill_lower = 122 + rocblas_fill_full = 123 +end + +const rocblas_fill = rocblas_fill_ + +@cenum rocblas_diagonal_::UInt32 begin + rocblas_diagonal_non_unit = 131 + rocblas_diagonal_unit = 132 +end + +const rocblas_diagonal = rocblas_diagonal_ + +@cenum rocblas_side_::UInt32 begin + rocblas_side_left = 141 + rocblas_side_right = 142 + rocblas_side_both = 143 +end + +const rocblas_side = rocblas_side_ + +@cenum rocblas_datatype_::UInt32 begin + rocblas_datatype_f16_r = 150 + rocblas_datatype_f32_r = 151 + rocblas_datatype_f64_r = 152 + rocblas_datatype_f16_c = 153 + rocblas_datatype_f32_c = 154 + rocblas_datatype_f64_c = 155 + rocblas_datatype_i8_r = 160 + rocblas_datatype_u8_r = 161 + rocblas_datatype_i32_r = 162 + rocblas_datatype_u32_r = 163 + rocblas_datatype_i8_c = 164 + rocblas_datatype_u8_c = 165 + rocblas_datatype_i32_c = 166 + rocblas_datatype_u32_c = 167 + rocblas_datatype_bf16_r = 168 + rocblas_datatype_bf16_c = 169 +end + +const rocblas_datatype = rocblas_datatype_ + +@cenum rocblas_pointer_mode_::UInt32 begin + rocblas_pointer_mode_host = 0 + rocblas_pointer_mode_device = 1 +end + +const rocblas_pointer_mode = rocblas_pointer_mode_ + +@cenum rocblas_atomics_mode_::UInt32 begin + rocblas_atomics_not_allowed = 0 + rocblas_atomics_allowed = 1 +end + +const rocblas_atomics_mode = rocblas_atomics_mode_ + +@cenum rocblas_performance_metric_::UInt32 begin + rocblas_default_performance_metric = 0 + rocblas_device_efficiency_performance_metric = 1 + rocblas_cu_efficiency_performance_metric = 2 +end + +const rocblas_performance_metric = rocblas_performance_metric_ + +@cenum rocblas_layer_mode_::UInt32 begin + rocblas_layer_mode_none = 0 + rocblas_layer_mode_log_trace = 1 + rocblas_layer_mode_log_bench = 2 + rocblas_layer_mode_log_profile = 4 +end + +const rocblas_layer_mode = rocblas_layer_mode_ + +@cenum rocblas_gemm_algo_::UInt32 begin + rocblas_gemm_algo_standard = 0 +end + +const rocblas_gemm_algo = rocblas_gemm_algo_ + +@cenum rocblas_gemm_flags_::UInt32 begin + rocblas_gemm_flags_none = 0 + rocblas_gemm_flags_pack_int8x4 = 1 + rocblas_gemm_flags_use_cu_efficiency = 2 + rocblas_gemm_flags_fp16_alt_impl = 4 +end + +const rocblas_gemm_flags = rocblas_gemm_flags_ + +struct rocblas_union_u + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{rocblas_union_u}, f::Symbol) + f === :h && return Ptr{rocblas_half}(x + 0) + f === :s && return Ptr{Cfloat}(x + 0) + f === :d && return Ptr{Cdouble}(x + 0) + f === :i && return Ptr{Int32}(x + 0) + f === :c && return Ptr{rocblas_float_complex}(x + 0) + f === :z && return Ptr{rocblas_double_complex}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::rocblas_union_u, f::Symbol) + r = Ref{rocblas_union_u}(x) + ptr = Base.unsafe_convert(Ptr{rocblas_union_u}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{rocblas_union_u}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +const rocblas_union_t = rocblas_union_u + +@cenum rocblas_check_numerics_mode_::UInt32 begin + rocblas_check_numerics_mode_no_check = 0 + rocblas_check_numerics_mode_info = 1 + rocblas_check_numerics_mode_warn = 2 + rocblas_check_numerics_mode_fail = 4 +end + +const rocblas_check_numerics_mode = rocblas_check_numerics_mode_ + +function rocblas_create_handle(handle) + ccall((:rocblas_create_handle, librocblas_path), rocblas_status, (Ptr{rocblas_handle},), handle) end -function rocblas_add_stream(handle, stream) - ccall((:rocblas_add_stream, librocblas), rocblas_status_t, (rocblas_handle, hipStream_t), handle, stream) + +function rocblas_destroy_handle(handle) + ccall((:rocblas_destroy_handle, librocblas_path), rocblas_status, (rocblas_handle,), handle) end + function rocblas_set_stream(handle, stream) - ccall((:rocblas_set_stream, librocblas), rocblas_status_t, (rocblas_handle, hipStream_t), handle, stream) + ccall((:rocblas_set_stream, librocblas_path), rocblas_status, (rocblas_handle, hipStream_t), handle, stream) end -function rocblas_get_stream(handle) - stream = Ref{hipStream_t}() - ccall((:rocblas_get_stream, librocblas), rocblas_status_t, (rocblas_handle, Ptr{hipStream_t}), handle, stream) - return stream[] + +function rocblas_get_stream(handle, stream) + ccall((:rocblas_get_stream, librocblas_path), rocblas_status, (rocblas_handle, Ptr{hipStream_t}), handle, stream) end + function rocblas_set_pointer_mode(handle, pointer_mode) - ccall((:rocblas_set_pointer_mode, librocblas), rocblas_status_t, (rocblas_handle, rocblas_pointer_mode_t), handle, pointer_mode) + ccall((:rocblas_set_pointer_mode, librocblas_path), rocblas_status, (rocblas_handle, rocblas_pointer_mode), handle, pointer_mode) +end + +function rocblas_get_pointer_mode(handle, pointer_mode) + ccall((:rocblas_get_pointer_mode, librocblas_path), rocblas_status, (rocblas_handle, Ptr{rocblas_pointer_mode}), handle, pointer_mode) +end + +function rocblas_set_atomics_mode(handle, atomics_mode) + ccall((:rocblas_set_atomics_mode, librocblas_path), rocblas_status, (rocblas_handle, rocblas_atomics_mode), handle, atomics_mode) +end + +function rocblas_get_atomics_mode(handle, atomics_mode) + ccall((:rocblas_get_atomics_mode, librocblas_path), rocblas_status, (rocblas_handle, Ptr{rocblas_atomics_mode}), handle, atomics_mode) +end + +function rocblas_query_int8_layout_flag(handle, flag) + ccall((:rocblas_query_int8_layout_flag, librocblas_path), rocblas_status, (rocblas_handle, Ptr{rocblas_gemm_flags}), handle, flag) +end + +function rocblas_pointer_to_mode(ptr) + ccall((:rocblas_pointer_to_mode, librocblas_path), rocblas_pointer_mode, (Ptr{Cvoid},), ptr) +end + +function rocblas_set_vector(n, elem_size, x, incx, y, incy) + ccall((:rocblas_set_vector, librocblas_path), rocblas_status, (rocblas_int, rocblas_int, Ptr{Cvoid}, rocblas_int, Ptr{Cvoid}, rocblas_int), n, elem_size, x, incx, y, incy) +end + +function rocblas_get_vector(n, elem_size, x, incx, y, incy) + ccall((:rocblas_get_vector, librocblas_path), rocblas_status, (rocblas_int, rocblas_int, Ptr{Cvoid}, rocblas_int, Ptr{Cvoid}, rocblas_int), n, elem_size, x, incx, y, incy) +end + +function rocblas_set_matrix(rows, cols, elem_size, a, lda, b, ldb) + ccall((:rocblas_set_matrix, librocblas_path), rocblas_status, (rocblas_int, rocblas_int, rocblas_int, Ptr{Cvoid}, rocblas_int, Ptr{Cvoid}, rocblas_int), rows, cols, elem_size, a, lda, b, ldb) +end + +function rocblas_get_matrix(rows, cols, elem_size, a, lda, b, ldb) + ccall((:rocblas_get_matrix, librocblas_path), rocblas_status, (rocblas_int, rocblas_int, rocblas_int, Ptr{Cvoid}, rocblas_int, Ptr{Cvoid}, rocblas_int), rows, cols, elem_size, a, lda, b, ldb) +end + +function rocblas_set_vector_async(n, elem_size, x, incx, y, incy, stream) + ccall((:rocblas_set_vector_async, librocblas_path), rocblas_status, (rocblas_int, rocblas_int, Ptr{Cvoid}, rocblas_int, Ptr{Cvoid}, rocblas_int, hipStream_t), n, elem_size, x, incx, y, incy, stream) +end + +function rocblas_get_vector_async(n, elem_size, x, incx, y, incy, stream) + ccall((:rocblas_get_vector_async, librocblas_path), rocblas_status, (rocblas_int, rocblas_int, Ptr{Cvoid}, rocblas_int, Ptr{Cvoid}, rocblas_int, hipStream_t), n, elem_size, x, incx, y, incy, stream) +end + +function rocblas_set_matrix_async(rows, cols, elem_size, a, lda, b, ldb, stream) + ccall((:rocblas_set_matrix_async, librocblas_path), rocblas_status, (rocblas_int, rocblas_int, rocblas_int, Ptr{Cvoid}, rocblas_int, Ptr{Cvoid}, rocblas_int, hipStream_t), rows, cols, elem_size, a, lda, b, ldb, stream) +end + +function rocblas_get_matrix_async(rows, cols, elem_size, a, lda, b, ldb, stream) + ccall((:rocblas_get_matrix_async, librocblas_path), rocblas_status, (rocblas_int, rocblas_int, rocblas_int, Ptr{Cvoid}, rocblas_int, Ptr{Cvoid}, rocblas_int, hipStream_t), rows, cols, elem_size, a, lda, b, ldb, stream) +end + +function rocblas_set_solution_fitness_query(handle, fitness) + ccall((:rocblas_set_solution_fitness_query, librocblas_path), rocblas_status, (rocblas_handle, Ptr{Cdouble}), handle, fitness) +end + +function rocblas_set_performance_metric(handle, metric) + ccall((:rocblas_set_performance_metric, librocblas_path), rocblas_status, (rocblas_handle, rocblas_performance_metric), handle, metric) +end + +function rocblas_get_performance_metric(handle, metric) + ccall((:rocblas_get_performance_metric, librocblas_path), rocblas_status, (rocblas_handle, Ptr{rocblas_performance_metric}), handle, metric) +end + +function rocblas_sscal(handle, n, alpha, x, incx) + ccall((:rocblas_sscal, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Cfloat}, Ptr{Cfloat}, rocblas_int), handle, n, alpha, x, incx) +end + +function rocblas_dscal(handle, n, alpha, x, incx) + ccall((:rocblas_dscal, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Cdouble}, Ptr{Cdouble}, rocblas_int), handle, n, alpha, x, incx) +end + +function rocblas_cscal(handle, n, alpha, x, incx) + ccall((:rocblas_cscal, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{rocblas_float_complex}, Ptr{rocblas_float_complex}, rocblas_int), handle, n, alpha, x, incx) +end + +function rocblas_zscal(handle, n, alpha, x, incx) + ccall((:rocblas_zscal, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{rocblas_double_complex}, Ptr{rocblas_double_complex}, rocblas_int), handle, n, alpha, x, incx) +end + +function rocblas_csscal(handle, n, alpha, x, incx) + ccall((:rocblas_csscal, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Cfloat}, Ptr{rocblas_float_complex}, rocblas_int), handle, n, alpha, x, incx) +end + +function rocblas_zdscal(handle, n, alpha, x, incx) + ccall((:rocblas_zdscal, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Cdouble}, Ptr{rocblas_double_complex}, rocblas_int), handle, n, alpha, x, incx) +end + +function rocblas_sscal_batched(handle, n, alpha, x, incx, batch_count) + ccall((:rocblas_sscal_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Cfloat}, Ptr{Ptr{Cfloat}}, rocblas_int, rocblas_int), handle, n, alpha, x, incx, batch_count) +end + +function rocblas_dscal_batched(handle, n, alpha, x, incx, batch_count) + ccall((:rocblas_dscal_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Cdouble}, Ptr{Ptr{Cdouble}}, rocblas_int, rocblas_int), handle, n, alpha, x, incx, batch_count) +end + +function rocblas_cscal_batched(handle, n, alpha, x, incx, batch_count) + ccall((:rocblas_cscal_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{rocblas_float_complex}, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, rocblas_int), handle, n, alpha, x, incx, batch_count) +end + +function rocblas_zscal_batched(handle, n, alpha, x, incx, batch_count) + ccall((:rocblas_zscal_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{rocblas_double_complex}, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, rocblas_int), handle, n, alpha, x, incx, batch_count) +end + +function rocblas_csscal_batched(handle, n, alpha, x, incx, batch_count) + ccall((:rocblas_csscal_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Cfloat}, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, rocblas_int), handle, n, alpha, x, incx, batch_count) end -function rocblas_get_pointer_mode(handle) - pointer_mode = Ref{rocblas_pointer_mode_t}() - ccall((:rocblas_get_pointer_mode, librocblas), rocblas_status_t, (rocblas_handle, Ptr{rocblas_pointer_mode_t}), handle, pointer_mode) - return pointer_mode[] + +function rocblas_zdscal_batched(handle, n, alpha, x, incx, batch_count) + ccall((:rocblas_zdscal_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Cdouble}, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, rocblas_int), handle, n, alpha, x, incx, batch_count) +end + +function rocblas_sscal_strided_batched(handle, n, alpha, x, incx, stride_x, batch_count) + ccall((:rocblas_sscal_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Cfloat}, Ptr{Cfloat}, rocblas_int, rocblas_stride, rocblas_int), handle, n, alpha, x, incx, stride_x, batch_count) +end + +function rocblas_dscal_strided_batched(handle, n, alpha, x, incx, stride_x, batch_count) + ccall((:rocblas_dscal_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Cdouble}, Ptr{Cdouble}, rocblas_int, rocblas_stride, rocblas_int), handle, n, alpha, x, incx, stride_x, batch_count) +end + +function rocblas_cscal_strided_batched(handle, n, alpha, x, incx, stride_x, batch_count) + ccall((:rocblas_cscal_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{rocblas_float_complex}, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, rocblas_int), handle, n, alpha, x, incx, stride_x, batch_count) +end + +function rocblas_zscal_strided_batched(handle, n, alpha, x, incx, stride_x, batch_count) + ccall((:rocblas_zscal_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{rocblas_double_complex}, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, rocblas_int), handle, n, alpha, x, incx, stride_x, batch_count) +end + +function rocblas_csscal_strided_batched(handle, n, alpha, x, incx, stride_x, batch_count) + ccall((:rocblas_csscal_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Cfloat}, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, rocblas_int), handle, n, alpha, x, incx, stride_x, batch_count) +end + +function rocblas_zdscal_strided_batched(handle, n, alpha, x, incx, stride_x, batch_count) + ccall((:rocblas_zdscal_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Cdouble}, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, rocblas_int), handle, n, alpha, x, incx, stride_x, batch_count) +end + +function rocblas_scopy(handle, n, x, incx, y, incy) + ccall((:rocblas_scopy, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Cfloat}, rocblas_int, Ptr{Cfloat}, rocblas_int), handle, n, x, incx, y, incy) +end + +function rocblas_dcopy(handle, n, x, incx, y, incy) + ccall((:rocblas_dcopy, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Cdouble}, rocblas_int, Ptr{Cdouble}, rocblas_int), handle, n, x, incx, y, incy) +end + +function rocblas_ccopy(handle, n, x, incx, y, incy) + ccall((:rocblas_ccopy, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{rocblas_float_complex}, rocblas_int, Ptr{rocblas_float_complex}, rocblas_int), handle, n, x, incx, y, incy) +end + +function rocblas_zcopy(handle, n, x, incx, y, incy) + ccall((:rocblas_zcopy, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{rocblas_double_complex}, rocblas_int, Ptr{rocblas_double_complex}, rocblas_int), handle, n, x, incx, y, incy) +end + +function rocblas_scopy_batched(handle, n, x, incx, y, incy, batch_count) + ccall((:rocblas_scopy_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Ptr{Cfloat}}, rocblas_int, Ptr{Ptr{Cfloat}}, rocblas_int, rocblas_int), handle, n, x, incx, y, incy, batch_count) +end + +function rocblas_dcopy_batched(handle, n, x, incx, y, incy, batch_count) + ccall((:rocblas_dcopy_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Ptr{Cdouble}}, rocblas_int, Ptr{Ptr{Cdouble}}, rocblas_int, rocblas_int), handle, n, x, incx, y, incy, batch_count) +end + +function rocblas_ccopy_batched(handle, n, x, incx, y, incy, batch_count) + ccall((:rocblas_ccopy_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, rocblas_int), handle, n, x, incx, y, incy, batch_count) +end + +function rocblas_zcopy_batched(handle, n, x, incx, y, incy, batch_count) + ccall((:rocblas_zcopy_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, rocblas_int), handle, n, x, incx, y, incy, batch_count) +end + +function rocblas_scopy_strided_batched(handle, n, x, incx, stridex, y, incy, stridey, batch_count) + ccall((:rocblas_scopy_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Cfloat}, rocblas_int, rocblas_stride, Ptr{Cfloat}, rocblas_int, rocblas_stride, rocblas_int), handle, n, x, incx, stridex, y, incy, stridey, batch_count) +end + +function rocblas_dcopy_strided_batched(handle, n, x, incx, stridex, y, incy, stridey, batch_count) + ccall((:rocblas_dcopy_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Cdouble}, rocblas_int, rocblas_stride, Ptr{Cdouble}, rocblas_int, rocblas_stride, rocblas_int), handle, n, x, incx, stridex, y, incy, stridey, batch_count) +end + +function rocblas_ccopy_strided_batched(handle, n, x, incx, stridex, y, incy, stridey, batch_count) + ccall((:rocblas_ccopy_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, rocblas_int), handle, n, x, incx, stridex, y, incy, stridey, batch_count) +end + +function rocblas_zcopy_strided_batched(handle, n, x, incx, stridex, y, incy, stridey, batch_count) + ccall((:rocblas_zcopy_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, rocblas_int), handle, n, x, incx, stridex, y, incy, stridey, batch_count) +end + +function rocblas_sdot(handle, n, x, incx, y, incy, result) + ccall((:rocblas_sdot, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Cfloat}, rocblas_int, Ptr{Cfloat}, rocblas_int, Ptr{Cfloat}), handle, n, x, incx, y, incy, result) +end + +function rocblas_ddot(handle, n, x, incx, y, incy, result) + ccall((:rocblas_ddot, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Cdouble}, rocblas_int, Ptr{Cdouble}, rocblas_int, Ptr{Cdouble}), handle, n, x, incx, y, incy, result) +end + +function rocblas_hdot(handle, n, x, incx, y, incy, result) + ccall((:rocblas_hdot, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{rocblas_half}, rocblas_int, Ptr{rocblas_half}, rocblas_int, Ptr{rocblas_half}), handle, n, x, incx, y, incy, result) +end + +function rocblas_bfdot(handle, n, x, incx, y, incy, result) + ccall((:rocblas_bfdot, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{rocblas_bfloat16}, rocblas_int, Ptr{rocblas_bfloat16}, rocblas_int, Ptr{rocblas_bfloat16}), handle, n, x, incx, y, incy, result) +end + +function rocblas_cdotu(handle, n, x, incx, y, incy, result) + ccall((:rocblas_cdotu, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{rocblas_float_complex}, rocblas_int, Ptr{rocblas_float_complex}, rocblas_int, Ptr{rocblas_float_complex}), handle, n, x, incx, y, incy, result) +end + +function rocblas_zdotu(handle, n, x, incx, y, incy, result) + ccall((:rocblas_zdotu, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{rocblas_double_complex}, rocblas_int, Ptr{rocblas_double_complex}, rocblas_int, Ptr{rocblas_double_complex}), handle, n, x, incx, y, incy, result) +end + +function rocblas_cdotc(handle, n, x, incx, y, incy, result) + ccall((:rocblas_cdotc, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{rocblas_float_complex}, rocblas_int, Ptr{rocblas_float_complex}, rocblas_int, Ptr{rocblas_float_complex}), handle, n, x, incx, y, incy, result) +end + +function rocblas_zdotc(handle, n, x, incx, y, incy, result) + ccall((:rocblas_zdotc, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{rocblas_double_complex}, rocblas_int, Ptr{rocblas_double_complex}, rocblas_int, Ptr{rocblas_double_complex}), handle, n, x, incx, y, incy, result) +end + +function rocblas_sdot_batched(handle, n, x, incx, y, incy, batch_count, result) + ccall((:rocblas_sdot_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Ptr{Cfloat}}, rocblas_int, Ptr{Ptr{Cfloat}}, rocblas_int, rocblas_int, Ptr{Cfloat}), handle, n, x, incx, y, incy, batch_count, result) +end + +function rocblas_ddot_batched(handle, n, x, incx, y, incy, batch_count, result) + ccall((:rocblas_ddot_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Ptr{Cdouble}}, rocblas_int, Ptr{Ptr{Cdouble}}, rocblas_int, rocblas_int, Ptr{Cdouble}), handle, n, x, incx, y, incy, batch_count, result) +end + +function rocblas_hdot_batched(handle, n, x, incx, y, incy, batch_count, result) + ccall((:rocblas_hdot_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Ptr{rocblas_half}}, rocblas_int, Ptr{Ptr{rocblas_half}}, rocblas_int, rocblas_int, Ptr{rocblas_half}), handle, n, x, incx, y, incy, batch_count, result) +end + +function rocblas_bfdot_batched(handle, n, x, incx, y, incy, batch_count, result) + ccall((:rocblas_bfdot_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Ptr{rocblas_bfloat16}}, rocblas_int, Ptr{Ptr{rocblas_bfloat16}}, rocblas_int, rocblas_int, Ptr{rocblas_bfloat16}), handle, n, x, incx, y, incy, batch_count, result) +end + +function rocblas_cdotu_batched(handle, n, x, incx, y, incy, batch_count, result) + ccall((:rocblas_cdotu_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, rocblas_int, Ptr{rocblas_float_complex}), handle, n, x, incx, y, incy, batch_count, result) +end + +function rocblas_zdotu_batched(handle, n, x, incx, y, incy, batch_count, result) + ccall((:rocblas_zdotu_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, rocblas_int, Ptr{rocblas_double_complex}), handle, n, x, incx, y, incy, batch_count, result) +end + +function rocblas_cdotc_batched(handle, n, x, incx, y, incy, batch_count, result) + ccall((:rocblas_cdotc_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, rocblas_int, Ptr{rocblas_float_complex}), handle, n, x, incx, y, incy, batch_count, result) +end + +function rocblas_zdotc_batched(handle, n, x, incx, y, incy, batch_count, result) + ccall((:rocblas_zdotc_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, rocblas_int, Ptr{rocblas_double_complex}), handle, n, x, incx, y, incy, batch_count, result) +end + +function rocblas_sdot_strided_batched(handle, n, x, incx, stridex, y, incy, stridey, batch_count, result) + ccall((:rocblas_sdot_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Cfloat}, rocblas_int, rocblas_stride, Ptr{Cfloat}, rocblas_int, rocblas_stride, rocblas_int, Ptr{Cfloat}), handle, n, x, incx, stridex, y, incy, stridey, batch_count, result) +end + +function rocblas_ddot_strided_batched(handle, n, x, incx, stridex, y, incy, stridey, batch_count, result) + ccall((:rocblas_ddot_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Cdouble}, rocblas_int, rocblas_stride, Ptr{Cdouble}, rocblas_int, rocblas_stride, rocblas_int, Ptr{Cdouble}), handle, n, x, incx, stridex, y, incy, stridey, batch_count, result) +end + +function rocblas_hdot_strided_batched(handle, n, x, incx, stridex, y, incy, stridey, batch_count, result) + ccall((:rocblas_hdot_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{rocblas_half}, rocblas_int, rocblas_stride, Ptr{rocblas_half}, rocblas_int, rocblas_stride, rocblas_int, Ptr{rocblas_half}), handle, n, x, incx, stridex, y, incy, stridey, batch_count, result) +end + +function rocblas_bfdot_strided_batched(handle, n, x, incx, stridex, y, incy, stridey, batch_count, result) + ccall((:rocblas_bfdot_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{rocblas_bfloat16}, rocblas_int, rocblas_stride, Ptr{rocblas_bfloat16}, rocblas_int, rocblas_stride, rocblas_int, Ptr{rocblas_bfloat16}), handle, n, x, incx, stridex, y, incy, stridey, batch_count, result) +end + +function rocblas_cdotu_strided_batched(handle, n, x, incx, stridex, y, incy, stridey, batch_count, result) + ccall((:rocblas_cdotu_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, rocblas_int, Ptr{rocblas_float_complex}), handle, n, x, incx, stridex, y, incy, stridey, batch_count, result) +end + +function rocblas_zdotu_strided_batched(handle, n, x, incx, stridex, y, incy, stridey, batch_count, result) + ccall((:rocblas_zdotu_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, rocblas_int, Ptr{rocblas_double_complex}), handle, n, x, incx, stridex, y, incy, stridey, batch_count, result) +end + +function rocblas_cdotc_strided_batched(handle, n, x, incx, stridex, y, incy, stridey, batch_count, result) + ccall((:rocblas_cdotc_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, rocblas_int, Ptr{rocblas_float_complex}), handle, n, x, incx, stridex, y, incy, stridey, batch_count, result) +end + +function rocblas_zdotc_strided_batched(handle, n, x, incx, stridex, y, incy, stridey, batch_count, result) + ccall((:rocblas_zdotc_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, rocblas_int, Ptr{rocblas_double_complex}), handle, n, x, incx, stridex, y, incy, stridey, batch_count, result) +end + +function rocblas_sswap(handle, n, x, incx, y, incy) + ccall((:rocblas_sswap, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Cfloat}, rocblas_int, Ptr{Cfloat}, rocblas_int), handle, n, x, incx, y, incy) +end + +function rocblas_dswap(handle, n, x, incx, y, incy) + ccall((:rocblas_dswap, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Cdouble}, rocblas_int, Ptr{Cdouble}, rocblas_int), handle, n, x, incx, y, incy) +end + +function rocblas_cswap(handle, n, x, incx, y, incy) + ccall((:rocblas_cswap, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{rocblas_float_complex}, rocblas_int, Ptr{rocblas_float_complex}, rocblas_int), handle, n, x, incx, y, incy) +end + +function rocblas_zswap(handle, n, x, incx, y, incy) + ccall((:rocblas_zswap, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{rocblas_double_complex}, rocblas_int, Ptr{rocblas_double_complex}, rocblas_int), handle, n, x, incx, y, incy) +end + +function rocblas_sswap_batched(handle, n, x, incx, y, incy, batch_count) + ccall((:rocblas_sswap_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Ptr{Cfloat}}, rocblas_int, Ptr{Ptr{Cfloat}}, rocblas_int, rocblas_int), handle, n, x, incx, y, incy, batch_count) +end + +function rocblas_dswap_batched(handle, n, x, incx, y, incy, batch_count) + ccall((:rocblas_dswap_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Ptr{Cdouble}}, rocblas_int, Ptr{Ptr{Cdouble}}, rocblas_int, rocblas_int), handle, n, x, incx, y, incy, batch_count) +end + +function rocblas_cswap_batched(handle, n, x, incx, y, incy, batch_count) + ccall((:rocblas_cswap_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, rocblas_int), handle, n, x, incx, y, incy, batch_count) +end + +function rocblas_zswap_batched(handle, n, x, incx, y, incy, batch_count) + ccall((:rocblas_zswap_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, rocblas_int), handle, n, x, incx, y, incy, batch_count) +end + +function rocblas_sswap_strided_batched(handle, n, x, incx, stridex, y, incy, stridey, batch_count) + ccall((:rocblas_sswap_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Cfloat}, rocblas_int, rocblas_stride, Ptr{Cfloat}, rocblas_int, rocblas_stride, rocblas_int), handle, n, x, incx, stridex, y, incy, stridey, batch_count) +end + +function rocblas_dswap_strided_batched(handle, n, x, incx, stridex, y, incy, stridey, batch_count) + ccall((:rocblas_dswap_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Cdouble}, rocblas_int, rocblas_stride, Ptr{Cdouble}, rocblas_int, rocblas_stride, rocblas_int), handle, n, x, incx, stridex, y, incy, stridey, batch_count) +end + +function rocblas_cswap_strided_batched(handle, n, x, incx, stridex, y, incy, stridey, batch_count) + ccall((:rocblas_cswap_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, rocblas_int), handle, n, x, incx, stridex, y, incy, stridey, batch_count) +end + +function rocblas_zswap_strided_batched(handle, n, x, incx, stridex, y, incy, stridey, batch_count) + ccall((:rocblas_zswap_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, rocblas_int), handle, n, x, incx, stridex, y, incy, stridey, batch_count) +end + +function rocblas_saxpy(handle, n, alpha, x, incx, y, incy) + ccall((:rocblas_saxpy, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Cfloat}, Ptr{Cfloat}, rocblas_int, Ptr{Cfloat}, rocblas_int), handle, n, alpha, x, incx, y, incy) +end + +function rocblas_daxpy(handle, n, alpha, x, incx, y, incy) + ccall((:rocblas_daxpy, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Cdouble}, Ptr{Cdouble}, rocblas_int, Ptr{Cdouble}, rocblas_int), handle, n, alpha, x, incx, y, incy) +end + +function rocblas_haxpy(handle, n, alpha, x, incx, y, incy) + ccall((:rocblas_haxpy, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{rocblas_half}, Ptr{rocblas_half}, rocblas_int, Ptr{rocblas_half}, rocblas_int), handle, n, alpha, x, incx, y, incy) +end + +function rocblas_caxpy(handle, n, alpha, x, incx, y, incy) + ccall((:rocblas_caxpy, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{rocblas_float_complex}, Ptr{rocblas_float_complex}, rocblas_int, Ptr{rocblas_float_complex}, rocblas_int), handle, n, alpha, x, incx, y, incy) +end + +function rocblas_zaxpy(handle, n, alpha, x, incx, y, incy) + ccall((:rocblas_zaxpy, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{rocblas_double_complex}, Ptr{rocblas_double_complex}, rocblas_int, Ptr{rocblas_double_complex}, rocblas_int), handle, n, alpha, x, incx, y, incy) +end + +function rocblas_haxpy_batched(handle, n, alpha, x, incx, y, incy, batch_count) + ccall((:rocblas_haxpy_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{rocblas_half}, Ptr{Ptr{rocblas_half}}, rocblas_int, Ptr{Ptr{rocblas_half}}, rocblas_int, rocblas_int), handle, n, alpha, x, incx, y, incy, batch_count) +end + +function rocblas_saxpy_batched(handle, n, alpha, x, incx, y, incy, batch_count) + ccall((:rocblas_saxpy_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Cfloat}, Ptr{Ptr{Cfloat}}, rocblas_int, Ptr{Ptr{Cfloat}}, rocblas_int, rocblas_int), handle, n, alpha, x, incx, y, incy, batch_count) +end + +function rocblas_daxpy_batched(handle, n, alpha, x, incx, y, incy, batch_count) + ccall((:rocblas_daxpy_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Cdouble}, Ptr{Ptr{Cdouble}}, rocblas_int, Ptr{Ptr{Cdouble}}, rocblas_int, rocblas_int), handle, n, alpha, x, incx, y, incy, batch_count) end -#= TODO: I don't know if these are really important... -function rocblas_set_vector() - ccall((:rocblas_set_vector, librocblas), rocblas_status_t, n::rocblas_int_t, elem_size::rocblas_int_t, x::Ptr{Cvoid}, incx::rocblas_int_t, y::Ptr{Cvoid}, incy::rocblas_int_t) +function rocblas_caxpy_batched(handle, n, alpha, x, incx, y, incy, batch_count) + ccall((:rocblas_caxpy_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{rocblas_float_complex}, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, rocblas_int), handle, n, alpha, x, incx, y, incy, batch_count) end -function rocblas_get_vector() - ccall((:rocblas_get_vector, librocblas), rocblas_status_t, n::rocblas_int_t, elem_size::rocblas_int_t, x::Ptr{Cvoid}, incx::rocblas_int_t, y::Ptr{Cvoid}, incy::rocblas_int_t) + +function rocblas_zaxpy_batched(handle, n, alpha, x, incx, y, incy, batch_count) + ccall((:rocblas_zaxpy_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{rocblas_double_complex}, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, rocblas_int), handle, n, alpha, x, incx, y, incy, batch_count) end -function rocblas_set_matrix() - ccall((:rocblas_set_matrix, librocblas), rocblas_status_t, rows::rocblas_int_t, cols::rocblas_int_t, elem_size::rocblas_int_t, a::Ptr{Cvoid}, lda::rocblas_int_t, b::Ptr{Cvoid}, ldb::rocblas_int_t) + +function rocblas_haxpy_strided_batched(handle, n, alpha, x, incx, stridex, y, incy, stridey, batch_count) + ccall((:rocblas_haxpy_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{rocblas_half}, Ptr{rocblas_half}, rocblas_int, rocblas_stride, Ptr{rocblas_half}, rocblas_int, rocblas_stride, rocblas_int), handle, n, alpha, x, incx, stridex, y, incy, stridey, batch_count) end -function rocblas_get_matrix() - ccall((:rocblas_get_matrix, librocblas), rocblas_status_t, rows::rocblas_int_t, cols::rocblas_int_t, elem_size::rocblas_int_t, a::Ptr{Cvoid}, lda::rocblas_int_t, b::Ptr{Cvoid}, ldb::rocblas_int_t) + +function rocblas_saxpy_strided_batched(handle, n, alpha, x, incx, stridex, y, incy, stridey, batch_count) + ccall((:rocblas_saxpy_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Cfloat}, Ptr{Cfloat}, rocblas_int, rocblas_stride, Ptr{Cfloat}, rocblas_int, rocblas_stride, rocblas_int), handle, n, alpha, x, incx, stridex, y, incy, stridey, batch_count) +end + +function rocblas_daxpy_strided_batched(handle, n, alpha, x, incx, stridex, y, incy, stridey, batch_count) + ccall((:rocblas_daxpy_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Cdouble}, Ptr{Cdouble}, rocblas_int, rocblas_stride, Ptr{Cdouble}, rocblas_int, rocblas_stride, rocblas_int), handle, n, alpha, x, incx, stridex, y, incy, stridey, batch_count) +end + +function rocblas_caxpy_strided_batched(handle, n, alpha, x, incx, stridex, y, incy, stridey, batch_count) + ccall((:rocblas_caxpy_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{rocblas_float_complex}, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, rocblas_int), handle, n, alpha, x, incx, stridex, y, incy, stridey, batch_count) +end + +function rocblas_zaxpy_strided_batched(handle, n, alpha, x, incx, stridex, y, incy, stridey, batch_count) + ccall((:rocblas_zaxpy_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{rocblas_double_complex}, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, rocblas_int), handle, n, alpha, x, incx, stridex, y, incy, stridey, batch_count) +end + +function rocblas_sasum(handle, n, x, incx, result) + ccall((:rocblas_sasum, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Cfloat}, rocblas_int, Ptr{Cfloat}), handle, n, x, incx, result) +end + +function rocblas_dasum(handle, n, x, incx, result) + ccall((:rocblas_dasum, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Cdouble}, rocblas_int, Ptr{Cdouble}), handle, n, x, incx, result) +end + +function rocblas_scasum(handle, n, x, incx, result) + ccall((:rocblas_scasum, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{rocblas_float_complex}, rocblas_int, Ptr{Cfloat}), handle, n, x, incx, result) +end + +function rocblas_dzasum(handle, n, x, incx, result) + ccall((:rocblas_dzasum, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{rocblas_double_complex}, rocblas_int, Ptr{Cdouble}), handle, n, x, incx, result) +end + +function rocblas_sasum_batched(handle, n, x, incx, batch_count, results) + ccall((:rocblas_sasum_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Ptr{Cfloat}}, rocblas_int, rocblas_int, Ptr{Cfloat}), handle, n, x, incx, batch_count, results) +end + +function rocblas_dasum_batched(handle, n, x, incx, batch_count, results) + ccall((:rocblas_dasum_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Ptr{Cdouble}}, rocblas_int, rocblas_int, Ptr{Cdouble}), handle, n, x, incx, batch_count, results) +end + +function rocblas_scasum_batched(handle, n, x, incx, batch_count, results) + ccall((:rocblas_scasum_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, rocblas_int, Ptr{Cfloat}), handle, n, x, incx, batch_count, results) +end + +function rocblas_dzasum_batched(handle, n, x, incx, batch_count, results) + ccall((:rocblas_dzasum_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, rocblas_int, Ptr{Cdouble}), handle, n, x, incx, batch_count, results) +end + +function rocblas_sasum_strided_batched(handle, n, x, incx, stridex, batch_count, results) + ccall((:rocblas_sasum_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Cfloat}, rocblas_int, rocblas_stride, rocblas_int, Ptr{Cfloat}), handle, n, x, incx, stridex, batch_count, results) +end + +function rocblas_dasum_strided_batched(handle, n, x, incx, stridex, batch_count, results) + ccall((:rocblas_dasum_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Cdouble}, rocblas_int, rocblas_stride, rocblas_int, Ptr{Cdouble}), handle, n, x, incx, stridex, batch_count, results) +end + +function rocblas_scasum_strided_batched(handle, n, x, incx, stridex, batch_count, results) + ccall((:rocblas_scasum_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, rocblas_int, Ptr{Cfloat}), handle, n, x, incx, stridex, batch_count, results) +end + +function rocblas_dzasum_strided_batched(handle, n, x, incx, stridex, batch_count, results) + ccall((:rocblas_dzasum_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, rocblas_int, Ptr{Cdouble}), handle, n, x, incx, stridex, batch_count, results) +end + +function rocblas_snrm2(handle, n, x, incx, result) + ccall((:rocblas_snrm2, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Cfloat}, rocblas_int, Ptr{Cfloat}), handle, n, x, incx, result) +end + +function rocblas_dnrm2(handle, n, x, incx, result) + ccall((:rocblas_dnrm2, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Cdouble}, rocblas_int, Ptr{Cdouble}), handle, n, x, incx, result) +end + +function rocblas_scnrm2(handle, n, x, incx, result) + ccall((:rocblas_scnrm2, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{rocblas_float_complex}, rocblas_int, Ptr{Cfloat}), handle, n, x, incx, result) +end + +function rocblas_dznrm2(handle, n, x, incx, result) + ccall((:rocblas_dznrm2, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{rocblas_double_complex}, rocblas_int, Ptr{Cdouble}), handle, n, x, incx, result) +end + +function rocblas_snrm2_batched(handle, n, x, incx, batch_count, results) + ccall((:rocblas_snrm2_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Ptr{Cfloat}}, rocblas_int, rocblas_int, Ptr{Cfloat}), handle, n, x, incx, batch_count, results) +end + +function rocblas_dnrm2_batched(handle, n, x, incx, batch_count, results) + ccall((:rocblas_dnrm2_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Ptr{Cdouble}}, rocblas_int, rocblas_int, Ptr{Cdouble}), handle, n, x, incx, batch_count, results) +end + +function rocblas_scnrm2_batched(handle, n, x, incx, batch_count, results) + ccall((:rocblas_scnrm2_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, rocblas_int, Ptr{Cfloat}), handle, n, x, incx, batch_count, results) +end + +function rocblas_dznrm2_batched(handle, n, x, incx, batch_count, results) + ccall((:rocblas_dznrm2_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, rocblas_int, Ptr{Cdouble}), handle, n, x, incx, batch_count, results) +end + +function rocblas_snrm2_strided_batched(handle, n, x, incx, stridex, batch_count, results) + ccall((:rocblas_snrm2_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Cfloat}, rocblas_int, rocblas_stride, rocblas_int, Ptr{Cfloat}), handle, n, x, incx, stridex, batch_count, results) +end + +function rocblas_dnrm2_strided_batched(handle, n, x, incx, stridex, batch_count, results) + ccall((:rocblas_dnrm2_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Cdouble}, rocblas_int, rocblas_stride, rocblas_int, Ptr{Cdouble}), handle, n, x, incx, stridex, batch_count, results) +end + +function rocblas_scnrm2_strided_batched(handle, n, x, incx, stridex, batch_count, results) + ccall((:rocblas_scnrm2_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, rocblas_int, Ptr{Cfloat}), handle, n, x, incx, stridex, batch_count, results) +end + +function rocblas_dznrm2_strided_batched(handle, n, x, incx, stridex, batch_count, results) + ccall((:rocblas_dznrm2_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, rocblas_int, Ptr{Cdouble}), handle, n, x, incx, stridex, batch_count, results) +end + +function rocblas_isamax(handle, n, x, incx, result) + ccall((:rocblas_isamax, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Cfloat}, rocblas_int, Ptr{rocblas_int}), handle, n, x, incx, result) +end + +function rocblas_idamax(handle, n, x, incx, result) + ccall((:rocblas_idamax, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Cdouble}, rocblas_int, Ptr{rocblas_int}), handle, n, x, incx, result) +end + +function rocblas_icamax(handle, n, x, incx, result) + ccall((:rocblas_icamax, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{rocblas_float_complex}, rocblas_int, Ptr{rocblas_int}), handle, n, x, incx, result) +end + +function rocblas_izamax(handle, n, x, incx, result) + ccall((:rocblas_izamax, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{rocblas_double_complex}, rocblas_int, Ptr{rocblas_int}), handle, n, x, incx, result) +end + +function rocblas_isamax_batched(handle, n, x, incx, batch_count, result) + ccall((:rocblas_isamax_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Ptr{Cfloat}}, rocblas_int, rocblas_int, Ptr{rocblas_int}), handle, n, x, incx, batch_count, result) +end + +function rocblas_idamax_batched(handle, n, x, incx, batch_count, result) + ccall((:rocblas_idamax_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Ptr{Cdouble}}, rocblas_int, rocblas_int, Ptr{rocblas_int}), handle, n, x, incx, batch_count, result) +end + +function rocblas_icamax_batched(handle, n, x, incx, batch_count, result) + ccall((:rocblas_icamax_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, rocblas_int, Ptr{rocblas_int}), handle, n, x, incx, batch_count, result) +end + +function rocblas_izamax_batched(handle, n, x, incx, batch_count, result) + ccall((:rocblas_izamax_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, rocblas_int, Ptr{rocblas_int}), handle, n, x, incx, batch_count, result) +end + +function rocblas_isamax_strided_batched(handle, n, x, incx, stridex, batch_count, result) + ccall((:rocblas_isamax_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Cfloat}, rocblas_int, rocblas_stride, rocblas_int, Ptr{rocblas_int}), handle, n, x, incx, stridex, batch_count, result) +end + +function rocblas_idamax_strided_batched(handle, n, x, incx, stridex, batch_count, result) + ccall((:rocblas_idamax_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Cdouble}, rocblas_int, rocblas_stride, rocblas_int, Ptr{rocblas_int}), handle, n, x, incx, stridex, batch_count, result) +end + +function rocblas_icamax_strided_batched(handle, n, x, incx, stridex, batch_count, result) + ccall((:rocblas_icamax_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, rocblas_int, Ptr{rocblas_int}), handle, n, x, incx, stridex, batch_count, result) +end + +function rocblas_izamax_strided_batched(handle, n, x, incx, stridex, batch_count, result) + ccall((:rocblas_izamax_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, rocblas_int, Ptr{rocblas_int}), handle, n, x, incx, stridex, batch_count, result) +end + +function rocblas_isamin(handle, n, x, incx, result) + ccall((:rocblas_isamin, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Cfloat}, rocblas_int, Ptr{rocblas_int}), handle, n, x, incx, result) +end + +function rocblas_idamin(handle, n, x, incx, result) + ccall((:rocblas_idamin, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Cdouble}, rocblas_int, Ptr{rocblas_int}), handle, n, x, incx, result) +end + +function rocblas_icamin(handle, n, x, incx, result) + ccall((:rocblas_icamin, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{rocblas_float_complex}, rocblas_int, Ptr{rocblas_int}), handle, n, x, incx, result) +end + +function rocblas_izamin(handle, n, x, incx, result) + ccall((:rocblas_izamin, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{rocblas_double_complex}, rocblas_int, Ptr{rocblas_int}), handle, n, x, incx, result) +end + +function rocblas_isamin_batched(handle, n, x, incx, batch_count, result) + ccall((:rocblas_isamin_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Ptr{Cfloat}}, rocblas_int, rocblas_int, Ptr{rocblas_int}), handle, n, x, incx, batch_count, result) +end + +function rocblas_idamin_batched(handle, n, x, incx, batch_count, result) + ccall((:rocblas_idamin_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Ptr{Cdouble}}, rocblas_int, rocblas_int, Ptr{rocblas_int}), handle, n, x, incx, batch_count, result) +end + +function rocblas_icamin_batched(handle, n, x, incx, batch_count, result) + ccall((:rocblas_icamin_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, rocblas_int, Ptr{rocblas_int}), handle, n, x, incx, batch_count, result) +end + +function rocblas_izamin_batched(handle, n, x, incx, batch_count, result) + ccall((:rocblas_izamin_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, rocblas_int, Ptr{rocblas_int}), handle, n, x, incx, batch_count, result) +end + +function rocblas_isamin_strided_batched(handle, n, x, incx, stridex, batch_count, result) + ccall((:rocblas_isamin_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Cfloat}, rocblas_int, rocblas_stride, rocblas_int, Ptr{rocblas_int}), handle, n, x, incx, stridex, batch_count, result) +end + +function rocblas_idamin_strided_batched(handle, n, x, incx, stridex, batch_count, result) + ccall((:rocblas_idamin_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Cdouble}, rocblas_int, rocblas_stride, rocblas_int, Ptr{rocblas_int}), handle, n, x, incx, stridex, batch_count, result) +end + +function rocblas_icamin_strided_batched(handle, n, x, incx, stridex, batch_count, result) + ccall((:rocblas_icamin_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, rocblas_int, Ptr{rocblas_int}), handle, n, x, incx, stridex, batch_count, result) +end + +function rocblas_izamin_strided_batched(handle, n, x, incx, stridex, batch_count, result) + ccall((:rocblas_izamin_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, rocblas_int, Ptr{rocblas_int}), handle, n, x, incx, stridex, batch_count, result) +end + +function rocblas_srot(handle, n, x, incx, y, incy, c, s) + ccall((:rocblas_srot, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Cfloat}, rocblas_int, Ptr{Cfloat}, rocblas_int, Ptr{Cfloat}, Ptr{Cfloat}), handle, n, x, incx, y, incy, c, s) +end + +function rocblas_drot(handle, n, x, incx, y, incy, c, s) + ccall((:rocblas_drot, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Cdouble}, rocblas_int, Ptr{Cdouble}, rocblas_int, Ptr{Cdouble}, Ptr{Cdouble}), handle, n, x, incx, y, incy, c, s) +end + +function rocblas_crot(handle, n, x, incx, y, incy, c, s) + ccall((:rocblas_crot, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{rocblas_float_complex}, rocblas_int, Ptr{rocblas_float_complex}, rocblas_int, Ptr{Cfloat}, Ptr{rocblas_float_complex}), handle, n, x, incx, y, incy, c, s) +end + +function rocblas_csrot(handle, n, x, incx, y, incy, c, s) + ccall((:rocblas_csrot, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{rocblas_float_complex}, rocblas_int, Ptr{rocblas_float_complex}, rocblas_int, Ptr{Cfloat}, Ptr{Cfloat}), handle, n, x, incx, y, incy, c, s) +end + +function rocblas_zrot(handle, n, x, incx, y, incy, c, s) + ccall((:rocblas_zrot, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{rocblas_double_complex}, rocblas_int, Ptr{rocblas_double_complex}, rocblas_int, Ptr{Cdouble}, Ptr{rocblas_double_complex}), handle, n, x, incx, y, incy, c, s) +end + +function rocblas_zdrot(handle, n, x, incx, y, incy, c, s) + ccall((:rocblas_zdrot, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{rocblas_double_complex}, rocblas_int, Ptr{rocblas_double_complex}, rocblas_int, Ptr{Cdouble}, Ptr{Cdouble}), handle, n, x, incx, y, incy, c, s) +end + +function rocblas_srot_batched(handle, n, x, incx, y, incy, c, s, batch_count) + ccall((:rocblas_srot_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Ptr{Cfloat}}, rocblas_int, Ptr{Ptr{Cfloat}}, rocblas_int, Ptr{Cfloat}, Ptr{Cfloat}, rocblas_int), handle, n, x, incx, y, incy, c, s, batch_count) +end + +function rocblas_drot_batched(handle, n, x, incx, y, incy, c, s, batch_count) + ccall((:rocblas_drot_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Ptr{Cdouble}}, rocblas_int, Ptr{Ptr{Cdouble}}, rocblas_int, Ptr{Cdouble}, Ptr{Cdouble}, rocblas_int), handle, n, x, incx, y, incy, c, s, batch_count) +end + +function rocblas_crot_batched(handle, n, x, incx, y, incy, c, s, batch_count) + ccall((:rocblas_crot_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, Ptr{Cfloat}, Ptr{rocblas_float_complex}, rocblas_int), handle, n, x, incx, y, incy, c, s, batch_count) +end + +function rocblas_csrot_batched(handle, n, x, incx, y, incy, c, s, batch_count) + ccall((:rocblas_csrot_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, Ptr{Cfloat}, Ptr{Cfloat}, rocblas_int), handle, n, x, incx, y, incy, c, s, batch_count) +end + +function rocblas_zrot_batched(handle, n, x, incx, y, incy, c, s, batch_count) + ccall((:rocblas_zrot_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, Ptr{Cdouble}, Ptr{rocblas_double_complex}, rocblas_int), handle, n, x, incx, y, incy, c, s, batch_count) +end + +function rocblas_zdrot_batched(handle, n, x, incx, y, incy, c, s, batch_count) + ccall((:rocblas_zdrot_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, Ptr{Cdouble}, Ptr{Cdouble}, rocblas_int), handle, n, x, incx, y, incy, c, s, batch_count) +end + +function rocblas_srot_strided_batched(handle, n, x, incx, stride_x, y, incy, stride_y, c, s, batch_count) + ccall((:rocblas_srot_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Cfloat}, rocblas_int, rocblas_stride, Ptr{Cfloat}, rocblas_int, rocblas_stride, Ptr{Cfloat}, Ptr{Cfloat}, rocblas_int), handle, n, x, incx, stride_x, y, incy, stride_y, c, s, batch_count) +end + +function rocblas_drot_strided_batched(handle, n, x, incx, stride_x, y, incy, stride_y, c, s, batch_count) + ccall((:rocblas_drot_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Cdouble}, rocblas_int, rocblas_stride, Ptr{Cdouble}, rocblas_int, rocblas_stride, Ptr{Cdouble}, Ptr{Cdouble}, rocblas_int), handle, n, x, incx, stride_x, y, incy, stride_y, c, s, batch_count) +end + +function rocblas_crot_strided_batched(handle, n, x, incx, stride_x, y, incy, stride_y, c, s, batch_count) + ccall((:rocblas_crot_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, Ptr{Cfloat}, Ptr{rocblas_float_complex}, rocblas_int), handle, n, x, incx, stride_x, y, incy, stride_y, c, s, batch_count) +end + +function rocblas_csrot_strided_batched(handle, n, x, incx, stride_x, y, incy, stride_y, c, s, batch_count) + ccall((:rocblas_csrot_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, Ptr{Cfloat}, Ptr{Cfloat}, rocblas_int), handle, n, x, incx, stride_x, y, incy, stride_y, c, s, batch_count) +end + +function rocblas_zrot_strided_batched(handle, n, x, incx, stride_x, y, incy, stride_y, c, s, batch_count) + ccall((:rocblas_zrot_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, Ptr{Cdouble}, Ptr{rocblas_double_complex}, rocblas_int), handle, n, x, incx, stride_x, y, incy, stride_y, c, s, batch_count) +end + +function rocblas_zdrot_strided_batched(handle, n, x, incx, stride_x, y, incy, stride_y, c, s, batch_count) + ccall((:rocblas_zdrot_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, Ptr{Cdouble}, Ptr{Cdouble}, rocblas_int), handle, n, x, incx, stride_x, y, incy, stride_y, c, s, batch_count) +end + +function rocblas_srotg(handle, a, b, c, s) + ccall((:rocblas_srotg, librocblas_path), rocblas_status, (rocblas_handle, Ptr{Cfloat}, Ptr{Cfloat}, Ptr{Cfloat}, Ptr{Cfloat}), handle, a, b, c, s) +end + +function rocblas_drotg(handle, a, b, c, s) + ccall((:rocblas_drotg, librocblas_path), rocblas_status, (rocblas_handle, Ptr{Cdouble}, Ptr{Cdouble}, Ptr{Cdouble}, Ptr{Cdouble}), handle, a, b, c, s) +end + +function rocblas_crotg(handle, a, b, c, s) + ccall((:rocblas_crotg, librocblas_path), rocblas_status, (rocblas_handle, Ptr{rocblas_float_complex}, Ptr{rocblas_float_complex}, Ptr{Cfloat}, Ptr{rocblas_float_complex}), handle, a, b, c, s) +end + +function rocblas_zrotg(handle, a, b, c, s) + ccall((:rocblas_zrotg, librocblas_path), rocblas_status, (rocblas_handle, Ptr{rocblas_double_complex}, Ptr{rocblas_double_complex}, Ptr{Cdouble}, Ptr{rocblas_double_complex}), handle, a, b, c, s) +end + +function rocblas_srotg_batched(handle, a, b, c, s, batch_count) + ccall((:rocblas_srotg_batched, librocblas_path), rocblas_status, (rocblas_handle, Ptr{Ptr{Cfloat}}, Ptr{Ptr{Cfloat}}, Ptr{Ptr{Cfloat}}, Ptr{Ptr{Cfloat}}, rocblas_int), handle, a, b, c, s, batch_count) +end + +function rocblas_drotg_batched(handle, a, b, c, s, batch_count) + ccall((:rocblas_drotg_batched, librocblas_path), rocblas_status, (rocblas_handle, Ptr{Ptr{Cdouble}}, Ptr{Ptr{Cdouble}}, Ptr{Ptr{Cdouble}}, Ptr{Ptr{Cdouble}}, rocblas_int), handle, a, b, c, s, batch_count) +end + +function rocblas_crotg_batched(handle, a, b, c, s, batch_count) + ccall((:rocblas_crotg_batched, librocblas_path), rocblas_status, (rocblas_handle, Ptr{Ptr{rocblas_float_complex}}, Ptr{Ptr{rocblas_float_complex}}, Ptr{Ptr{Cfloat}}, Ptr{Ptr{rocblas_float_complex}}, rocblas_int), handle, a, b, c, s, batch_count) +end + +function rocblas_zrotg_batched(handle, a, b, c, s, batch_count) + ccall((:rocblas_zrotg_batched, librocblas_path), rocblas_status, (rocblas_handle, Ptr{Ptr{rocblas_double_complex}}, Ptr{Ptr{rocblas_double_complex}}, Ptr{Ptr{Cdouble}}, Ptr{Ptr{rocblas_double_complex}}, rocblas_int), handle, a, b, c, s, batch_count) +end + +function rocblas_srotg_strided_batched(handle, a, stride_a, b, stride_b, c, stride_c, s, stride_s, batch_count) + ccall((:rocblas_srotg_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, Ptr{Cfloat}, rocblas_stride, Ptr{Cfloat}, rocblas_stride, Ptr{Cfloat}, rocblas_stride, Ptr{Cfloat}, rocblas_stride, rocblas_int), handle, a, stride_a, b, stride_b, c, stride_c, s, stride_s, batch_count) +end + +function rocblas_drotg_strided_batched(handle, a, stride_a, b, stride_b, c, stride_c, s, stride_s, batch_count) + ccall((:rocblas_drotg_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, Ptr{Cdouble}, rocblas_stride, Ptr{Cdouble}, rocblas_stride, Ptr{Cdouble}, rocblas_stride, Ptr{Cdouble}, rocblas_stride, rocblas_int), handle, a, stride_a, b, stride_b, c, stride_c, s, stride_s, batch_count) +end + +function rocblas_crotg_strided_batched(handle, a, stride_a, b, stride_b, c, stride_c, s, stride_s, batch_count) + ccall((:rocblas_crotg_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, Ptr{rocblas_float_complex}, rocblas_stride, Ptr{rocblas_float_complex}, rocblas_stride, Ptr{Cfloat}, rocblas_stride, Ptr{rocblas_float_complex}, rocblas_stride, rocblas_int), handle, a, stride_a, b, stride_b, c, stride_c, s, stride_s, batch_count) +end + +function rocblas_zrotg_strided_batched(handle, a, stride_a, b, stride_b, c, stride_c, s, stride_s, batch_count) + ccall((:rocblas_zrotg_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, Ptr{rocblas_double_complex}, rocblas_stride, Ptr{rocblas_double_complex}, rocblas_stride, Ptr{Cdouble}, rocblas_stride, Ptr{rocblas_double_complex}, rocblas_stride, rocblas_int), handle, a, stride_a, b, stride_b, c, stride_c, s, stride_s, batch_count) +end + +function rocblas_srotm(handle, n, x, incx, y, incy, param) + ccall((:rocblas_srotm, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Cfloat}, rocblas_int, Ptr{Cfloat}, rocblas_int, Ptr{Cfloat}), handle, n, x, incx, y, incy, param) +end + +function rocblas_drotm(handle, n, x, incx, y, incy, param) + ccall((:rocblas_drotm, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Cdouble}, rocblas_int, Ptr{Cdouble}, rocblas_int, Ptr{Cdouble}), handle, n, x, incx, y, incy, param) +end + +function rocblas_srotm_batched(handle, n, x, incx, y, incy, param, batch_count) + ccall((:rocblas_srotm_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Ptr{Cfloat}}, rocblas_int, Ptr{Ptr{Cfloat}}, rocblas_int, Ptr{Ptr{Cfloat}}, rocblas_int), handle, n, x, incx, y, incy, param, batch_count) +end + +function rocblas_drotm_batched(handle, n, x, incx, y, incy, param, batch_count) + ccall((:rocblas_drotm_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Ptr{Cdouble}}, rocblas_int, Ptr{Ptr{Cdouble}}, rocblas_int, Ptr{Ptr{Cdouble}}, rocblas_int), handle, n, x, incx, y, incy, param, batch_count) +end + +function rocblas_srotm_strided_batched(handle, n, x, incx, stride_x, y, incy, stride_y, param, stride_param, batch_count) + ccall((:rocblas_srotm_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Cfloat}, rocblas_int, rocblas_stride, Ptr{Cfloat}, rocblas_int, rocblas_stride, Ptr{Cfloat}, rocblas_stride, rocblas_int), handle, n, x, incx, stride_x, y, incy, stride_y, param, stride_param, batch_count) +end + +function rocblas_drotm_strided_batched(handle, n, x, incx, stride_x, y, incy, stride_y, param, stride_param, batch_count) + ccall((:rocblas_drotm_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Cdouble}, rocblas_int, rocblas_stride, Ptr{Cdouble}, rocblas_int, rocblas_stride, Ptr{Cdouble}, rocblas_stride, rocblas_int), handle, n, x, incx, stride_x, y, incy, stride_y, param, stride_param, batch_count) +end + +function rocblas_srotmg(handle, d1, d2, x1, y1, param) + ccall((:rocblas_srotmg, librocblas_path), rocblas_status, (rocblas_handle, Ptr{Cfloat}, Ptr{Cfloat}, Ptr{Cfloat}, Ptr{Cfloat}, Ptr{Cfloat}), handle, d1, d2, x1, y1, param) +end + +function rocblas_drotmg(handle, d1, d2, x1, y1, param) + ccall((:rocblas_drotmg, librocblas_path), rocblas_status, (rocblas_handle, Ptr{Cdouble}, Ptr{Cdouble}, Ptr{Cdouble}, Ptr{Cdouble}, Ptr{Cdouble}), handle, d1, d2, x1, y1, param) +end + +function rocblas_srotmg_batched(handle, d1, d2, x1, y1, param, batch_count) + ccall((:rocblas_srotmg_batched, librocblas_path), rocblas_status, (rocblas_handle, Ptr{Ptr{Cfloat}}, Ptr{Ptr{Cfloat}}, Ptr{Ptr{Cfloat}}, Ptr{Ptr{Cfloat}}, Ptr{Ptr{Cfloat}}, rocblas_int), handle, d1, d2, x1, y1, param, batch_count) +end + +function rocblas_drotmg_batched(handle, d1, d2, x1, y1, param, batch_count) + ccall((:rocblas_drotmg_batched, librocblas_path), rocblas_status, (rocblas_handle, Ptr{Ptr{Cdouble}}, Ptr{Ptr{Cdouble}}, Ptr{Ptr{Cdouble}}, Ptr{Ptr{Cdouble}}, Ptr{Ptr{Cdouble}}, rocblas_int), handle, d1, d2, x1, y1, param, batch_count) +end + +function rocblas_srotmg_strided_batched(handle, d1, stride_d1, d2, stride_d2, x1, stride_x1, y1, stride_y1, param, stride_param, batch_count) + ccall((:rocblas_srotmg_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, Ptr{Cfloat}, rocblas_stride, Ptr{Cfloat}, rocblas_stride, Ptr{Cfloat}, rocblas_stride, Ptr{Cfloat}, rocblas_stride, Ptr{Cfloat}, rocblas_stride, rocblas_int), handle, d1, stride_d1, d2, stride_d2, x1, stride_x1, y1, stride_y1, param, stride_param, batch_count) +end + +function rocblas_drotmg_strided_batched(handle, d1, stride_d1, d2, stride_d2, x1, stride_x1, y1, stride_y1, param, stride_param, batch_count) + ccall((:rocblas_drotmg_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, Ptr{Cdouble}, rocblas_stride, Ptr{Cdouble}, rocblas_stride, Ptr{Cdouble}, rocblas_stride, Ptr{Cdouble}, rocblas_stride, Ptr{Cdouble}, rocblas_stride, rocblas_int), handle, d1, stride_d1, d2, stride_d2, x1, stride_x1, y1, stride_y1, param, stride_param, batch_count) +end + +function rocblas_sgbmv(handle, trans, m, n, kl, ku, alpha, A, lda, x, incx, beta, y, incy) + ccall((:rocblas_sgbmv, librocblas_path), rocblas_status, (rocblas_handle, rocblas_operation, rocblas_int, rocblas_int, rocblas_int, rocblas_int, Ptr{Cfloat}, Ptr{Cfloat}, rocblas_int, Ptr{Cfloat}, rocblas_int, Ptr{Cfloat}, Ptr{Cfloat}, rocblas_int), handle, trans, m, n, kl, ku, alpha, A, lda, x, incx, beta, y, incy) +end + +function rocblas_dgbmv(handle, trans, m, n, kl, ku, alpha, A, lda, x, incx, beta, y, incy) + ccall((:rocblas_dgbmv, librocblas_path), rocblas_status, (rocblas_handle, rocblas_operation, rocblas_int, rocblas_int, rocblas_int, rocblas_int, Ptr{Cdouble}, Ptr{Cdouble}, rocblas_int, Ptr{Cdouble}, rocblas_int, Ptr{Cdouble}, Ptr{Cdouble}, rocblas_int), handle, trans, m, n, kl, ku, alpha, A, lda, x, incx, beta, y, incy) +end + +function rocblas_cgbmv(handle, trans, m, n, kl, ku, alpha, A, lda, x, incx, beta, y, incy) + ccall((:rocblas_cgbmv, librocblas_path), rocblas_status, (rocblas_handle, rocblas_operation, rocblas_int, rocblas_int, rocblas_int, rocblas_int, Ptr{rocblas_float_complex}, Ptr{rocblas_float_complex}, rocblas_int, Ptr{rocblas_float_complex}, rocblas_int, Ptr{rocblas_float_complex}, Ptr{rocblas_float_complex}, rocblas_int), handle, trans, m, n, kl, ku, alpha, A, lda, x, incx, beta, y, incy) +end + +function rocblas_zgbmv(handle, trans, m, n, kl, ku, alpha, A, lda, x, incx, beta, y, incy) + ccall((:rocblas_zgbmv, librocblas_path), rocblas_status, (rocblas_handle, rocblas_operation, rocblas_int, rocblas_int, rocblas_int, rocblas_int, Ptr{rocblas_double_complex}, Ptr{rocblas_double_complex}, rocblas_int, Ptr{rocblas_double_complex}, rocblas_int, Ptr{rocblas_double_complex}, Ptr{rocblas_double_complex}, rocblas_int), handle, trans, m, n, kl, ku, alpha, A, lda, x, incx, beta, y, incy) +end + +function rocblas_sgbmv_batched(handle, trans, m, n, kl, ku, alpha, A, lda, x, incx, beta, y, incy, batch_count) + ccall((:rocblas_sgbmv_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_operation, rocblas_int, rocblas_int, rocblas_int, rocblas_int, Ptr{Cfloat}, Ptr{Ptr{Cfloat}}, rocblas_int, Ptr{Ptr{Cfloat}}, rocblas_int, Ptr{Cfloat}, Ptr{Ptr{Cfloat}}, rocblas_int, rocblas_int), handle, trans, m, n, kl, ku, alpha, A, lda, x, incx, beta, y, incy, batch_count) +end + +function rocblas_dgbmv_batched(handle, trans, m, n, kl, ku, alpha, A, lda, x, incx, beta, y, incy, batch_count) + ccall((:rocblas_dgbmv_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_operation, rocblas_int, rocblas_int, rocblas_int, rocblas_int, Ptr{Cdouble}, Ptr{Ptr{Cdouble}}, rocblas_int, Ptr{Ptr{Cdouble}}, rocblas_int, Ptr{Cdouble}, Ptr{Ptr{Cdouble}}, rocblas_int, rocblas_int), handle, trans, m, n, kl, ku, alpha, A, lda, x, incx, beta, y, incy, batch_count) +end + +function rocblas_cgbmv_batched(handle, trans, m, n, kl, ku, alpha, A, lda, x, incx, beta, y, incy, batch_count) + ccall((:rocblas_cgbmv_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_operation, rocblas_int, rocblas_int, rocblas_int, rocblas_int, Ptr{rocblas_float_complex}, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, Ptr{rocblas_float_complex}, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, rocblas_int), handle, trans, m, n, kl, ku, alpha, A, lda, x, incx, beta, y, incy, batch_count) +end + +function rocblas_zgbmv_batched(handle, trans, m, n, kl, ku, alpha, A, lda, x, incx, beta, y, incy, batch_count) + ccall((:rocblas_zgbmv_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_operation, rocblas_int, rocblas_int, rocblas_int, rocblas_int, Ptr{rocblas_double_complex}, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, Ptr{rocblas_double_complex}, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, rocblas_int), handle, trans, m, n, kl, ku, alpha, A, lda, x, incx, beta, y, incy, batch_count) +end + +function rocblas_sgbmv_strided_batched(handle, trans, m, n, kl, ku, alpha, A, lda, stride_A, x, incx, stride_x, beta, y, incy, stride_y, batch_count) + ccall((:rocblas_sgbmv_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_operation, rocblas_int, rocblas_int, rocblas_int, rocblas_int, Ptr{Cfloat}, Ptr{Cfloat}, rocblas_int, rocblas_stride, Ptr{Cfloat}, rocblas_int, rocblas_stride, Ptr{Cfloat}, Ptr{Cfloat}, rocblas_int, rocblas_stride, rocblas_int), handle, trans, m, n, kl, ku, alpha, A, lda, stride_A, x, incx, stride_x, beta, y, incy, stride_y, batch_count) +end + +function rocblas_dgbmv_strided_batched(handle, trans, m, n, kl, ku, alpha, A, lda, stride_A, x, incx, stride_x, beta, y, incy, stride_y, batch_count) + ccall((:rocblas_dgbmv_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_operation, rocblas_int, rocblas_int, rocblas_int, rocblas_int, Ptr{Cdouble}, Ptr{Cdouble}, rocblas_int, rocblas_stride, Ptr{Cdouble}, rocblas_int, rocblas_stride, Ptr{Cdouble}, Ptr{Cdouble}, rocblas_int, rocblas_stride, rocblas_int), handle, trans, m, n, kl, ku, alpha, A, lda, stride_A, x, incx, stride_x, beta, y, incy, stride_y, batch_count) +end + +function rocblas_cgbmv_strided_batched(handle, trans, m, n, kl, ku, alpha, A, lda, stride_A, x, incx, stride_x, beta, y, incy, stride_y, batch_count) + ccall((:rocblas_cgbmv_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_operation, rocblas_int, rocblas_int, rocblas_int, rocblas_int, Ptr{rocblas_float_complex}, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_float_complex}, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, rocblas_int), handle, trans, m, n, kl, ku, alpha, A, lda, stride_A, x, incx, stride_x, beta, y, incy, stride_y, batch_count) +end + +function rocblas_zgbmv_strided_batched(handle, trans, m, n, kl, ku, alpha, A, lda, stride_A, x, incx, stride_x, beta, y, incy, stride_y, batch_count) + ccall((:rocblas_zgbmv_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_operation, rocblas_int, rocblas_int, rocblas_int, rocblas_int, Ptr{rocblas_double_complex}, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_double_complex}, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, rocblas_int), handle, trans, m, n, kl, ku, alpha, A, lda, stride_A, x, incx, stride_x, beta, y, incy, stride_y, batch_count) +end + +function rocblas_sgemv(handle, trans, m, n, alpha, A, lda, x, incx, beta, y, incy) + ccall((:rocblas_sgemv, librocblas_path), rocblas_status, (rocblas_handle, rocblas_operation, rocblas_int, rocblas_int, Ptr{Cfloat}, Ptr{Cfloat}, rocblas_int, Ptr{Cfloat}, rocblas_int, Ptr{Cfloat}, Ptr{Cfloat}, rocblas_int), handle, trans, m, n, alpha, A, lda, x, incx, beta, y, incy) +end + +function rocblas_dgemv(handle, trans, m, n, alpha, A, lda, x, incx, beta, y, incy) + ccall((:rocblas_dgemv, librocblas_path), rocblas_status, (rocblas_handle, rocblas_operation, rocblas_int, rocblas_int, Ptr{Cdouble}, Ptr{Cdouble}, rocblas_int, Ptr{Cdouble}, rocblas_int, Ptr{Cdouble}, Ptr{Cdouble}, rocblas_int), handle, trans, m, n, alpha, A, lda, x, incx, beta, y, incy) +end + +function rocblas_cgemv(handle, trans, m, n, alpha, A, lda, x, incx, beta, y, incy) + ccall((:rocblas_cgemv, librocblas_path), rocblas_status, (rocblas_handle, rocblas_operation, rocblas_int, rocblas_int, Ptr{rocblas_float_complex}, Ptr{rocblas_float_complex}, rocblas_int, Ptr{rocblas_float_complex}, rocblas_int, Ptr{rocblas_float_complex}, Ptr{rocblas_float_complex}, rocblas_int), handle, trans, m, n, alpha, A, lda, x, incx, beta, y, incy) +end + +function rocblas_zgemv(handle, trans, m, n, alpha, A, lda, x, incx, beta, y, incy) + ccall((:rocblas_zgemv, librocblas_path), rocblas_status, (rocblas_handle, rocblas_operation, rocblas_int, rocblas_int, Ptr{rocblas_double_complex}, Ptr{rocblas_double_complex}, rocblas_int, Ptr{rocblas_double_complex}, rocblas_int, Ptr{rocblas_double_complex}, Ptr{rocblas_double_complex}, rocblas_int), handle, trans, m, n, alpha, A, lda, x, incx, beta, y, incy) +end + +function rocblas_sgemv_batched(handle, trans, m, n, alpha, A, lda, x, incx, beta, y, incy, batch_count) + ccall((:rocblas_sgemv_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_operation, rocblas_int, rocblas_int, Ptr{Cfloat}, Ptr{Ptr{Cfloat}}, rocblas_int, Ptr{Ptr{Cfloat}}, rocblas_int, Ptr{Cfloat}, Ptr{Ptr{Cfloat}}, rocblas_int, rocblas_int), handle, trans, m, n, alpha, A, lda, x, incx, beta, y, incy, batch_count) +end + +function rocblas_dgemv_batched(handle, trans, m, n, alpha, A, lda, x, incx, beta, y, incy, batch_count) + ccall((:rocblas_dgemv_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_operation, rocblas_int, rocblas_int, Ptr{Cdouble}, Ptr{Ptr{Cdouble}}, rocblas_int, Ptr{Ptr{Cdouble}}, rocblas_int, Ptr{Cdouble}, Ptr{Ptr{Cdouble}}, rocblas_int, rocblas_int), handle, trans, m, n, alpha, A, lda, x, incx, beta, y, incy, batch_count) +end + +function rocblas_cgemv_batched(handle, trans, m, n, alpha, A, lda, x, incx, beta, y, incy, batch_count) + ccall((:rocblas_cgemv_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_operation, rocblas_int, rocblas_int, Ptr{rocblas_float_complex}, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, Ptr{rocblas_float_complex}, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, rocblas_int), handle, trans, m, n, alpha, A, lda, x, incx, beta, y, incy, batch_count) +end + +function rocblas_zgemv_batched(handle, trans, m, n, alpha, A, lda, x, incx, beta, y, incy, batch_count) + ccall((:rocblas_zgemv_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_operation, rocblas_int, rocblas_int, Ptr{rocblas_double_complex}, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, Ptr{rocblas_double_complex}, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, rocblas_int), handle, trans, m, n, alpha, A, lda, x, incx, beta, y, incy, batch_count) +end + +function rocblas_sgemv_strided_batched(handle, transA, m, n, alpha, A, lda, strideA, x, incx, stridex, beta, y, incy, stridey, batch_count) + ccall((:rocblas_sgemv_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_operation, rocblas_int, rocblas_int, Ptr{Cfloat}, Ptr{Cfloat}, rocblas_int, rocblas_stride, Ptr{Cfloat}, rocblas_int, rocblas_stride, Ptr{Cfloat}, Ptr{Cfloat}, rocblas_int, rocblas_stride, rocblas_int), handle, transA, m, n, alpha, A, lda, strideA, x, incx, stridex, beta, y, incy, stridey, batch_count) +end + +function rocblas_dgemv_strided_batched(handle, transA, m, n, alpha, A, lda, strideA, x, incx, stridex, beta, y, incy, stridey, batch_count) + ccall((:rocblas_dgemv_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_operation, rocblas_int, rocblas_int, Ptr{Cdouble}, Ptr{Cdouble}, rocblas_int, rocblas_stride, Ptr{Cdouble}, rocblas_int, rocblas_stride, Ptr{Cdouble}, Ptr{Cdouble}, rocblas_int, rocblas_stride, rocblas_int), handle, transA, m, n, alpha, A, lda, strideA, x, incx, stridex, beta, y, incy, stridey, batch_count) +end + +function rocblas_cgemv_strided_batched(handle, transA, m, n, alpha, A, lda, strideA, x, incx, stridex, beta, y, incy, stridey, batch_count) + ccall((:rocblas_cgemv_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_operation, rocblas_int, rocblas_int, Ptr{rocblas_float_complex}, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_float_complex}, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, rocblas_int), handle, transA, m, n, alpha, A, lda, strideA, x, incx, stridex, beta, y, incy, stridey, batch_count) +end + +function rocblas_zgemv_strided_batched(handle, transA, m, n, alpha, A, lda, strideA, x, incx, stridex, beta, y, incy, stridey, batch_count) + ccall((:rocblas_zgemv_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_operation, rocblas_int, rocblas_int, Ptr{rocblas_double_complex}, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_double_complex}, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, rocblas_int), handle, transA, m, n, alpha, A, lda, strideA, x, incx, stridex, beta, y, incy, stridey, batch_count) +end + +function rocblas_chbmv(handle, uplo, n, k, alpha, A, lda, x, incx, beta, y, incy) + ccall((:rocblas_chbmv, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, rocblas_int, Ptr{rocblas_float_complex}, Ptr{rocblas_float_complex}, rocblas_int, Ptr{rocblas_float_complex}, rocblas_int, Ptr{rocblas_float_complex}, Ptr{rocblas_float_complex}, rocblas_int), handle, uplo, n, k, alpha, A, lda, x, incx, beta, y, incy) +end + +function rocblas_zhbmv(handle, uplo, n, k, alpha, A, lda, x, incx, beta, y, incy) + ccall((:rocblas_zhbmv, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, rocblas_int, Ptr{rocblas_double_complex}, Ptr{rocblas_double_complex}, rocblas_int, Ptr{rocblas_double_complex}, rocblas_int, Ptr{rocblas_double_complex}, Ptr{rocblas_double_complex}, rocblas_int), handle, uplo, n, k, alpha, A, lda, x, incx, beta, y, incy) +end + +function rocblas_chbmv_batched(handle, uplo, n, k, alpha, A, lda, x, incx, beta, y, incy, batch_count) + ccall((:rocblas_chbmv_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, rocblas_int, Ptr{rocblas_float_complex}, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, Ptr{rocblas_float_complex}, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, rocblas_int), handle, uplo, n, k, alpha, A, lda, x, incx, beta, y, incy, batch_count) +end + +function rocblas_zhbmv_batched(handle, uplo, n, k, alpha, A, lda, x, incx, beta, y, incy, batch_count) + ccall((:rocblas_zhbmv_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, rocblas_int, Ptr{rocblas_double_complex}, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, Ptr{rocblas_double_complex}, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, rocblas_int), handle, uplo, n, k, alpha, A, lda, x, incx, beta, y, incy, batch_count) +end + +function rocblas_chbmv_strided_batched(handle, uplo, n, k, alpha, A, lda, stride_A, x, incx, stride_x, beta, y, incy, stride_y, batch_count) + ccall((:rocblas_chbmv_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, rocblas_int, Ptr{rocblas_float_complex}, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_float_complex}, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, rocblas_int), handle, uplo, n, k, alpha, A, lda, stride_A, x, incx, stride_x, beta, y, incy, stride_y, batch_count) +end + +function rocblas_zhbmv_strided_batched(handle, uplo, n, k, alpha, A, lda, stride_A, x, incx, stride_x, beta, y, incy, stride_y, batch_count) + ccall((:rocblas_zhbmv_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, rocblas_int, Ptr{rocblas_double_complex}, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_double_complex}, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, rocblas_int), handle, uplo, n, k, alpha, A, lda, stride_A, x, incx, stride_x, beta, y, incy, stride_y, batch_count) +end + +function rocblas_chemv(handle, uplo, n, alpha, A, lda, x, incx, beta, y, incy) + ccall((:rocblas_chemv, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{rocblas_float_complex}, Ptr{rocblas_float_complex}, rocblas_int, Ptr{rocblas_float_complex}, rocblas_int, Ptr{rocblas_float_complex}, Ptr{rocblas_float_complex}, rocblas_int), handle, uplo, n, alpha, A, lda, x, incx, beta, y, incy) +end + +function rocblas_zhemv(handle, uplo, n, alpha, A, lda, x, incx, beta, y, incy) + ccall((:rocblas_zhemv, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{rocblas_double_complex}, Ptr{rocblas_double_complex}, rocblas_int, Ptr{rocblas_double_complex}, rocblas_int, Ptr{rocblas_double_complex}, Ptr{rocblas_double_complex}, rocblas_int), handle, uplo, n, alpha, A, lda, x, incx, beta, y, incy) +end + +function rocblas_chemv_batched(handle, uplo, n, alpha, A, lda, x, incx, beta, y, incy, batch_count) + ccall((:rocblas_chemv_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{rocblas_float_complex}, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, Ptr{rocblas_float_complex}, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, rocblas_int), handle, uplo, n, alpha, A, lda, x, incx, beta, y, incy, batch_count) +end + +function rocblas_zhemv_batched(handle, uplo, n, alpha, A, lda, x, incx, beta, y, incy, batch_count) + ccall((:rocblas_zhemv_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{rocblas_double_complex}, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, Ptr{rocblas_double_complex}, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, rocblas_int), handle, uplo, n, alpha, A, lda, x, incx, beta, y, incy, batch_count) +end + +function rocblas_chemv_strided_batched(handle, uplo, n, alpha, A, lda, stride_A, x, incx, stride_x, beta, y, incy, stride_y, batch_count) + ccall((:rocblas_chemv_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{rocblas_float_complex}, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_float_complex}, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, rocblas_int), handle, uplo, n, alpha, A, lda, stride_A, x, incx, stride_x, beta, y, incy, stride_y, batch_count) +end + +function rocblas_zhemv_strided_batched(handle, uplo, n, alpha, A, lda, stride_A, x, incx, stride_x, beta, y, incy, stride_y, batch_count) + ccall((:rocblas_zhemv_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{rocblas_double_complex}, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_double_complex}, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, rocblas_int), handle, uplo, n, alpha, A, lda, stride_A, x, incx, stride_x, beta, y, incy, stride_y, batch_count) +end + +function rocblas_cher(handle, uplo, n, alpha, x, incx, A, lda) + ccall((:rocblas_cher, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{Cfloat}, Ptr{rocblas_float_complex}, rocblas_int, Ptr{rocblas_float_complex}, rocblas_int), handle, uplo, n, alpha, x, incx, A, lda) +end + +function rocblas_zher(handle, uplo, n, alpha, x, incx, A, lda) + ccall((:rocblas_zher, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{Cdouble}, Ptr{rocblas_double_complex}, rocblas_int, Ptr{rocblas_double_complex}, rocblas_int), handle, uplo, n, alpha, x, incx, A, lda) +end + +function rocblas_cher_batched(handle, uplo, n, alpha, x, incx, A, lda, batch_count) + ccall((:rocblas_cher_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{Cfloat}, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, rocblas_int), handle, uplo, n, alpha, x, incx, A, lda, batch_count) +end + +function rocblas_zher_batched(handle, uplo, n, alpha, x, incx, A, lda, batch_count) + ccall((:rocblas_zher_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{Cdouble}, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, rocblas_int), handle, uplo, n, alpha, x, incx, A, lda, batch_count) +end + +function rocblas_cher_strided_batched(handle, uplo, n, alpha, x, incx, stride_x, A, lda, stride_A, batch_count) + ccall((:rocblas_cher_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{Cfloat}, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, rocblas_int), handle, uplo, n, alpha, x, incx, stride_x, A, lda, stride_A, batch_count) +end + +function rocblas_zher_strided_batched(handle, uplo, n, alpha, x, incx, stride_x, A, lda, stride_A, batch_count) + ccall((:rocblas_zher_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{Cdouble}, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, rocblas_int), handle, uplo, n, alpha, x, incx, stride_x, A, lda, stride_A, batch_count) +end + +function rocblas_cher2(handle, uplo, n, alpha, x, incx, y, incy, A, lda) + ccall((:rocblas_cher2, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{rocblas_float_complex}, Ptr{rocblas_float_complex}, rocblas_int, Ptr{rocblas_float_complex}, rocblas_int, Ptr{rocblas_float_complex}, rocblas_int), handle, uplo, n, alpha, x, incx, y, incy, A, lda) +end + +function rocblas_zher2(handle, uplo, n, alpha, x, incx, y, incy, A, lda) + ccall((:rocblas_zher2, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{rocblas_double_complex}, Ptr{rocblas_double_complex}, rocblas_int, Ptr{rocblas_double_complex}, rocblas_int, Ptr{rocblas_double_complex}, rocblas_int), handle, uplo, n, alpha, x, incx, y, incy, A, lda) +end + +function rocblas_cher2_batched(handle, uplo, n, alpha, x, incx, y, incy, A, lda, batch_count) + ccall((:rocblas_cher2_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{rocblas_float_complex}, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, rocblas_int), handle, uplo, n, alpha, x, incx, y, incy, A, lda, batch_count) +end + +function rocblas_zher2_batched(handle, uplo, n, alpha, x, incx, y, incy, A, lda, batch_count) + ccall((:rocblas_zher2_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{rocblas_double_complex}, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, rocblas_int), handle, uplo, n, alpha, x, incx, y, incy, A, lda, batch_count) +end + +function rocblas_cher2_strided_batched(handle, uplo, n, alpha, x, incx, stride_x, y, incy, stride_y, A, lda, stride_A, batch_count) + ccall((:rocblas_cher2_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{rocblas_float_complex}, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, rocblas_int), handle, uplo, n, alpha, x, incx, stride_x, y, incy, stride_y, A, lda, stride_A, batch_count) +end + +function rocblas_zher2_strided_batched(handle, uplo, n, alpha, x, incx, stride_x, y, incy, stride_y, A, lda, stride_A, batch_count) + ccall((:rocblas_zher2_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{rocblas_double_complex}, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, rocblas_int), handle, uplo, n, alpha, x, incx, stride_x, y, incy, stride_y, A, lda, stride_A, batch_count) +end + +function rocblas_chpmv(handle, uplo, n, alpha, AP, x, incx, beta, y, incy) + ccall((:rocblas_chpmv, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{rocblas_float_complex}, Ptr{rocblas_float_complex}, Ptr{rocblas_float_complex}, rocblas_int, Ptr{rocblas_float_complex}, Ptr{rocblas_float_complex}, rocblas_int), handle, uplo, n, alpha, AP, x, incx, beta, y, incy) +end + +function rocblas_zhpmv(handle, uplo, n, alpha, AP, x, incx, beta, y, incy) + ccall((:rocblas_zhpmv, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{rocblas_double_complex}, Ptr{rocblas_double_complex}, Ptr{rocblas_double_complex}, rocblas_int, Ptr{rocblas_double_complex}, Ptr{rocblas_double_complex}, rocblas_int), handle, uplo, n, alpha, AP, x, incx, beta, y, incy) +end + +function rocblas_chpmv_batched(handle, uplo, n, alpha, AP, x, incx, beta, y, incy, batch_count) + ccall((:rocblas_chpmv_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{rocblas_float_complex}, Ptr{Ptr{rocblas_float_complex}}, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, Ptr{rocblas_float_complex}, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, rocblas_int), handle, uplo, n, alpha, AP, x, incx, beta, y, incy, batch_count) +end + +function rocblas_zhpmv_batched(handle, uplo, n, alpha, AP, x, incx, beta, y, incy, batch_count) + ccall((:rocblas_zhpmv_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{rocblas_double_complex}, Ptr{Ptr{rocblas_double_complex}}, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, Ptr{rocblas_double_complex}, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, rocblas_int), handle, uplo, n, alpha, AP, x, incx, beta, y, incy, batch_count) +end + +function rocblas_chpmv_strided_batched(handle, uplo, n, alpha, AP, stride_A, x, incx, stride_x, beta, y, incy, stride_y, batch_count) + ccall((:rocblas_chpmv_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{rocblas_float_complex}, Ptr{rocblas_float_complex}, rocblas_stride, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_float_complex}, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, rocblas_int), handle, uplo, n, alpha, AP, stride_A, x, incx, stride_x, beta, y, incy, stride_y, batch_count) +end + +function rocblas_zhpmv_strided_batched(handle, uplo, n, alpha, AP, stride_A, x, incx, stride_x, beta, y, incy, stride_y, batch_count) + ccall((:rocblas_zhpmv_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{rocblas_double_complex}, Ptr{rocblas_double_complex}, rocblas_stride, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_double_complex}, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, rocblas_int), handle, uplo, n, alpha, AP, stride_A, x, incx, stride_x, beta, y, incy, stride_y, batch_count) +end + +function rocblas_chpr(handle, uplo, n, alpha, x, incx, AP) + ccall((:rocblas_chpr, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{Cfloat}, Ptr{rocblas_float_complex}, rocblas_int, Ptr{rocblas_float_complex}), handle, uplo, n, alpha, x, incx, AP) +end + +function rocblas_zhpr(handle, uplo, n, alpha, x, incx, AP) + ccall((:rocblas_zhpr, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{Cdouble}, Ptr{rocblas_double_complex}, rocblas_int, Ptr{rocblas_double_complex}), handle, uplo, n, alpha, x, incx, AP) +end + +function rocblas_chpr_batched(handle, uplo, n, alpha, x, incx, AP, batch_count) + ccall((:rocblas_chpr_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{Cfloat}, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, Ptr{Ptr{rocblas_float_complex}}, rocblas_int), handle, uplo, n, alpha, x, incx, AP, batch_count) +end + +function rocblas_zhpr_batched(handle, uplo, n, alpha, x, incx, AP, batch_count) + ccall((:rocblas_zhpr_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{Cdouble}, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, Ptr{Ptr{rocblas_double_complex}}, rocblas_int), handle, uplo, n, alpha, x, incx, AP, batch_count) +end + +function rocblas_chpr_strided_batched(handle, uplo, n, alpha, x, incx, stride_x, AP, stride_A, batch_count) + ccall((:rocblas_chpr_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{Cfloat}, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_float_complex}, rocblas_stride, rocblas_int), handle, uplo, n, alpha, x, incx, stride_x, AP, stride_A, batch_count) +end + +function rocblas_zhpr_strided_batched(handle, uplo, n, alpha, x, incx, stride_x, AP, stride_A, batch_count) + ccall((:rocblas_zhpr_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{Cdouble}, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_double_complex}, rocblas_stride, rocblas_int), handle, uplo, n, alpha, x, incx, stride_x, AP, stride_A, batch_count) +end + +function rocblas_chpr2(handle, uplo, n, alpha, x, incx, y, incy, AP) + ccall((:rocblas_chpr2, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{rocblas_float_complex}, Ptr{rocblas_float_complex}, rocblas_int, Ptr{rocblas_float_complex}, rocblas_int, Ptr{rocblas_float_complex}), handle, uplo, n, alpha, x, incx, y, incy, AP) +end + +function rocblas_zhpr2(handle, uplo, n, alpha, x, incx, y, incy, AP) + ccall((:rocblas_zhpr2, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{rocblas_double_complex}, Ptr{rocblas_double_complex}, rocblas_int, Ptr{rocblas_double_complex}, rocblas_int, Ptr{rocblas_double_complex}), handle, uplo, n, alpha, x, incx, y, incy, AP) +end + +function rocblas_chpr2_batched(handle, uplo, n, alpha, x, incx, y, incy, AP, batch_count) + ccall((:rocblas_chpr2_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{rocblas_float_complex}, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, Ptr{Ptr{rocblas_float_complex}}, rocblas_int), handle, uplo, n, alpha, x, incx, y, incy, AP, batch_count) +end + +function rocblas_zhpr2_batched(handle, uplo, n, alpha, x, incx, y, incy, AP, batch_count) + ccall((:rocblas_zhpr2_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{rocblas_double_complex}, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, Ptr{Ptr{rocblas_double_complex}}, rocblas_int), handle, uplo, n, alpha, x, incx, y, incy, AP, batch_count) +end + +function rocblas_chpr2_strided_batched(handle, uplo, n, alpha, x, incx, stride_x, y, incy, stride_y, AP, stride_A, batch_count) + ccall((:rocblas_chpr2_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{rocblas_float_complex}, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_float_complex}, rocblas_stride, rocblas_int), handle, uplo, n, alpha, x, incx, stride_x, y, incy, stride_y, AP, stride_A, batch_count) +end + +function rocblas_zhpr2_strided_batched(handle, uplo, n, alpha, x, incx, stride_x, y, incy, stride_y, AP, stride_A, batch_count) + ccall((:rocblas_zhpr2_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{rocblas_double_complex}, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_double_complex}, rocblas_stride, rocblas_int), handle, uplo, n, alpha, x, incx, stride_x, y, incy, stride_y, AP, stride_A, batch_count) +end + +function rocblas_strmv(handle, uplo, transA, diag, m, A, lda, x, incx) + ccall((:rocblas_strmv, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, Ptr{Cfloat}, rocblas_int, Ptr{Cfloat}, rocblas_int), handle, uplo, transA, diag, m, A, lda, x, incx) +end + +function rocblas_dtrmv(handle, uplo, transA, diag, m, A, lda, x, incx) + ccall((:rocblas_dtrmv, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, Ptr{Cdouble}, rocblas_int, Ptr{Cdouble}, rocblas_int), handle, uplo, transA, diag, m, A, lda, x, incx) +end + +function rocblas_ctrmv(handle, uplo, transA, diag, m, A, lda, x, incx) + ccall((:rocblas_ctrmv, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, Ptr{rocblas_float_complex}, rocblas_int, Ptr{rocblas_float_complex}, rocblas_int), handle, uplo, transA, diag, m, A, lda, x, incx) +end + +function rocblas_ztrmv(handle, uplo, transA, diag, m, A, lda, x, incx) + ccall((:rocblas_ztrmv, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, Ptr{rocblas_double_complex}, rocblas_int, Ptr{rocblas_double_complex}, rocblas_int), handle, uplo, transA, diag, m, A, lda, x, incx) +end + +function rocblas_strmv_batched(handle, uplo, transA, diag, m, A, lda, x, incx, batch_count) + ccall((:rocblas_strmv_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, Ptr{Ptr{Cfloat}}, rocblas_int, Ptr{Ptr{Cfloat}}, rocblas_int, rocblas_int), handle, uplo, transA, diag, m, A, lda, x, incx, batch_count) +end + +function rocblas_dtrmv_batched(handle, uplo, transA, diag, m, A, lda, x, incx, batch_count) + ccall((:rocblas_dtrmv_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, Ptr{Ptr{Cdouble}}, rocblas_int, Ptr{Ptr{Cdouble}}, rocblas_int, rocblas_int), handle, uplo, transA, diag, m, A, lda, x, incx, batch_count) +end + +function rocblas_ctrmv_batched(handle, uplo, transA, diag, m, A, lda, x, incx, batch_count) + ccall((:rocblas_ctrmv_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, rocblas_int), handle, uplo, transA, diag, m, A, lda, x, incx, batch_count) +end + +function rocblas_ztrmv_batched(handle, uplo, transA, diag, m, A, lda, x, incx, batch_count) + ccall((:rocblas_ztrmv_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, rocblas_int), handle, uplo, transA, diag, m, A, lda, x, incx, batch_count) +end + +function rocblas_strmv_strided_batched(handle, uplo, transA, diag, m, A, lda, stride_A, x, incx, stride_x, batch_count) + ccall((:rocblas_strmv_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, Ptr{Cfloat}, rocblas_int, rocblas_stride, Ptr{Cfloat}, rocblas_int, rocblas_stride, rocblas_int), handle, uplo, transA, diag, m, A, lda, stride_A, x, incx, stride_x, batch_count) +end + +function rocblas_dtrmv_strided_batched(handle, uplo, transA, diag, m, A, lda, stride_A, x, incx, stride_x, batch_count) + ccall((:rocblas_dtrmv_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, Ptr{Cdouble}, rocblas_int, rocblas_stride, Ptr{Cdouble}, rocblas_int, rocblas_stride, rocblas_int), handle, uplo, transA, diag, m, A, lda, stride_A, x, incx, stride_x, batch_count) +end + +function rocblas_ctrmv_strided_batched(handle, uplo, transA, diag, m, A, lda, stride_A, x, incx, stride_x, batch_count) + ccall((:rocblas_ctrmv_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, rocblas_int), handle, uplo, transA, diag, m, A, lda, stride_A, x, incx, stride_x, batch_count) +end + +function rocblas_ztrmv_strided_batched(handle, uplo, transA, diag, m, A, lda, stride_A, x, incx, stride_x, batch_count) + ccall((:rocblas_ztrmv_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, rocblas_int), handle, uplo, transA, diag, m, A, lda, stride_A, x, incx, stride_x, batch_count) +end + +function rocblas_stpmv(handle, uplo, transA, diag, m, A, x, incx) + ccall((:rocblas_stpmv, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, Ptr{Cfloat}, Ptr{Cfloat}, rocblas_int), handle, uplo, transA, diag, m, A, x, incx) +end + +function rocblas_dtpmv(handle, uplo, transA, diag, m, A, x, incx) + ccall((:rocblas_dtpmv, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, Ptr{Cdouble}, Ptr{Cdouble}, rocblas_int), handle, uplo, transA, diag, m, A, x, incx) +end + +function rocblas_ctpmv(handle, uplo, transA, diag, m, A, x, incx) + ccall((:rocblas_ctpmv, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, Ptr{rocblas_float_complex}, Ptr{rocblas_float_complex}, rocblas_int), handle, uplo, transA, diag, m, A, x, incx) +end + +function rocblas_ztpmv(handle, uplo, transA, diag, m, A, x, incx) + ccall((:rocblas_ztpmv, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, Ptr{rocblas_double_complex}, Ptr{rocblas_double_complex}, rocblas_int), handle, uplo, transA, diag, m, A, x, incx) +end + +function rocblas_stpmv_batched(handle, uplo, transA, diag, m, A, x, incx, batch_count) + ccall((:rocblas_stpmv_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, Ptr{Ptr{Cfloat}}, Ptr{Ptr{Cfloat}}, rocblas_int, rocblas_int), handle, uplo, transA, diag, m, A, x, incx, batch_count) +end + +function rocblas_dtpmv_batched(handle, uplo, transA, diag, m, A, x, incx, batch_count) + ccall((:rocblas_dtpmv_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, Ptr{Ptr{Cdouble}}, Ptr{Ptr{Cdouble}}, rocblas_int, rocblas_int), handle, uplo, transA, diag, m, A, x, incx, batch_count) +end + +function rocblas_ctpmv_batched(handle, uplo, transA, diag, m, A, x, incx, batch_count) + ccall((:rocblas_ctpmv_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, Ptr{Ptr{rocblas_float_complex}}, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, rocblas_int), handle, uplo, transA, diag, m, A, x, incx, batch_count) +end + +function rocblas_ztpmv_batched(handle, uplo, transA, diag, m, A, x, incx, batch_count) + ccall((:rocblas_ztpmv_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, Ptr{Ptr{rocblas_double_complex}}, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, rocblas_int), handle, uplo, transA, diag, m, A, x, incx, batch_count) +end + +function rocblas_stpmv_strided_batched(handle, uplo, transA, diag, m, A, stride_A, x, incx, stride_x, batch_count) + ccall((:rocblas_stpmv_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, Ptr{Cfloat}, rocblas_stride, Ptr{Cfloat}, rocblas_int, rocblas_stride, rocblas_int), handle, uplo, transA, diag, m, A, stride_A, x, incx, stride_x, batch_count) +end + +function rocblas_dtpmv_strided_batched(handle, uplo, transA, diag, m, A, stride_A, x, incx, stride_x, batch_count) + ccall((:rocblas_dtpmv_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, Ptr{Cdouble}, rocblas_stride, Ptr{Cdouble}, rocblas_int, rocblas_stride, rocblas_int), handle, uplo, transA, diag, m, A, stride_A, x, incx, stride_x, batch_count) +end + +function rocblas_ctpmv_strided_batched(handle, uplo, transA, diag, m, A, stride_A, x, incx, stride_x, batch_count) + ccall((:rocblas_ctpmv_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, Ptr{rocblas_float_complex}, rocblas_stride, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, rocblas_int), handle, uplo, transA, diag, m, A, stride_A, x, incx, stride_x, batch_count) +end + +function rocblas_ztpmv_strided_batched(handle, uplo, transA, diag, m, A, stride_A, x, incx, stride_x, batch_count) + ccall((:rocblas_ztpmv_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, Ptr{rocblas_double_complex}, rocblas_stride, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, rocblas_int), handle, uplo, transA, diag, m, A, stride_A, x, incx, stride_x, batch_count) +end + +function rocblas_stbmv(handle, uplo, trans, diag, m, k, A, lda, x, incx) + ccall((:rocblas_stbmv, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, rocblas_int, Ptr{Cfloat}, rocblas_int, Ptr{Cfloat}, rocblas_int), handle, uplo, trans, diag, m, k, A, lda, x, incx) +end + +function rocblas_dtbmv(handle, uplo, trans, diag, m, k, A, lda, x, incx) + ccall((:rocblas_dtbmv, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, rocblas_int, Ptr{Cdouble}, rocblas_int, Ptr{Cdouble}, rocblas_int), handle, uplo, trans, diag, m, k, A, lda, x, incx) +end + +function rocblas_ctbmv(handle, uplo, trans, diag, m, k, A, lda, x, incx) + ccall((:rocblas_ctbmv, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, rocblas_int, Ptr{rocblas_float_complex}, rocblas_int, Ptr{rocblas_float_complex}, rocblas_int), handle, uplo, trans, diag, m, k, A, lda, x, incx) +end + +function rocblas_ztbmv(handle, uplo, trans, diag, m, k, A, lda, x, incx) + ccall((:rocblas_ztbmv, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, rocblas_int, Ptr{rocblas_double_complex}, rocblas_int, Ptr{rocblas_double_complex}, rocblas_int), handle, uplo, trans, diag, m, k, A, lda, x, incx) +end + +function rocblas_stbmv_batched(handle, uplo, trans, diag, m, k, A, lda, x, incx, batch_count) + ccall((:rocblas_stbmv_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, rocblas_int, Ptr{Ptr{Cfloat}}, rocblas_int, Ptr{Ptr{Cfloat}}, rocblas_int, rocblas_int), handle, uplo, trans, diag, m, k, A, lda, x, incx, batch_count) +end + +function rocblas_dtbmv_batched(handle, uplo, trans, diag, m, k, A, lda, x, incx, batch_count) + ccall((:rocblas_dtbmv_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, rocblas_int, Ptr{Ptr{Cdouble}}, rocblas_int, Ptr{Ptr{Cdouble}}, rocblas_int, rocblas_int), handle, uplo, trans, diag, m, k, A, lda, x, incx, batch_count) +end + +function rocblas_ctbmv_batched(handle, uplo, trans, diag, m, k, A, lda, x, incx, batch_count) + ccall((:rocblas_ctbmv_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, rocblas_int, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, rocblas_int), handle, uplo, trans, diag, m, k, A, lda, x, incx, batch_count) +end + +function rocblas_ztbmv_batched(handle, uplo, trans, diag, m, k, A, lda, x, incx, batch_count) + ccall((:rocblas_ztbmv_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, rocblas_int, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, rocblas_int), handle, uplo, trans, diag, m, k, A, lda, x, incx, batch_count) +end + +function rocblas_stbmv_strided_batched(handle, uplo, trans, diag, m, k, A, lda, stride_A, x, incx, stride_x, batch_count) + ccall((:rocblas_stbmv_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, rocblas_int, Ptr{Cfloat}, rocblas_int, rocblas_stride, Ptr{Cfloat}, rocblas_int, rocblas_stride, rocblas_int), handle, uplo, trans, diag, m, k, A, lda, stride_A, x, incx, stride_x, batch_count) +end + +function rocblas_dtbmv_strided_batched(handle, uplo, trans, diag, m, k, A, lda, stride_A, x, incx, stride_x, batch_count) + ccall((:rocblas_dtbmv_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, rocblas_int, Ptr{Cdouble}, rocblas_int, rocblas_stride, Ptr{Cdouble}, rocblas_int, rocblas_stride, rocblas_int), handle, uplo, trans, diag, m, k, A, lda, stride_A, x, incx, stride_x, batch_count) +end + +function rocblas_ctbmv_strided_batched(handle, uplo, trans, diag, m, k, A, lda, stride_A, x, incx, stride_x, batch_count) + ccall((:rocblas_ctbmv_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, rocblas_int, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, rocblas_int), handle, uplo, trans, diag, m, k, A, lda, stride_A, x, incx, stride_x, batch_count) +end + +function rocblas_ztbmv_strided_batched(handle, uplo, trans, diag, m, k, A, lda, stride_A, x, incx, stride_x, batch_count) + ccall((:rocblas_ztbmv_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, rocblas_int, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, rocblas_int), handle, uplo, trans, diag, m, k, A, lda, stride_A, x, incx, stride_x, batch_count) +end + +function rocblas_stbsv(handle, uplo, transA, diag, n, k, A, lda, x, incx) + ccall((:rocblas_stbsv, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, rocblas_int, Ptr{Cfloat}, rocblas_int, Ptr{Cfloat}, rocblas_int), handle, uplo, transA, diag, n, k, A, lda, x, incx) +end + +function rocblas_dtbsv(handle, uplo, transA, diag, n, k, A, lda, x, incx) + ccall((:rocblas_dtbsv, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, rocblas_int, Ptr{Cdouble}, rocblas_int, Ptr{Cdouble}, rocblas_int), handle, uplo, transA, diag, n, k, A, lda, x, incx) +end + +function rocblas_ctbsv(handle, uplo, transA, diag, n, k, A, lda, x, incx) + ccall((:rocblas_ctbsv, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, rocblas_int, Ptr{rocblas_float_complex}, rocblas_int, Ptr{rocblas_float_complex}, rocblas_int), handle, uplo, transA, diag, n, k, A, lda, x, incx) +end + +function rocblas_ztbsv(handle, uplo, transA, diag, n, k, A, lda, x, incx) + ccall((:rocblas_ztbsv, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, rocblas_int, Ptr{rocblas_double_complex}, rocblas_int, Ptr{rocblas_double_complex}, rocblas_int), handle, uplo, transA, diag, n, k, A, lda, x, incx) +end + +function rocblas_stbsv_batched(handle, uplo, transA, diag, n, k, A, lda, x, incx, batch_count) + ccall((:rocblas_stbsv_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, rocblas_int, Ptr{Ptr{Cfloat}}, rocblas_int, Ptr{Ptr{Cfloat}}, rocblas_int, rocblas_int), handle, uplo, transA, diag, n, k, A, lda, x, incx, batch_count) +end + +function rocblas_dtbsv_batched(handle, uplo, transA, diag, n, k, A, lda, x, incx, batch_count) + ccall((:rocblas_dtbsv_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, rocblas_int, Ptr{Ptr{Cdouble}}, rocblas_int, Ptr{Ptr{Cdouble}}, rocblas_int, rocblas_int), handle, uplo, transA, diag, n, k, A, lda, x, incx, batch_count) +end + +function rocblas_ctbsv_batched(handle, uplo, transA, diag, n, k, A, lda, x, incx, batch_count) + ccall((:rocblas_ctbsv_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, rocblas_int, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, rocblas_int), handle, uplo, transA, diag, n, k, A, lda, x, incx, batch_count) +end + +function rocblas_ztbsv_batched(handle, uplo, transA, diag, n, k, A, lda, x, incx, batch_count) + ccall((:rocblas_ztbsv_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, rocblas_int, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, rocblas_int), handle, uplo, transA, diag, n, k, A, lda, x, incx, batch_count) +end + +function rocblas_stbsv_strided_batched(handle, uplo, transA, diag, n, k, A, lda, stride_A, x, incx, stride_x, batch_count) + ccall((:rocblas_stbsv_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, rocblas_int, Ptr{Cfloat}, rocblas_int, rocblas_stride, Ptr{Cfloat}, rocblas_int, rocblas_stride, rocblas_int), handle, uplo, transA, diag, n, k, A, lda, stride_A, x, incx, stride_x, batch_count) +end + +function rocblas_dtbsv_strided_batched(handle, uplo, transA, diag, n, k, A, lda, stride_A, x, incx, stride_x, batch_count) + ccall((:rocblas_dtbsv_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, rocblas_int, Ptr{Cdouble}, rocblas_int, rocblas_stride, Ptr{Cdouble}, rocblas_int, rocblas_stride, rocblas_int), handle, uplo, transA, diag, n, k, A, lda, stride_A, x, incx, stride_x, batch_count) +end + +function rocblas_ctbsv_strided_batched(handle, uplo, transA, diag, n, k, A, lda, stride_A, x, incx, stride_x, batch_count) + ccall((:rocblas_ctbsv_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, rocblas_int, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, rocblas_int), handle, uplo, transA, diag, n, k, A, lda, stride_A, x, incx, stride_x, batch_count) +end + +function rocblas_ztbsv_strided_batched(handle, uplo, transA, diag, n, k, A, lda, stride_A, x, incx, stride_x, batch_count) + ccall((:rocblas_ztbsv_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, rocblas_int, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, rocblas_int), handle, uplo, transA, diag, n, k, A, lda, stride_A, x, incx, stride_x, batch_count) +end + +function rocblas_strsv(handle, uplo, transA, diag, m, A, lda, x, incx) + ccall((:rocblas_strsv, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, Ptr{Cfloat}, rocblas_int, Ptr{Cfloat}, rocblas_int), handle, uplo, transA, diag, m, A, lda, x, incx) +end + +function rocblas_dtrsv(handle, uplo, transA, diag, m, A, lda, x, incx) + ccall((:rocblas_dtrsv, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, Ptr{Cdouble}, rocblas_int, Ptr{Cdouble}, rocblas_int), handle, uplo, transA, diag, m, A, lda, x, incx) +end + +function rocblas_ctrsv(handle, uplo, transA, diag, m, A, lda, x, incx) + ccall((:rocblas_ctrsv, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, Ptr{rocblas_float_complex}, rocblas_int, Ptr{rocblas_float_complex}, rocblas_int), handle, uplo, transA, diag, m, A, lda, x, incx) +end + +function rocblas_ztrsv(handle, uplo, transA, diag, m, A, lda, x, incx) + ccall((:rocblas_ztrsv, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, Ptr{rocblas_double_complex}, rocblas_int, Ptr{rocblas_double_complex}, rocblas_int), handle, uplo, transA, diag, m, A, lda, x, incx) +end + +function rocblas_strsv_batched(handle, uplo, transA, diag, m, A, lda, x, incx, batch_count) + ccall((:rocblas_strsv_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, Ptr{Ptr{Cfloat}}, rocblas_int, Ptr{Ptr{Cfloat}}, rocblas_int, rocblas_int), handle, uplo, transA, diag, m, A, lda, x, incx, batch_count) +end + +function rocblas_dtrsv_batched(handle, uplo, transA, diag, m, A, lda, x, incx, batch_count) + ccall((:rocblas_dtrsv_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, Ptr{Ptr{Cdouble}}, rocblas_int, Ptr{Ptr{Cdouble}}, rocblas_int, rocblas_int), handle, uplo, transA, diag, m, A, lda, x, incx, batch_count) +end + +function rocblas_ctrsv_batched(handle, uplo, transA, diag, m, A, lda, x, incx, batch_count) + ccall((:rocblas_ctrsv_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, rocblas_int), handle, uplo, transA, diag, m, A, lda, x, incx, batch_count) +end + +function rocblas_ztrsv_batched(handle, uplo, transA, diag, m, A, lda, x, incx, batch_count) + ccall((:rocblas_ztrsv_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, rocblas_int), handle, uplo, transA, diag, m, A, lda, x, incx, batch_count) +end + +function rocblas_strsv_strided_batched(handle, uplo, transA, diag, m, A, lda, stride_A, x, incx, stride_x, batch_count) + ccall((:rocblas_strsv_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, Ptr{Cfloat}, rocblas_int, rocblas_stride, Ptr{Cfloat}, rocblas_int, rocblas_stride, rocblas_int), handle, uplo, transA, diag, m, A, lda, stride_A, x, incx, stride_x, batch_count) +end + +function rocblas_dtrsv_strided_batched(handle, uplo, transA, diag, m, A, lda, stride_A, x, incx, stride_x, batch_count) + ccall((:rocblas_dtrsv_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, Ptr{Cdouble}, rocblas_int, rocblas_stride, Ptr{Cdouble}, rocblas_int, rocblas_stride, rocblas_int), handle, uplo, transA, diag, m, A, lda, stride_A, x, incx, stride_x, batch_count) +end + +function rocblas_ctrsv_strided_batched(handle, uplo, transA, diag, m, A, lda, stride_A, x, incx, stride_x, batch_count) + ccall((:rocblas_ctrsv_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, rocblas_int), handle, uplo, transA, diag, m, A, lda, stride_A, x, incx, stride_x, batch_count) +end + +function rocblas_ztrsv_strided_batched(handle, uplo, transA, diag, m, A, lda, stride_A, x, incx, stride_x, batch_count) + ccall((:rocblas_ztrsv_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, rocblas_int), handle, uplo, transA, diag, m, A, lda, stride_A, x, incx, stride_x, batch_count) +end + +function rocblas_stpsv(handle, uplo, transA, diag, n, AP, x, incx) + ccall((:rocblas_stpsv, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, Ptr{Cfloat}, Ptr{Cfloat}, rocblas_int), handle, uplo, transA, diag, n, AP, x, incx) +end + +function rocblas_dtpsv(handle, uplo, transA, diag, n, AP, x, incx) + ccall((:rocblas_dtpsv, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, Ptr{Cdouble}, Ptr{Cdouble}, rocblas_int), handle, uplo, transA, diag, n, AP, x, incx) +end + +function rocblas_ctpsv(handle, uplo, transA, diag, n, AP, x, incx) + ccall((:rocblas_ctpsv, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, Ptr{rocblas_float_complex}, Ptr{rocblas_float_complex}, rocblas_int), handle, uplo, transA, diag, n, AP, x, incx) +end + +function rocblas_ztpsv(handle, uplo, transA, diag, n, AP, x, incx) + ccall((:rocblas_ztpsv, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, Ptr{rocblas_double_complex}, Ptr{rocblas_double_complex}, rocblas_int), handle, uplo, transA, diag, n, AP, x, incx) +end + +function rocblas_stpsv_batched(handle, uplo, transA, diag, n, AP, x, incx, batch_count) + ccall((:rocblas_stpsv_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, Ptr{Ptr{Cfloat}}, Ptr{Ptr{Cfloat}}, rocblas_int, rocblas_int), handle, uplo, transA, diag, n, AP, x, incx, batch_count) +end + +function rocblas_dtpsv_batched(handle, uplo, transA, diag, n, AP, x, incx, batch_count) + ccall((:rocblas_dtpsv_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, Ptr{Ptr{Cdouble}}, Ptr{Ptr{Cdouble}}, rocblas_int, rocblas_int), handle, uplo, transA, diag, n, AP, x, incx, batch_count) +end + +function rocblas_ctpsv_batched(handle, uplo, transA, diag, n, AP, x, incx, batch_count) + ccall((:rocblas_ctpsv_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, Ptr{Ptr{rocblas_float_complex}}, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, rocblas_int), handle, uplo, transA, diag, n, AP, x, incx, batch_count) +end + +function rocblas_ztpsv_batched(handle, uplo, transA, diag, n, AP, x, incx, batch_count) + ccall((:rocblas_ztpsv_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, Ptr{Ptr{rocblas_double_complex}}, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, rocblas_int), handle, uplo, transA, diag, n, AP, x, incx, batch_count) +end + +function rocblas_stpsv_strided_batched(handle, uplo, transA, diag, n, AP, stride_A, x, incx, stride_x, batch_count) + ccall((:rocblas_stpsv_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, Ptr{Cfloat}, rocblas_stride, Ptr{Cfloat}, rocblas_int, rocblas_stride, rocblas_int), handle, uplo, transA, diag, n, AP, stride_A, x, incx, stride_x, batch_count) +end + +function rocblas_dtpsv_strided_batched(handle, uplo, transA, diag, n, AP, stride_A, x, incx, stride_x, batch_count) + ccall((:rocblas_dtpsv_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, Ptr{Cdouble}, rocblas_stride, Ptr{Cdouble}, rocblas_int, rocblas_stride, rocblas_int), handle, uplo, transA, diag, n, AP, stride_A, x, incx, stride_x, batch_count) +end + +function rocblas_ctpsv_strided_batched(handle, uplo, transA, diag, n, AP, stride_A, x, incx, stride_x, batch_count) + ccall((:rocblas_ctpsv_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, Ptr{rocblas_float_complex}, rocblas_stride, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, rocblas_int), handle, uplo, transA, diag, n, AP, stride_A, x, incx, stride_x, batch_count) +end + +function rocblas_ztpsv_strided_batched(handle, uplo, transA, diag, n, AP, stride_A, x, incx, stride_x, batch_count) + ccall((:rocblas_ztpsv_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, Ptr{rocblas_double_complex}, rocblas_stride, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, rocblas_int), handle, uplo, transA, diag, n, AP, stride_A, x, incx, stride_x, batch_count) +end + +function rocblas_ssymv(handle, uplo, n, alpha, A, lda, x, incx, beta, y, incy) + ccall((:rocblas_ssymv, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{Cfloat}, Ptr{Cfloat}, rocblas_int, Ptr{Cfloat}, rocblas_int, Ptr{Cfloat}, Ptr{Cfloat}, rocblas_int), handle, uplo, n, alpha, A, lda, x, incx, beta, y, incy) +end + +function rocblas_dsymv(handle, uplo, n, alpha, A, lda, x, incx, beta, y, incy) + ccall((:rocblas_dsymv, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{Cdouble}, Ptr{Cdouble}, rocblas_int, Ptr{Cdouble}, rocblas_int, Ptr{Cdouble}, Ptr{Cdouble}, rocblas_int), handle, uplo, n, alpha, A, lda, x, incx, beta, y, incy) +end + +function rocblas_csymv(handle, uplo, n, alpha, A, lda, x, incx, beta, y, incy) + ccall((:rocblas_csymv, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{rocblas_float_complex}, Ptr{rocblas_float_complex}, rocblas_int, Ptr{rocblas_float_complex}, rocblas_int, Ptr{rocblas_float_complex}, Ptr{rocblas_float_complex}, rocblas_int), handle, uplo, n, alpha, A, lda, x, incx, beta, y, incy) +end + +function rocblas_zsymv(handle, uplo, n, alpha, A, lda, x, incx, beta, y, incy) + ccall((:rocblas_zsymv, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{rocblas_double_complex}, Ptr{rocblas_double_complex}, rocblas_int, Ptr{rocblas_double_complex}, rocblas_int, Ptr{rocblas_double_complex}, Ptr{rocblas_double_complex}, rocblas_int), handle, uplo, n, alpha, A, lda, x, incx, beta, y, incy) +end + +function rocblas_ssymv_batched(handle, uplo, n, alpha, A, lda, x, incx, beta, y, incy, batch_count) + ccall((:rocblas_ssymv_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{Cfloat}, Ptr{Ptr{Cfloat}}, rocblas_int, Ptr{Ptr{Cfloat}}, rocblas_int, Ptr{Cfloat}, Ptr{Ptr{Cfloat}}, rocblas_int, rocblas_int), handle, uplo, n, alpha, A, lda, x, incx, beta, y, incy, batch_count) +end + +function rocblas_dsymv_batched(handle, uplo, n, alpha, A, lda, x, incx, beta, y, incy, batch_count) + ccall((:rocblas_dsymv_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{Cdouble}, Ptr{Ptr{Cdouble}}, rocblas_int, Ptr{Ptr{Cdouble}}, rocblas_int, Ptr{Cdouble}, Ptr{Ptr{Cdouble}}, rocblas_int, rocblas_int), handle, uplo, n, alpha, A, lda, x, incx, beta, y, incy, batch_count) +end + +function rocblas_csymv_batched(handle, uplo, n, alpha, A, lda, x, incx, beta, y, incy, batch_count) + ccall((:rocblas_csymv_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{rocblas_float_complex}, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, Ptr{rocblas_float_complex}, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, rocblas_int), handle, uplo, n, alpha, A, lda, x, incx, beta, y, incy, batch_count) +end + +function rocblas_zsymv_batched(handle, uplo, n, alpha, A, lda, x, incx, beta, y, incy, batch_count) + ccall((:rocblas_zsymv_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{rocblas_double_complex}, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, Ptr{rocblas_double_complex}, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, rocblas_int), handle, uplo, n, alpha, A, lda, x, incx, beta, y, incy, batch_count) +end + +function rocblas_ssymv_strided_batched(handle, uplo, n, alpha, A, lda, strideA, x, incx, stridex, beta, y, incy, stridey, batch_count) + ccall((:rocblas_ssymv_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{Cfloat}, Ptr{Cfloat}, rocblas_int, rocblas_stride, Ptr{Cfloat}, rocblas_int, rocblas_stride, Ptr{Cfloat}, Ptr{Cfloat}, rocblas_int, rocblas_stride, rocblas_int), handle, uplo, n, alpha, A, lda, strideA, x, incx, stridex, beta, y, incy, stridey, batch_count) +end + +function rocblas_dsymv_strided_batched(handle, uplo, n, alpha, A, lda, strideA, x, incx, stridex, beta, y, incy, stridey, batch_count) + ccall((:rocblas_dsymv_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{Cdouble}, Ptr{Cdouble}, rocblas_int, rocblas_stride, Ptr{Cdouble}, rocblas_int, rocblas_stride, Ptr{Cdouble}, Ptr{Cdouble}, rocblas_int, rocblas_stride, rocblas_int), handle, uplo, n, alpha, A, lda, strideA, x, incx, stridex, beta, y, incy, stridey, batch_count) +end + +function rocblas_csymv_strided_batched(handle, uplo, n, alpha, A, lda, strideA, x, incx, stridex, beta, y, incy, stridey, batch_count) + ccall((:rocblas_csymv_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{rocblas_float_complex}, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_float_complex}, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, rocblas_int), handle, uplo, n, alpha, A, lda, strideA, x, incx, stridex, beta, y, incy, stridey, batch_count) +end + +function rocblas_zsymv_strided_batched(handle, uplo, n, alpha, A, lda, strideA, x, incx, stridex, beta, y, incy, stridey, batch_count) + ccall((:rocblas_zsymv_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{rocblas_double_complex}, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_double_complex}, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, rocblas_int), handle, uplo, n, alpha, A, lda, strideA, x, incx, stridex, beta, y, incy, stridey, batch_count) +end + +function rocblas_sspmv(handle, uplo, n, alpha, A, x, incx, beta, y, incy) + ccall((:rocblas_sspmv, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{Cfloat}, Ptr{Cfloat}, Ptr{Cfloat}, rocblas_int, Ptr{Cfloat}, Ptr{Cfloat}, rocblas_int), handle, uplo, n, alpha, A, x, incx, beta, y, incy) +end + +function rocblas_dspmv(handle, uplo, n, alpha, A, x, incx, beta, y, incy) + ccall((:rocblas_dspmv, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{Cdouble}, Ptr{Cdouble}, Ptr{Cdouble}, rocblas_int, Ptr{Cdouble}, Ptr{Cdouble}, rocblas_int), handle, uplo, n, alpha, A, x, incx, beta, y, incy) +end + +function rocblas_sspmv_batched(handle, uplo, n, alpha, A, x, incx, beta, y, incy, batch_count) + ccall((:rocblas_sspmv_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{Cfloat}, Ptr{Ptr{Cfloat}}, Ptr{Ptr{Cfloat}}, rocblas_int, Ptr{Cfloat}, Ptr{Ptr{Cfloat}}, rocblas_int, rocblas_int), handle, uplo, n, alpha, A, x, incx, beta, y, incy, batch_count) +end + +function rocblas_dspmv_batched(handle, uplo, n, alpha, A, x, incx, beta, y, incy, batch_count) + ccall((:rocblas_dspmv_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{Cdouble}, Ptr{Ptr{Cdouble}}, Ptr{Ptr{Cdouble}}, rocblas_int, Ptr{Cdouble}, Ptr{Ptr{Cdouble}}, rocblas_int, rocblas_int), handle, uplo, n, alpha, A, x, incx, beta, y, incy, batch_count) +end + +function rocblas_sspmv_strided_batched(handle, uplo, n, alpha, A, strideA, x, incx, stridex, beta, y, incy, stridey, batch_count) + ccall((:rocblas_sspmv_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{Cfloat}, Ptr{Cfloat}, rocblas_stride, Ptr{Cfloat}, rocblas_int, rocblas_stride, Ptr{Cfloat}, Ptr{Cfloat}, rocblas_int, rocblas_stride, rocblas_int), handle, uplo, n, alpha, A, strideA, x, incx, stridex, beta, y, incy, stridey, batch_count) +end + +function rocblas_dspmv_strided_batched(handle, uplo, n, alpha, A, strideA, x, incx, stridex, beta, y, incy, stridey, batch_count) + ccall((:rocblas_dspmv_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{Cdouble}, Ptr{Cdouble}, rocblas_stride, Ptr{Cdouble}, rocblas_int, rocblas_stride, Ptr{Cdouble}, Ptr{Cdouble}, rocblas_int, rocblas_stride, rocblas_int), handle, uplo, n, alpha, A, strideA, x, incx, stridex, beta, y, incy, stridey, batch_count) +end + +function rocblas_ssbmv(handle, uplo, n, k, alpha, A, lda, x, incx, beta, y, incy) + ccall((:rocblas_ssbmv, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, rocblas_int, Ptr{Cfloat}, Ptr{Cfloat}, rocblas_int, Ptr{Cfloat}, rocblas_int, Ptr{Cfloat}, Ptr{Cfloat}, rocblas_int), handle, uplo, n, k, alpha, A, lda, x, incx, beta, y, incy) +end + +function rocblas_dsbmv(handle, uplo, n, k, alpha, A, lda, x, incx, beta, y, incy) + ccall((:rocblas_dsbmv, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, rocblas_int, Ptr{Cdouble}, Ptr{Cdouble}, rocblas_int, Ptr{Cdouble}, rocblas_int, Ptr{Cdouble}, Ptr{Cdouble}, rocblas_int), handle, uplo, n, k, alpha, A, lda, x, incx, beta, y, incy) +end + +function rocblas_dsbmv_batched(handle, uplo, n, k, alpha, A, lda, x, incx, beta, y, incy, batch_count) + ccall((:rocblas_dsbmv_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, rocblas_int, Ptr{Cdouble}, Ptr{Ptr{Cdouble}}, rocblas_int, Ptr{Ptr{Cdouble}}, rocblas_int, Ptr{Cdouble}, Ptr{Ptr{Cdouble}}, rocblas_int, rocblas_int), handle, uplo, n, k, alpha, A, lda, x, incx, beta, y, incy, batch_count) +end + +function rocblas_ssbmv_batched(handle, uplo, n, k, alpha, A, lda, x, incx, beta, y, incy, batch_count) + ccall((:rocblas_ssbmv_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, rocblas_int, Ptr{Cfloat}, Ptr{Ptr{Cfloat}}, rocblas_int, Ptr{Ptr{Cfloat}}, rocblas_int, Ptr{Cfloat}, Ptr{Ptr{Cfloat}}, rocblas_int, rocblas_int), handle, uplo, n, k, alpha, A, lda, x, incx, beta, y, incy, batch_count) +end + +function rocblas_ssbmv_strided_batched(handle, uplo, n, k, alpha, A, lda, strideA, x, incx, stridex, beta, y, incy, stridey, batch_count) + ccall((:rocblas_ssbmv_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, rocblas_int, Ptr{Cfloat}, Ptr{Cfloat}, rocblas_int, rocblas_stride, Ptr{Cfloat}, rocblas_int, rocblas_stride, Ptr{Cfloat}, Ptr{Cfloat}, rocblas_int, rocblas_stride, rocblas_int), handle, uplo, n, k, alpha, A, lda, strideA, x, incx, stridex, beta, y, incy, stridey, batch_count) +end + +function rocblas_dsbmv_strided_batched(handle, uplo, n, k, alpha, A, lda, strideA, x, incx, stridex, beta, y, incy, stridey, batch_count) + ccall((:rocblas_dsbmv_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, rocblas_int, Ptr{Cdouble}, Ptr{Cdouble}, rocblas_int, rocblas_stride, Ptr{Cdouble}, rocblas_int, rocblas_stride, Ptr{Cdouble}, Ptr{Cdouble}, rocblas_int, rocblas_stride, rocblas_int), handle, uplo, n, k, alpha, A, lda, strideA, x, incx, stridex, beta, y, incy, stridey, batch_count) +end + +function rocblas_sger(handle, m, n, alpha, x, incx, y, incy, A, lda) + ccall((:rocblas_sger, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, rocblas_int, Ptr{Cfloat}, Ptr{Cfloat}, rocblas_int, Ptr{Cfloat}, rocblas_int, Ptr{Cfloat}, rocblas_int), handle, m, n, alpha, x, incx, y, incy, A, lda) +end + +function rocblas_dger(handle, m, n, alpha, x, incx, y, incy, A, lda) + ccall((:rocblas_dger, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, rocblas_int, Ptr{Cdouble}, Ptr{Cdouble}, rocblas_int, Ptr{Cdouble}, rocblas_int, Ptr{Cdouble}, rocblas_int), handle, m, n, alpha, x, incx, y, incy, A, lda) +end + +function rocblas_cgeru(handle, m, n, alpha, x, incx, y, incy, A, lda) + ccall((:rocblas_cgeru, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, rocblas_int, Ptr{rocblas_float_complex}, Ptr{rocblas_float_complex}, rocblas_int, Ptr{rocblas_float_complex}, rocblas_int, Ptr{rocblas_float_complex}, rocblas_int), handle, m, n, alpha, x, incx, y, incy, A, lda) +end + +function rocblas_zgeru(handle, m, n, alpha, x, incx, y, incy, A, lda) + ccall((:rocblas_zgeru, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, rocblas_int, Ptr{rocblas_double_complex}, Ptr{rocblas_double_complex}, rocblas_int, Ptr{rocblas_double_complex}, rocblas_int, Ptr{rocblas_double_complex}, rocblas_int), handle, m, n, alpha, x, incx, y, incy, A, lda) +end + +function rocblas_cgerc(handle, m, n, alpha, x, incx, y, incy, A, lda) + ccall((:rocblas_cgerc, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, rocblas_int, Ptr{rocblas_float_complex}, Ptr{rocblas_float_complex}, rocblas_int, Ptr{rocblas_float_complex}, rocblas_int, Ptr{rocblas_float_complex}, rocblas_int), handle, m, n, alpha, x, incx, y, incy, A, lda) +end + +function rocblas_zgerc(handle, m, n, alpha, x, incx, y, incy, A, lda) + ccall((:rocblas_zgerc, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, rocblas_int, Ptr{rocblas_double_complex}, Ptr{rocblas_double_complex}, rocblas_int, Ptr{rocblas_double_complex}, rocblas_int, Ptr{rocblas_double_complex}, rocblas_int), handle, m, n, alpha, x, incx, y, incy, A, lda) +end + +function rocblas_sger_batched(handle, m, n, alpha, x, incx, y, incy, A, lda, batch_count) + ccall((:rocblas_sger_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, rocblas_int, Ptr{Cfloat}, Ptr{Ptr{Cfloat}}, rocblas_int, Ptr{Ptr{Cfloat}}, rocblas_int, Ptr{Ptr{Cfloat}}, rocblas_int, rocblas_int), handle, m, n, alpha, x, incx, y, incy, A, lda, batch_count) +end + +function rocblas_dger_batched(handle, m, n, alpha, x, incx, y, incy, A, lda, batch_count) + ccall((:rocblas_dger_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, rocblas_int, Ptr{Cdouble}, Ptr{Ptr{Cdouble}}, rocblas_int, Ptr{Ptr{Cdouble}}, rocblas_int, Ptr{Ptr{Cdouble}}, rocblas_int, rocblas_int), handle, m, n, alpha, x, incx, y, incy, A, lda, batch_count) +end + +function rocblas_cgeru_batched(handle, m, n, alpha, x, incx, y, incy, A, lda, batch_count) + ccall((:rocblas_cgeru_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, rocblas_int, Ptr{rocblas_float_complex}, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, rocblas_int), handle, m, n, alpha, x, incx, y, incy, A, lda, batch_count) +end + +function rocblas_zgeru_batched(handle, m, n, alpha, x, incx, y, incy, A, lda, batch_count) + ccall((:rocblas_zgeru_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, rocblas_int, Ptr{rocblas_double_complex}, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, rocblas_int), handle, m, n, alpha, x, incx, y, incy, A, lda, batch_count) +end + +function rocblas_cgerc_batched(handle, m, n, alpha, x, incx, y, incy, A, lda, batch_count) + ccall((:rocblas_cgerc_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, rocblas_int, Ptr{rocblas_float_complex}, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, rocblas_int), handle, m, n, alpha, x, incx, y, incy, A, lda, batch_count) +end + +function rocblas_zgerc_batched(handle, m, n, alpha, x, incx, y, incy, A, lda, batch_count) + ccall((:rocblas_zgerc_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, rocblas_int, Ptr{rocblas_double_complex}, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, rocblas_int), handle, m, n, alpha, x, incx, y, incy, A, lda, batch_count) +end + +function rocblas_sger_strided_batched(handle, m, n, alpha, x, incx, stridex, y, incy, stridey, A, lda, strideA, batch_count) + ccall((:rocblas_sger_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, rocblas_int, Ptr{Cfloat}, Ptr{Cfloat}, rocblas_int, rocblas_stride, Ptr{Cfloat}, rocblas_int, rocblas_stride, Ptr{Cfloat}, rocblas_int, rocblas_stride, rocblas_int), handle, m, n, alpha, x, incx, stridex, y, incy, stridey, A, lda, strideA, batch_count) +end + +function rocblas_dger_strided_batched(handle, m, n, alpha, x, incx, stridex, y, incy, stridey, A, lda, strideA, batch_count) + ccall((:rocblas_dger_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, rocblas_int, Ptr{Cdouble}, Ptr{Cdouble}, rocblas_int, rocblas_stride, Ptr{Cdouble}, rocblas_int, rocblas_stride, Ptr{Cdouble}, rocblas_int, rocblas_stride, rocblas_int), handle, m, n, alpha, x, incx, stridex, y, incy, stridey, A, lda, strideA, batch_count) +end + +function rocblas_cgeru_strided_batched(handle, m, n, alpha, x, incx, stridex, y, incy, stridey, A, lda, strideA, batch_count) + ccall((:rocblas_cgeru_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, rocblas_int, Ptr{rocblas_float_complex}, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, rocblas_int), handle, m, n, alpha, x, incx, stridex, y, incy, stridey, A, lda, strideA, batch_count) +end + +function rocblas_zgeru_strided_batched(handle, m, n, alpha, x, incx, stridex, y, incy, stridey, A, lda, strideA, batch_count) + ccall((:rocblas_zgeru_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, rocblas_int, Ptr{rocblas_double_complex}, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, rocblas_int), handle, m, n, alpha, x, incx, stridex, y, incy, stridey, A, lda, strideA, batch_count) +end + +function rocblas_cgerc_strided_batched(handle, m, n, alpha, x, incx, stridex, y, incy, stridey, A, lda, strideA, batch_count) + ccall((:rocblas_cgerc_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, rocblas_int, Ptr{rocblas_float_complex}, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, rocblas_int), handle, m, n, alpha, x, incx, stridex, y, incy, stridey, A, lda, strideA, batch_count) +end + +function rocblas_zgerc_strided_batched(handle, m, n, alpha, x, incx, stridex, y, incy, stridey, A, lda, strideA, batch_count) + ccall((:rocblas_zgerc_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, rocblas_int, Ptr{rocblas_double_complex}, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, rocblas_int), handle, m, n, alpha, x, incx, stridex, y, incy, stridey, A, lda, strideA, batch_count) +end + +function rocblas_sspr(handle, uplo, n, alpha, x, incx, AP) + ccall((:rocblas_sspr, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{Cfloat}, Ptr{Cfloat}, rocblas_int, Ptr{Cfloat}), handle, uplo, n, alpha, x, incx, AP) +end + +function rocblas_dspr(handle, uplo, n, alpha, x, incx, AP) + ccall((:rocblas_dspr, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{Cdouble}, Ptr{Cdouble}, rocblas_int, Ptr{Cdouble}), handle, uplo, n, alpha, x, incx, AP) +end + +function rocblas_cspr(handle, uplo, n, alpha, x, incx, AP) + ccall((:rocblas_cspr, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{rocblas_float_complex}, Ptr{rocblas_float_complex}, rocblas_int, Ptr{rocblas_float_complex}), handle, uplo, n, alpha, x, incx, AP) +end + +function rocblas_zspr(handle, uplo, n, alpha, x, incx, AP) + ccall((:rocblas_zspr, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{rocblas_double_complex}, Ptr{rocblas_double_complex}, rocblas_int, Ptr{rocblas_double_complex}), handle, uplo, n, alpha, x, incx, AP) +end + +function rocblas_sspr_batched(handle, uplo, n, alpha, x, incx, AP, batch_count) + ccall((:rocblas_sspr_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{Cfloat}, Ptr{Ptr{Cfloat}}, rocblas_int, Ptr{Ptr{Cfloat}}, rocblas_int), handle, uplo, n, alpha, x, incx, AP, batch_count) +end + +function rocblas_dspr_batched(handle, uplo, n, alpha, x, incx, AP, batch_count) + ccall((:rocblas_dspr_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{Cdouble}, Ptr{Ptr{Cdouble}}, rocblas_int, Ptr{Ptr{Cdouble}}, rocblas_int), handle, uplo, n, alpha, x, incx, AP, batch_count) +end + +function rocblas_cspr_batched(handle, uplo, n, alpha, x, incx, AP, batch_count) + ccall((:rocblas_cspr_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{rocblas_float_complex}, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, Ptr{Ptr{rocblas_float_complex}}, rocblas_int), handle, uplo, n, alpha, x, incx, AP, batch_count) +end + +function rocblas_zspr_batched(handle, uplo, n, alpha, x, incx, AP, batch_count) + ccall((:rocblas_zspr_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{rocblas_double_complex}, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, Ptr{Ptr{rocblas_double_complex}}, rocblas_int), handle, uplo, n, alpha, x, incx, AP, batch_count) +end + +function rocblas_sspr_strided_batched(handle, uplo, n, alpha, x, incx, stride_x, AP, stride_A, batch_count) + ccall((:rocblas_sspr_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{Cfloat}, Ptr{Cfloat}, rocblas_int, rocblas_stride, Ptr{Cfloat}, rocblas_stride, rocblas_int), handle, uplo, n, alpha, x, incx, stride_x, AP, stride_A, batch_count) +end + +function rocblas_dspr_strided_batched(handle, uplo, n, alpha, x, incx, stride_x, AP, stride_A, batch_count) + ccall((:rocblas_dspr_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{Cdouble}, Ptr{Cdouble}, rocblas_int, rocblas_stride, Ptr{Cdouble}, rocblas_stride, rocblas_int), handle, uplo, n, alpha, x, incx, stride_x, AP, stride_A, batch_count) +end + +function rocblas_cspr_strided_batched(handle, uplo, n, alpha, x, incx, stride_x, AP, stride_A, batch_count) + ccall((:rocblas_cspr_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{rocblas_float_complex}, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_float_complex}, rocblas_stride, rocblas_int), handle, uplo, n, alpha, x, incx, stride_x, AP, stride_A, batch_count) +end + +function rocblas_zspr_strided_batched(handle, uplo, n, alpha, x, incx, stride_x, AP, stride_A, batch_count) + ccall((:rocblas_zspr_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{rocblas_double_complex}, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_double_complex}, rocblas_stride, rocblas_int), handle, uplo, n, alpha, x, incx, stride_x, AP, stride_A, batch_count) +end + +function rocblas_sspr2(handle, uplo, n, alpha, x, incx, y, incy, AP) + ccall((:rocblas_sspr2, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{Cfloat}, Ptr{Cfloat}, rocblas_int, Ptr{Cfloat}, rocblas_int, Ptr{Cfloat}), handle, uplo, n, alpha, x, incx, y, incy, AP) +end + +function rocblas_dspr2(handle, uplo, n, alpha, x, incx, y, incy, AP) + ccall((:rocblas_dspr2, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{Cdouble}, Ptr{Cdouble}, rocblas_int, Ptr{Cdouble}, rocblas_int, Ptr{Cdouble}), handle, uplo, n, alpha, x, incx, y, incy, AP) +end + +function rocblas_sspr2_batched(handle, uplo, n, alpha, x, incx, y, incy, AP, batch_count) + ccall((:rocblas_sspr2_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{Cfloat}, Ptr{Ptr{Cfloat}}, rocblas_int, Ptr{Ptr{Cfloat}}, rocblas_int, Ptr{Ptr{Cfloat}}, rocblas_int), handle, uplo, n, alpha, x, incx, y, incy, AP, batch_count) +end + +function rocblas_dspr2_batched(handle, uplo, n, alpha, x, incx, y, incy, AP, batch_count) + ccall((:rocblas_dspr2_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{Cdouble}, Ptr{Ptr{Cdouble}}, rocblas_int, Ptr{Ptr{Cdouble}}, rocblas_int, Ptr{Ptr{Cdouble}}, rocblas_int), handle, uplo, n, alpha, x, incx, y, incy, AP, batch_count) +end + +function rocblas_sspr2_strided_batched(handle, uplo, n, alpha, x, incx, stride_x, y, incy, stride_y, AP, stride_A, batch_count) + ccall((:rocblas_sspr2_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{Cfloat}, Ptr{Cfloat}, rocblas_int, rocblas_stride, Ptr{Cfloat}, rocblas_int, rocblas_stride, Ptr{Cfloat}, rocblas_stride, rocblas_int), handle, uplo, n, alpha, x, incx, stride_x, y, incy, stride_y, AP, stride_A, batch_count) +end + +function rocblas_dspr2_strided_batched(handle, uplo, n, alpha, x, incx, stride_x, y, incy, stride_y, AP, stride_A, batch_count) + ccall((:rocblas_dspr2_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{Cdouble}, Ptr{Cdouble}, rocblas_int, rocblas_stride, Ptr{Cdouble}, rocblas_int, rocblas_stride, Ptr{Cdouble}, rocblas_stride, rocblas_int), handle, uplo, n, alpha, x, incx, stride_x, y, incy, stride_y, AP, stride_A, batch_count) +end + +function rocblas_ssyr(handle, uplo, n, alpha, x, incx, A, lda) + ccall((:rocblas_ssyr, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{Cfloat}, Ptr{Cfloat}, rocblas_int, Ptr{Cfloat}, rocblas_int), handle, uplo, n, alpha, x, incx, A, lda) +end + +function rocblas_dsyr(handle, uplo, n, alpha, x, incx, A, lda) + ccall((:rocblas_dsyr, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{Cdouble}, Ptr{Cdouble}, rocblas_int, Ptr{Cdouble}, rocblas_int), handle, uplo, n, alpha, x, incx, A, lda) +end + +function rocblas_csyr(handle, uplo, n, alpha, x, incx, A, lda) + ccall((:rocblas_csyr, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{rocblas_float_complex}, Ptr{rocblas_float_complex}, rocblas_int, Ptr{rocblas_float_complex}, rocblas_int), handle, uplo, n, alpha, x, incx, A, lda) +end + +function rocblas_zsyr(handle, uplo, n, alpha, x, incx, A, lda) + ccall((:rocblas_zsyr, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{rocblas_double_complex}, Ptr{rocblas_double_complex}, rocblas_int, Ptr{rocblas_double_complex}, rocblas_int), handle, uplo, n, alpha, x, incx, A, lda) +end + +function rocblas_ssyr_batched(handle, uplo, n, alpha, x, incx, A, lda, batch_count) + ccall((:rocblas_ssyr_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{Cfloat}, Ptr{Ptr{Cfloat}}, rocblas_int, Ptr{Ptr{Cfloat}}, rocblas_int, rocblas_int), handle, uplo, n, alpha, x, incx, A, lda, batch_count) +end + +function rocblas_dsyr_batched(handle, uplo, n, alpha, x, incx, A, lda, batch_count) + ccall((:rocblas_dsyr_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{Cdouble}, Ptr{Ptr{Cdouble}}, rocblas_int, Ptr{Ptr{Cdouble}}, rocblas_int, rocblas_int), handle, uplo, n, alpha, x, incx, A, lda, batch_count) +end + +function rocblas_csyr_batched(handle, uplo, n, alpha, x, incx, A, lda, batch_count) + ccall((:rocblas_csyr_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{rocblas_float_complex}, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, rocblas_int), handle, uplo, n, alpha, x, incx, A, lda, batch_count) +end + +function rocblas_zsyr_batched(handle, uplo, n, alpha, x, incx, A, lda, batch_count) + ccall((:rocblas_zsyr_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{rocblas_double_complex}, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, rocblas_int), handle, uplo, n, alpha, x, incx, A, lda, batch_count) +end + +function rocblas_ssyr_strided_batched(handle, uplo, n, alpha, x, incx, stridex, A, lda, strideA, batch_count) + ccall((:rocblas_ssyr_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{Cfloat}, Ptr{Cfloat}, rocblas_int, rocblas_stride, Ptr{Cfloat}, rocblas_int, rocblas_stride, rocblas_int), handle, uplo, n, alpha, x, incx, stridex, A, lda, strideA, batch_count) +end + +function rocblas_dsyr_strided_batched(handle, uplo, n, alpha, x, incx, stridex, A, lda, strideA, batch_count) + ccall((:rocblas_dsyr_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{Cdouble}, Ptr{Cdouble}, rocblas_int, rocblas_stride, Ptr{Cdouble}, rocblas_int, rocblas_stride, rocblas_int), handle, uplo, n, alpha, x, incx, stridex, A, lda, strideA, batch_count) +end + +function rocblas_csyr_strided_batched(handle, uplo, n, alpha, x, incx, stridex, A, lda, strideA, batch_count) + ccall((:rocblas_csyr_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{rocblas_float_complex}, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, rocblas_int), handle, uplo, n, alpha, x, incx, stridex, A, lda, strideA, batch_count) +end + +function rocblas_zsyr_strided_batched(handle, uplo, n, alpha, x, incx, stridex, A, lda, strideA, batch_count) + ccall((:rocblas_zsyr_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{rocblas_double_complex}, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, rocblas_int), handle, uplo, n, alpha, x, incx, stridex, A, lda, strideA, batch_count) +end + +function rocblas_ssyr2(handle, uplo, n, alpha, x, incx, y, incy, A, lda) + ccall((:rocblas_ssyr2, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{Cfloat}, Ptr{Cfloat}, rocblas_int, Ptr{Cfloat}, rocblas_int, Ptr{Cfloat}, rocblas_int), handle, uplo, n, alpha, x, incx, y, incy, A, lda) +end + +function rocblas_dsyr2(handle, uplo, n, alpha, x, incx, y, incy, A, lda) + ccall((:rocblas_dsyr2, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{Cdouble}, Ptr{Cdouble}, rocblas_int, Ptr{Cdouble}, rocblas_int, Ptr{Cdouble}, rocblas_int), handle, uplo, n, alpha, x, incx, y, incy, A, lda) +end + +function rocblas_csyr2(handle, uplo, n, alpha, x, incx, y, incy, A, lda) + ccall((:rocblas_csyr2, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{rocblas_float_complex}, Ptr{rocblas_float_complex}, rocblas_int, Ptr{rocblas_float_complex}, rocblas_int, Ptr{rocblas_float_complex}, rocblas_int), handle, uplo, n, alpha, x, incx, y, incy, A, lda) +end + +function rocblas_zsyr2(handle, uplo, n, alpha, x, incx, y, incy, A, lda) + ccall((:rocblas_zsyr2, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{rocblas_double_complex}, Ptr{rocblas_double_complex}, rocblas_int, Ptr{rocblas_double_complex}, rocblas_int, Ptr{rocblas_double_complex}, rocblas_int), handle, uplo, n, alpha, x, incx, y, incy, A, lda) +end + +function rocblas_ssyr2_batched(handle, uplo, n, alpha, x, incx, y, incy, A, lda, batch_count) + ccall((:rocblas_ssyr2_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{Cfloat}, Ptr{Ptr{Cfloat}}, rocblas_int, Ptr{Ptr{Cfloat}}, rocblas_int, Ptr{Ptr{Cfloat}}, rocblas_int, rocblas_int), handle, uplo, n, alpha, x, incx, y, incy, A, lda, batch_count) +end + +function rocblas_dsyr2_batched(handle, uplo, n, alpha, x, incx, y, incy, A, lda, batch_count) + ccall((:rocblas_dsyr2_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{Cdouble}, Ptr{Ptr{Cdouble}}, rocblas_int, Ptr{Ptr{Cdouble}}, rocblas_int, Ptr{Ptr{Cdouble}}, rocblas_int, rocblas_int), handle, uplo, n, alpha, x, incx, y, incy, A, lda, batch_count) +end + +function rocblas_csyr2_batched(handle, uplo, n, alpha, x, incx, y, incy, A, lda, batch_count) + ccall((:rocblas_csyr2_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{rocblas_float_complex}, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, rocblas_int), handle, uplo, n, alpha, x, incx, y, incy, A, lda, batch_count) +end + +function rocblas_zsyr2_batched(handle, uplo, n, alpha, x, incx, y, incy, A, lda, batch_count) + ccall((:rocblas_zsyr2_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{rocblas_double_complex}, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, rocblas_int), handle, uplo, n, alpha, x, incx, y, incy, A, lda, batch_count) +end + +function rocblas_ssyr2_strided_batched(handle, uplo, n, alpha, x, incx, stridex, y, incy, stridey, A, lda, strideA, batch_count) + ccall((:rocblas_ssyr2_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{Cfloat}, Ptr{Cfloat}, rocblas_int, rocblas_stride, Ptr{Cfloat}, rocblas_int, rocblas_stride, Ptr{Cfloat}, rocblas_int, rocblas_stride, rocblas_int), handle, uplo, n, alpha, x, incx, stridex, y, incy, stridey, A, lda, strideA, batch_count) +end + +function rocblas_dsyr2_strided_batched(handle, uplo, n, alpha, x, incx, stridex, y, incy, stridey, A, lda, strideA, batch_count) + ccall((:rocblas_dsyr2_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{Cdouble}, Ptr{Cdouble}, rocblas_int, rocblas_stride, Ptr{Cdouble}, rocblas_int, rocblas_stride, Ptr{Cdouble}, rocblas_int, rocblas_stride, rocblas_int), handle, uplo, n, alpha, x, incx, stridex, y, incy, stridey, A, lda, strideA, batch_count) +end + +function rocblas_csyr2_strided_batched(handle, uplo, n, alpha, x, incx, stridex, y, incy, stridey, A, lda, strideA, batch_count) + ccall((:rocblas_csyr2_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{rocblas_float_complex}, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, rocblas_int), handle, uplo, n, alpha, x, incx, stridex, y, incy, stridey, A, lda, strideA, batch_count) +end + +function rocblas_zsyr2_strided_batched(handle, uplo, n, alpha, x, incx, stridex, y, incy, stridey, A, lda, strideA, batch_count) + ccall((:rocblas_zsyr2_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_int, Ptr{rocblas_double_complex}, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, rocblas_int), handle, uplo, n, alpha, x, incx, stridex, y, incy, stridey, A, lda, strideA, batch_count) +end + +function rocblas_chemm(handle, side, uplo, m, n, alpha, A, lda, B, ldb, beta, C, ldc) + ccall((:rocblas_chemm, librocblas_path), rocblas_status, (rocblas_handle, rocblas_side, rocblas_fill, rocblas_int, rocblas_int, Ptr{rocblas_float_complex}, Ptr{rocblas_float_complex}, rocblas_int, Ptr{rocblas_float_complex}, rocblas_int, Ptr{rocblas_float_complex}, Ptr{rocblas_float_complex}, rocblas_int), handle, side, uplo, m, n, alpha, A, lda, B, ldb, beta, C, ldc) +end + +function rocblas_zhemm(handle, side, uplo, m, n, alpha, A, lda, B, ldb, beta, C, ldc) + ccall((:rocblas_zhemm, librocblas_path), rocblas_status, (rocblas_handle, rocblas_side, rocblas_fill, rocblas_int, rocblas_int, Ptr{rocblas_double_complex}, Ptr{rocblas_double_complex}, rocblas_int, Ptr{rocblas_double_complex}, rocblas_int, Ptr{rocblas_double_complex}, Ptr{rocblas_double_complex}, rocblas_int), handle, side, uplo, m, n, alpha, A, lda, B, ldb, beta, C, ldc) +end + +function rocblas_chemm_batched(handle, side, uplo, m, n, alpha, A, lda, B, ldb, beta, C, ldc, batch_count) + ccall((:rocblas_chemm_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_side, rocblas_fill, rocblas_int, rocblas_int, Ptr{rocblas_float_complex}, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, Ptr{rocblas_float_complex}, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, rocblas_int), handle, side, uplo, m, n, alpha, A, lda, B, ldb, beta, C, ldc, batch_count) +end + +function rocblas_zhemm_batched(handle, side, uplo, m, n, alpha, A, lda, B, ldb, beta, C, ldc, batch_count) + ccall((:rocblas_zhemm_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_side, rocblas_fill, rocblas_int, rocblas_int, Ptr{rocblas_double_complex}, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, Ptr{rocblas_double_complex}, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, rocblas_int), handle, side, uplo, m, n, alpha, A, lda, B, ldb, beta, C, ldc, batch_count) +end + +function rocblas_chemm_strided_batched(handle, side, uplo, m, n, alpha, A, lda, stride_A, B, ldb, stride_B, beta, C, ldc, stride_C, batch_count) + ccall((:rocblas_chemm_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_side, rocblas_fill, rocblas_int, rocblas_int, Ptr{rocblas_float_complex}, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_float_complex}, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, rocblas_int), handle, side, uplo, m, n, alpha, A, lda, stride_A, B, ldb, stride_B, beta, C, ldc, stride_C, batch_count) +end + +function rocblas_zhemm_strided_batched(handle, side, uplo, m, n, alpha, A, lda, stride_A, B, ldb, stride_B, beta, C, ldc, stride_C, batch_count) + ccall((:rocblas_zhemm_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_side, rocblas_fill, rocblas_int, rocblas_int, Ptr{rocblas_double_complex}, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_double_complex}, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, rocblas_int), handle, side, uplo, m, n, alpha, A, lda, stride_A, B, ldb, stride_B, beta, C, ldc, stride_C, batch_count) +end + +function rocblas_cherk(handle, uplo, transA, n, k, alpha, A, lda, beta, C, ldc) + ccall((:rocblas_cherk, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_int, rocblas_int, Ptr{Cfloat}, Ptr{rocblas_float_complex}, rocblas_int, Ptr{Cfloat}, Ptr{rocblas_float_complex}, rocblas_int), handle, uplo, transA, n, k, alpha, A, lda, beta, C, ldc) +end + +function rocblas_zherk(handle, uplo, transA, n, k, alpha, A, lda, beta, C, ldc) + ccall((:rocblas_zherk, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_int, rocblas_int, Ptr{Cdouble}, Ptr{rocblas_double_complex}, rocblas_int, Ptr{Cdouble}, Ptr{rocblas_double_complex}, rocblas_int), handle, uplo, transA, n, k, alpha, A, lda, beta, C, ldc) +end + +function rocblas_cherk_batched(handle, uplo, transA, n, k, alpha, A, lda, beta, C, ldc, batch_count) + ccall((:rocblas_cherk_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_int, rocblas_int, Ptr{Cfloat}, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, Ptr{Cfloat}, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, rocblas_int), handle, uplo, transA, n, k, alpha, A, lda, beta, C, ldc, batch_count) +end + +function rocblas_zherk_batched(handle, uplo, transA, n, k, alpha, A, lda, beta, C, ldc, batch_count) + ccall((:rocblas_zherk_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_int, rocblas_int, Ptr{Cdouble}, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, Ptr{Cdouble}, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, rocblas_int), handle, uplo, transA, n, k, alpha, A, lda, beta, C, ldc, batch_count) +end + +function rocblas_cherk_strided_batched(handle, uplo, transA, n, k, alpha, A, lda, stride_A, beta, C, ldc, stride_C, batch_count) + ccall((:rocblas_cherk_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_int, rocblas_int, Ptr{Cfloat}, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, Ptr{Cfloat}, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, rocblas_int), handle, uplo, transA, n, k, alpha, A, lda, stride_A, beta, C, ldc, stride_C, batch_count) +end + +function rocblas_zherk_strided_batched(handle, uplo, transA, n, k, alpha, A, lda, stride_A, beta, C, ldc, stride_C, batch_count) + ccall((:rocblas_zherk_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_int, rocblas_int, Ptr{Cdouble}, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, Ptr{Cdouble}, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, rocblas_int), handle, uplo, transA, n, k, alpha, A, lda, stride_A, beta, C, ldc, stride_C, batch_count) +end + +function rocblas_cher2k(handle, uplo, trans, n, k, alpha, A, lda, B, ldb, beta, C, ldc) + ccall((:rocblas_cher2k, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_int, rocblas_int, Ptr{rocblas_float_complex}, Ptr{rocblas_float_complex}, rocblas_int, Ptr{rocblas_float_complex}, rocblas_int, Ptr{Cfloat}, Ptr{rocblas_float_complex}, rocblas_int), handle, uplo, trans, n, k, alpha, A, lda, B, ldb, beta, C, ldc) +end + +function rocblas_zher2k(handle, uplo, trans, n, k, alpha, A, lda, B, ldb, beta, C, ldc) + ccall((:rocblas_zher2k, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_int, rocblas_int, Ptr{rocblas_double_complex}, Ptr{rocblas_double_complex}, rocblas_int, Ptr{rocblas_double_complex}, rocblas_int, Ptr{Cdouble}, Ptr{rocblas_double_complex}, rocblas_int), handle, uplo, trans, n, k, alpha, A, lda, B, ldb, beta, C, ldc) +end + +function rocblas_cher2k_batched(handle, uplo, trans, n, k, alpha, A, lda, B, ldb, beta, C, ldc, batch_count) + ccall((:rocblas_cher2k_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_int, rocblas_int, Ptr{rocblas_float_complex}, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, Ptr{Cfloat}, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, rocblas_int), handle, uplo, trans, n, k, alpha, A, lda, B, ldb, beta, C, ldc, batch_count) +end + +function rocblas_zher2k_batched(handle, uplo, trans, n, k, alpha, A, lda, B, ldb, beta, C, ldc, batch_count) + ccall((:rocblas_zher2k_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_int, rocblas_int, Ptr{rocblas_double_complex}, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, Ptr{Cdouble}, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, rocblas_int), handle, uplo, trans, n, k, alpha, A, lda, B, ldb, beta, C, ldc, batch_count) +end + +function rocblas_cher2k_strided_batched(handle, uplo, trans, n, k, alpha, A, lda, stride_A, B, ldb, stride_B, beta, C, ldc, stride_C, batch_count) + ccall((:rocblas_cher2k_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_int, rocblas_int, Ptr{rocblas_float_complex}, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, Ptr{Cfloat}, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, rocblas_int), handle, uplo, trans, n, k, alpha, A, lda, stride_A, B, ldb, stride_B, beta, C, ldc, stride_C, batch_count) +end + +function rocblas_zher2k_strided_batched(handle, uplo, trans, n, k, alpha, A, lda, stride_A, B, ldb, stride_B, beta, C, ldc, stride_C, batch_count) + ccall((:rocblas_zher2k_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_int, rocblas_int, Ptr{rocblas_double_complex}, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, Ptr{Cdouble}, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, rocblas_int), handle, uplo, trans, n, k, alpha, A, lda, stride_A, B, ldb, stride_B, beta, C, ldc, stride_C, batch_count) +end + +function rocblas_cherkx(handle, uplo, trans, n, k, alpha, A, lda, B, ldb, beta, C, ldc) + ccall((:rocblas_cherkx, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_int, rocblas_int, Ptr{rocblas_float_complex}, Ptr{rocblas_float_complex}, rocblas_int, Ptr{rocblas_float_complex}, rocblas_int, Ptr{Cfloat}, Ptr{rocblas_float_complex}, rocblas_int), handle, uplo, trans, n, k, alpha, A, lda, B, ldb, beta, C, ldc) +end + +function rocblas_zherkx(handle, uplo, trans, n, k, alpha, A, lda, B, ldb, beta, C, ldc) + ccall((:rocblas_zherkx, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_int, rocblas_int, Ptr{rocblas_double_complex}, Ptr{rocblas_double_complex}, rocblas_int, Ptr{rocblas_double_complex}, rocblas_int, Ptr{Cdouble}, Ptr{rocblas_double_complex}, rocblas_int), handle, uplo, trans, n, k, alpha, A, lda, B, ldb, beta, C, ldc) +end + +function rocblas_cherkx_batched(handle, uplo, trans, n, k, alpha, A, lda, B, ldb, beta, C, ldc, batch_count) + ccall((:rocblas_cherkx_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_int, rocblas_int, Ptr{rocblas_float_complex}, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, Ptr{Cfloat}, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, rocblas_int), handle, uplo, trans, n, k, alpha, A, lda, B, ldb, beta, C, ldc, batch_count) +end + +function rocblas_zherkx_batched(handle, uplo, trans, n, k, alpha, A, lda, B, ldb, beta, C, ldc, batch_count) + ccall((:rocblas_zherkx_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_int, rocblas_int, Ptr{rocblas_double_complex}, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, Ptr{Cdouble}, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, rocblas_int), handle, uplo, trans, n, k, alpha, A, lda, B, ldb, beta, C, ldc, batch_count) +end + +function rocblas_cherkx_strided_batched(handle, uplo, trans, n, k, alpha, A, lda, stride_A, B, ldb, stride_B, beta, C, ldc, stride_C, batch_count) + ccall((:rocblas_cherkx_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_int, rocblas_int, Ptr{rocblas_float_complex}, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, Ptr{Cfloat}, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, rocblas_int), handle, uplo, trans, n, k, alpha, A, lda, stride_A, B, ldb, stride_B, beta, C, ldc, stride_C, batch_count) +end + +function rocblas_zherkx_strided_batched(handle, uplo, trans, n, k, alpha, A, lda, stride_A, B, ldb, stride_B, beta, C, ldc, stride_C, batch_count) + ccall((:rocblas_zherkx_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_int, rocblas_int, Ptr{rocblas_double_complex}, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, Ptr{Cdouble}, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, rocblas_int), handle, uplo, trans, n, k, alpha, A, lda, stride_A, B, ldb, stride_B, beta, C, ldc, stride_C, batch_count) +end + +function rocblas_ssymm(handle, side, uplo, m, n, alpha, A, lda, B, ldb, beta, C, ldc) + ccall((:rocblas_ssymm, librocblas_path), rocblas_status, (rocblas_handle, rocblas_side, rocblas_fill, rocblas_int, rocblas_int, Ptr{Cfloat}, Ptr{Cfloat}, rocblas_int, Ptr{Cfloat}, rocblas_int, Ptr{Cfloat}, Ptr{Cfloat}, rocblas_int), handle, side, uplo, m, n, alpha, A, lda, B, ldb, beta, C, ldc) +end + +function rocblas_dsymm(handle, side, uplo, m, n, alpha, A, lda, B, ldb, beta, C, ldc) + ccall((:rocblas_dsymm, librocblas_path), rocblas_status, (rocblas_handle, rocblas_side, rocblas_fill, rocblas_int, rocblas_int, Ptr{Cdouble}, Ptr{Cdouble}, rocblas_int, Ptr{Cdouble}, rocblas_int, Ptr{Cdouble}, Ptr{Cdouble}, rocblas_int), handle, side, uplo, m, n, alpha, A, lda, B, ldb, beta, C, ldc) +end + +function rocblas_csymm(handle, side, uplo, m, n, alpha, A, lda, B, ldb, beta, C, ldc) + ccall((:rocblas_csymm, librocblas_path), rocblas_status, (rocblas_handle, rocblas_side, rocblas_fill, rocblas_int, rocblas_int, Ptr{rocblas_float_complex}, Ptr{rocblas_float_complex}, rocblas_int, Ptr{rocblas_float_complex}, rocblas_int, Ptr{rocblas_float_complex}, Ptr{rocblas_float_complex}, rocblas_int), handle, side, uplo, m, n, alpha, A, lda, B, ldb, beta, C, ldc) +end + +function rocblas_zsymm(handle, side, uplo, m, n, alpha, A, lda, B, ldb, beta, C, ldc) + ccall((:rocblas_zsymm, librocblas_path), rocblas_status, (rocblas_handle, rocblas_side, rocblas_fill, rocblas_int, rocblas_int, Ptr{rocblas_double_complex}, Ptr{rocblas_double_complex}, rocblas_int, Ptr{rocblas_double_complex}, rocblas_int, Ptr{rocblas_double_complex}, Ptr{rocblas_double_complex}, rocblas_int), handle, side, uplo, m, n, alpha, A, lda, B, ldb, beta, C, ldc) +end + +function rocblas_ssymm_batched(handle, side, uplo, m, n, alpha, A, lda, B, ldb, beta, C, ldc, batch_count) + ccall((:rocblas_ssymm_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_side, rocblas_fill, rocblas_int, rocblas_int, Ptr{Cfloat}, Ptr{Ptr{Cfloat}}, rocblas_int, Ptr{Ptr{Cfloat}}, rocblas_int, Ptr{Cfloat}, Ptr{Ptr{Cfloat}}, rocblas_int, rocblas_int), handle, side, uplo, m, n, alpha, A, lda, B, ldb, beta, C, ldc, batch_count) +end + +function rocblas_dsymm_batched(handle, side, uplo, m, n, alpha, A, lda, B, ldb, beta, C, ldc, batch_count) + ccall((:rocblas_dsymm_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_side, rocblas_fill, rocblas_int, rocblas_int, Ptr{Cdouble}, Ptr{Ptr{Cdouble}}, rocblas_int, Ptr{Ptr{Cdouble}}, rocblas_int, Ptr{Cdouble}, Ptr{Ptr{Cdouble}}, rocblas_int, rocblas_int), handle, side, uplo, m, n, alpha, A, lda, B, ldb, beta, C, ldc, batch_count) +end + +function rocblas_csymm_batched(handle, side, uplo, m, n, alpha, A, lda, B, ldb, beta, C, ldc, batch_count) + ccall((:rocblas_csymm_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_side, rocblas_fill, rocblas_int, rocblas_int, Ptr{rocblas_float_complex}, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, Ptr{rocblas_float_complex}, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, rocblas_int), handle, side, uplo, m, n, alpha, A, lda, B, ldb, beta, C, ldc, batch_count) +end + +function rocblas_zsymm_batched(handle, side, uplo, m, n, alpha, A, lda, B, ldb, beta, C, ldc, batch_count) + ccall((:rocblas_zsymm_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_side, rocblas_fill, rocblas_int, rocblas_int, Ptr{rocblas_double_complex}, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, Ptr{rocblas_double_complex}, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, rocblas_int), handle, side, uplo, m, n, alpha, A, lda, B, ldb, beta, C, ldc, batch_count) +end + +function rocblas_ssymm_strided_batched(handle, side, uplo, m, n, alpha, A, lda, stride_A, B, ldb, stride_B, beta, C, ldc, stride_C, batch_count) + ccall((:rocblas_ssymm_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_side, rocblas_fill, rocblas_int, rocblas_int, Ptr{Cfloat}, Ptr{Cfloat}, rocblas_int, rocblas_stride, Ptr{Cfloat}, rocblas_int, rocblas_stride, Ptr{Cfloat}, Ptr{Cfloat}, rocblas_int, rocblas_stride, rocblas_int), handle, side, uplo, m, n, alpha, A, lda, stride_A, B, ldb, stride_B, beta, C, ldc, stride_C, batch_count) +end + +function rocblas_dsymm_strided_batched(handle, side, uplo, m, n, alpha, A, lda, stride_A, B, ldb, stride_B, beta, C, ldc, stride_C, batch_count) + ccall((:rocblas_dsymm_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_side, rocblas_fill, rocblas_int, rocblas_int, Ptr{Cdouble}, Ptr{Cdouble}, rocblas_int, rocblas_stride, Ptr{Cdouble}, rocblas_int, rocblas_stride, Ptr{Cdouble}, Ptr{Cdouble}, rocblas_int, rocblas_stride, rocblas_int), handle, side, uplo, m, n, alpha, A, lda, stride_A, B, ldb, stride_B, beta, C, ldc, stride_C, batch_count) +end + +function rocblas_csymm_strided_batched(handle, side, uplo, m, n, alpha, A, lda, stride_A, B, ldb, stride_B, beta, C, ldc, stride_C, batch_count) + ccall((:rocblas_csymm_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_side, rocblas_fill, rocblas_int, rocblas_int, Ptr{rocblas_float_complex}, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_float_complex}, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, rocblas_int), handle, side, uplo, m, n, alpha, A, lda, stride_A, B, ldb, stride_B, beta, C, ldc, stride_C, batch_count) +end + +function rocblas_zsymm_strided_batched(handle, side, uplo, m, n, alpha, A, lda, stride_A, B, ldb, stride_B, beta, C, ldc, stride_C, batch_count) + ccall((:rocblas_zsymm_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_side, rocblas_fill, rocblas_int, rocblas_int, Ptr{rocblas_double_complex}, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_double_complex}, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, rocblas_int), handle, side, uplo, m, n, alpha, A, lda, stride_A, B, ldb, stride_B, beta, C, ldc, stride_C, batch_count) +end + +function rocblas_ssyrk(handle, uplo, transA, n, k, alpha, A, lda, beta, C, ldc) + ccall((:rocblas_ssyrk, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_int, rocblas_int, Ptr{Cfloat}, Ptr{Cfloat}, rocblas_int, Ptr{Cfloat}, Ptr{Cfloat}, rocblas_int), handle, uplo, transA, n, k, alpha, A, lda, beta, C, ldc) +end + +function rocblas_dsyrk(handle, uplo, transA, n, k, alpha, A, lda, beta, C, ldc) + ccall((:rocblas_dsyrk, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_int, rocblas_int, Ptr{Cdouble}, Ptr{Cdouble}, rocblas_int, Ptr{Cdouble}, Ptr{Cdouble}, rocblas_int), handle, uplo, transA, n, k, alpha, A, lda, beta, C, ldc) +end + +function rocblas_csyrk(handle, uplo, transA, n, k, alpha, A, lda, beta, C, ldc) + ccall((:rocblas_csyrk, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_int, rocblas_int, Ptr{rocblas_float_complex}, Ptr{rocblas_float_complex}, rocblas_int, Ptr{rocblas_float_complex}, Ptr{rocblas_float_complex}, rocblas_int), handle, uplo, transA, n, k, alpha, A, lda, beta, C, ldc) +end + +function rocblas_zsyrk(handle, uplo, transA, n, k, alpha, A, lda, beta, C, ldc) + ccall((:rocblas_zsyrk, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_int, rocblas_int, Ptr{rocblas_double_complex}, Ptr{rocblas_double_complex}, rocblas_int, Ptr{rocblas_double_complex}, Ptr{rocblas_double_complex}, rocblas_int), handle, uplo, transA, n, k, alpha, A, lda, beta, C, ldc) +end + +function rocblas_ssyrk_batched(handle, uplo, transA, n, k, alpha, A, lda, beta, C, ldc, batch_count) + ccall((:rocblas_ssyrk_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_int, rocblas_int, Ptr{Cfloat}, Ptr{Ptr{Cfloat}}, rocblas_int, Ptr{Cfloat}, Ptr{Ptr{Cfloat}}, rocblas_int, rocblas_int), handle, uplo, transA, n, k, alpha, A, lda, beta, C, ldc, batch_count) +end + +function rocblas_dsyrk_batched(handle, uplo, transA, n, k, alpha, A, lda, beta, C, ldc, batch_count) + ccall((:rocblas_dsyrk_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_int, rocblas_int, Ptr{Cdouble}, Ptr{Ptr{Cdouble}}, rocblas_int, Ptr{Cdouble}, Ptr{Ptr{Cdouble}}, rocblas_int, rocblas_int), handle, uplo, transA, n, k, alpha, A, lda, beta, C, ldc, batch_count) +end + +function rocblas_csyrk_batched(handle, uplo, transA, n, k, alpha, A, lda, beta, C, ldc, batch_count) + ccall((:rocblas_csyrk_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_int, rocblas_int, Ptr{rocblas_float_complex}, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, Ptr{rocblas_float_complex}, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, rocblas_int), handle, uplo, transA, n, k, alpha, A, lda, beta, C, ldc, batch_count) +end + +function rocblas_zsyrk_batched(handle, uplo, transA, n, k, alpha, A, lda, beta, C, ldc, batch_count) + ccall((:rocblas_zsyrk_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_int, rocblas_int, Ptr{rocblas_double_complex}, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, Ptr{rocblas_double_complex}, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, rocblas_int), handle, uplo, transA, n, k, alpha, A, lda, beta, C, ldc, batch_count) +end + +function rocblas_ssyrk_strided_batched(handle, uplo, transA, n, k, alpha, A, lda, stride_A, beta, C, ldc, stride_C, batch_count) + ccall((:rocblas_ssyrk_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_int, rocblas_int, Ptr{Cfloat}, Ptr{Cfloat}, rocblas_int, rocblas_stride, Ptr{Cfloat}, Ptr{Cfloat}, rocblas_int, rocblas_stride, rocblas_int), handle, uplo, transA, n, k, alpha, A, lda, stride_A, beta, C, ldc, stride_C, batch_count) +end + +function rocblas_dsyrk_strided_batched(handle, uplo, transA, n, k, alpha, A, lda, stride_A, beta, C, ldc, stride_C, batch_count) + ccall((:rocblas_dsyrk_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_int, rocblas_int, Ptr{Cdouble}, Ptr{Cdouble}, rocblas_int, rocblas_stride, Ptr{Cdouble}, Ptr{Cdouble}, rocblas_int, rocblas_stride, rocblas_int), handle, uplo, transA, n, k, alpha, A, lda, stride_A, beta, C, ldc, stride_C, batch_count) +end + +function rocblas_csyrk_strided_batched(handle, uplo, transA, n, k, alpha, A, lda, stride_A, beta, C, ldc, stride_C, batch_count) + ccall((:rocblas_csyrk_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_int, rocblas_int, Ptr{rocblas_float_complex}, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_float_complex}, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, rocblas_int), handle, uplo, transA, n, k, alpha, A, lda, stride_A, beta, C, ldc, stride_C, batch_count) +end + +function rocblas_zsyrk_strided_batched(handle, uplo, transA, n, k, alpha, A, lda, stride_A, beta, C, ldc, stride_C, batch_count) + ccall((:rocblas_zsyrk_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_int, rocblas_int, Ptr{rocblas_double_complex}, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_double_complex}, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, rocblas_int), handle, uplo, transA, n, k, alpha, A, lda, stride_A, beta, C, ldc, stride_C, batch_count) +end + +function rocblas_ssyr2k(handle, uplo, trans, n, k, alpha, A, lda, B, ldb, beta, C, ldc) + ccall((:rocblas_ssyr2k, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_int, rocblas_int, Ptr{Cfloat}, Ptr{Cfloat}, rocblas_int, Ptr{Cfloat}, rocblas_int, Ptr{Cfloat}, Ptr{Cfloat}, rocblas_int), handle, uplo, trans, n, k, alpha, A, lda, B, ldb, beta, C, ldc) +end + +function rocblas_dsyr2k(handle, uplo, trans, n, k, alpha, A, lda, B, ldb, beta, C, ldc) + ccall((:rocblas_dsyr2k, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_int, rocblas_int, Ptr{Cdouble}, Ptr{Cdouble}, rocblas_int, Ptr{Cdouble}, rocblas_int, Ptr{Cdouble}, Ptr{Cdouble}, rocblas_int), handle, uplo, trans, n, k, alpha, A, lda, B, ldb, beta, C, ldc) +end + +function rocblas_csyr2k(handle, uplo, trans, n, k, alpha, A, lda, B, ldb, beta, C, ldc) + ccall((:rocblas_csyr2k, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_int, rocblas_int, Ptr{rocblas_float_complex}, Ptr{rocblas_float_complex}, rocblas_int, Ptr{rocblas_float_complex}, rocblas_int, Ptr{rocblas_float_complex}, Ptr{rocblas_float_complex}, rocblas_int), handle, uplo, trans, n, k, alpha, A, lda, B, ldb, beta, C, ldc) +end + +function rocblas_zsyr2k(handle, uplo, trans, n, k, alpha, A, lda, B, ldb, beta, C, ldc) + ccall((:rocblas_zsyr2k, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_int, rocblas_int, Ptr{rocblas_double_complex}, Ptr{rocblas_double_complex}, rocblas_int, Ptr{rocblas_double_complex}, rocblas_int, Ptr{rocblas_double_complex}, Ptr{rocblas_double_complex}, rocblas_int), handle, uplo, trans, n, k, alpha, A, lda, B, ldb, beta, C, ldc) +end + +function rocblas_ssyr2k_batched(handle, uplo, trans, n, k, alpha, A, lda, B, ldb, beta, C, ldc, batch_count) + ccall((:rocblas_ssyr2k_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_int, rocblas_int, Ptr{Cfloat}, Ptr{Ptr{Cfloat}}, rocblas_int, Ptr{Ptr{Cfloat}}, rocblas_int, Ptr{Cfloat}, Ptr{Ptr{Cfloat}}, rocblas_int, rocblas_int), handle, uplo, trans, n, k, alpha, A, lda, B, ldb, beta, C, ldc, batch_count) +end + +function rocblas_dsyr2k_batched(handle, uplo, trans, n, k, alpha, A, lda, B, ldb, beta, C, ldc, batch_count) + ccall((:rocblas_dsyr2k_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_int, rocblas_int, Ptr{Cdouble}, Ptr{Ptr{Cdouble}}, rocblas_int, Ptr{Ptr{Cdouble}}, rocblas_int, Ptr{Cdouble}, Ptr{Ptr{Cdouble}}, rocblas_int, rocblas_int), handle, uplo, trans, n, k, alpha, A, lda, B, ldb, beta, C, ldc, batch_count) +end + +function rocblas_csyr2k_batched(handle, uplo, trans, n, k, alpha, A, lda, B, ldb, beta, C, ldc, batch_count) + ccall((:rocblas_csyr2k_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_int, rocblas_int, Ptr{rocblas_float_complex}, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, Ptr{rocblas_float_complex}, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, rocblas_int), handle, uplo, trans, n, k, alpha, A, lda, B, ldb, beta, C, ldc, batch_count) +end + +function rocblas_zsyr2k_batched(handle, uplo, trans, n, k, alpha, A, lda, B, ldb, beta, C, ldc, batch_count) + ccall((:rocblas_zsyr2k_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_int, rocblas_int, Ptr{rocblas_double_complex}, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, Ptr{rocblas_double_complex}, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, rocblas_int), handle, uplo, trans, n, k, alpha, A, lda, B, ldb, beta, C, ldc, batch_count) +end + +function rocblas_ssyr2k_strided_batched(handle, uplo, trans, n, k, alpha, A, lda, stride_A, B, ldb, stride_B, beta, C, ldc, stride_C, batch_count) + ccall((:rocblas_ssyr2k_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_int, rocblas_int, Ptr{Cfloat}, Ptr{Cfloat}, rocblas_int, rocblas_stride, Ptr{Cfloat}, rocblas_int, rocblas_stride, Ptr{Cfloat}, Ptr{Cfloat}, rocblas_int, rocblas_stride, rocblas_int), handle, uplo, trans, n, k, alpha, A, lda, stride_A, B, ldb, stride_B, beta, C, ldc, stride_C, batch_count) +end + +function rocblas_dsyr2k_strided_batched(handle, uplo, trans, n, k, alpha, A, lda, stride_A, B, ldb, stride_B, beta, C, ldc, stride_C, batch_count) + ccall((:rocblas_dsyr2k_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_int, rocblas_int, Ptr{Cdouble}, Ptr{Cdouble}, rocblas_int, rocblas_stride, Ptr{Cdouble}, rocblas_int, rocblas_stride, Ptr{Cdouble}, Ptr{Cdouble}, rocblas_int, rocblas_stride, rocblas_int), handle, uplo, trans, n, k, alpha, A, lda, stride_A, B, ldb, stride_B, beta, C, ldc, stride_C, batch_count) +end + +function rocblas_csyr2k_strided_batched(handle, uplo, trans, n, k, alpha, A, lda, stride_A, B, ldb, stride_B, beta, C, ldc, stride_C, batch_count) + ccall((:rocblas_csyr2k_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_int, rocblas_int, Ptr{rocblas_float_complex}, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_float_complex}, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, rocblas_int), handle, uplo, trans, n, k, alpha, A, lda, stride_A, B, ldb, stride_B, beta, C, ldc, stride_C, batch_count) +end + +function rocblas_zsyr2k_strided_batched(handle, uplo, trans, n, k, alpha, A, lda, stride_A, B, ldb, stride_B, beta, C, ldc, stride_C, batch_count) + ccall((:rocblas_zsyr2k_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_int, rocblas_int, Ptr{rocblas_double_complex}, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_double_complex}, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, rocblas_int), handle, uplo, trans, n, k, alpha, A, lda, stride_A, B, ldb, stride_B, beta, C, ldc, stride_C, batch_count) +end + +function rocblas_ssyrkx(handle, uplo, trans, n, k, alpha, A, lda, B, ldb, beta, C, ldc) + ccall((:rocblas_ssyrkx, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_int, rocblas_int, Ptr{Cfloat}, Ptr{Cfloat}, rocblas_int, Ptr{Cfloat}, rocblas_int, Ptr{Cfloat}, Ptr{Cfloat}, rocblas_int), handle, uplo, trans, n, k, alpha, A, lda, B, ldb, beta, C, ldc) +end + +function rocblas_dsyrkx(handle, uplo, trans, n, k, alpha, A, lda, B, ldb, beta, C, ldc) + ccall((:rocblas_dsyrkx, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_int, rocblas_int, Ptr{Cdouble}, Ptr{Cdouble}, rocblas_int, Ptr{Cdouble}, rocblas_int, Ptr{Cdouble}, Ptr{Cdouble}, rocblas_int), handle, uplo, trans, n, k, alpha, A, lda, B, ldb, beta, C, ldc) +end + +function rocblas_csyrkx(handle, uplo, trans, n, k, alpha, A, lda, B, ldb, beta, C, ldc) + ccall((:rocblas_csyrkx, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_int, rocblas_int, Ptr{rocblas_float_complex}, Ptr{rocblas_float_complex}, rocblas_int, Ptr{rocblas_float_complex}, rocblas_int, Ptr{rocblas_float_complex}, Ptr{rocblas_float_complex}, rocblas_int), handle, uplo, trans, n, k, alpha, A, lda, B, ldb, beta, C, ldc) +end + +function rocblas_zsyrkx(handle, uplo, trans, n, k, alpha, A, lda, B, ldb, beta, C, ldc) + ccall((:rocblas_zsyrkx, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_int, rocblas_int, Ptr{rocblas_double_complex}, Ptr{rocblas_double_complex}, rocblas_int, Ptr{rocblas_double_complex}, rocblas_int, Ptr{rocblas_double_complex}, Ptr{rocblas_double_complex}, rocblas_int), handle, uplo, trans, n, k, alpha, A, lda, B, ldb, beta, C, ldc) +end + +function rocblas_ssyrkx_batched(handle, uplo, trans, n, k, alpha, A, lda, B, ldb, beta, C, ldc, batch_count) + ccall((:rocblas_ssyrkx_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_int, rocblas_int, Ptr{Cfloat}, Ptr{Ptr{Cfloat}}, rocblas_int, Ptr{Ptr{Cfloat}}, rocblas_int, Ptr{Cfloat}, Ptr{Ptr{Cfloat}}, rocblas_int, rocblas_int), handle, uplo, trans, n, k, alpha, A, lda, B, ldb, beta, C, ldc, batch_count) +end + +function rocblas_dsyrkx_batched(handle, uplo, trans, n, k, alpha, A, lda, B, ldb, beta, C, ldc, batch_count) + ccall((:rocblas_dsyrkx_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_int, rocblas_int, Ptr{Cdouble}, Ptr{Ptr{Cdouble}}, rocblas_int, Ptr{Ptr{Cdouble}}, rocblas_int, Ptr{Cdouble}, Ptr{Ptr{Cdouble}}, rocblas_int, rocblas_int), handle, uplo, trans, n, k, alpha, A, lda, B, ldb, beta, C, ldc, batch_count) +end + +function rocblas_csyrkx_batched(handle, uplo, trans, n, k, alpha, A, lda, B, ldb, beta, C, ldc, batch_count) + ccall((:rocblas_csyrkx_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_int, rocblas_int, Ptr{rocblas_float_complex}, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, Ptr{rocblas_float_complex}, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, rocblas_int), handle, uplo, trans, n, k, alpha, A, lda, B, ldb, beta, C, ldc, batch_count) +end + +function rocblas_zsyrkx_batched(handle, uplo, trans, n, k, alpha, A, lda, B, ldb, beta, C, ldc, batch_count) + ccall((:rocblas_zsyrkx_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_int, rocblas_int, Ptr{rocblas_double_complex}, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, Ptr{rocblas_double_complex}, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, rocblas_int), handle, uplo, trans, n, k, alpha, A, lda, B, ldb, beta, C, ldc, batch_count) +end + +function rocblas_ssyrkx_strided_batched(handle, uplo, trans, n, k, alpha, A, lda, stride_A, B, ldb, stride_B, beta, C, ldc, stride_C, batch_count) + ccall((:rocblas_ssyrkx_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_int, rocblas_int, Ptr{Cfloat}, Ptr{Cfloat}, rocblas_int, rocblas_stride, Ptr{Cfloat}, rocblas_int, rocblas_stride, Ptr{Cfloat}, Ptr{Cfloat}, rocblas_int, rocblas_stride, rocblas_int), handle, uplo, trans, n, k, alpha, A, lda, stride_A, B, ldb, stride_B, beta, C, ldc, stride_C, batch_count) +end + +function rocblas_dsyrkx_strided_batched(handle, uplo, trans, n, k, alpha, A, lda, stride_A, B, ldb, stride_B, beta, C, ldc, stride_C, batch_count) + ccall((:rocblas_dsyrkx_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_int, rocblas_int, Ptr{Cdouble}, Ptr{Cdouble}, rocblas_int, rocblas_stride, Ptr{Cdouble}, rocblas_int, rocblas_stride, Ptr{Cdouble}, Ptr{Cdouble}, rocblas_int, rocblas_stride, rocblas_int), handle, uplo, trans, n, k, alpha, A, lda, stride_A, B, ldb, stride_B, beta, C, ldc, stride_C, batch_count) +end + +function rocblas_csyrkx_strided_batched(handle, uplo, trans, n, k, alpha, A, lda, stride_A, B, ldb, stride_B, beta, C, ldc, stride_C, batch_count) + ccall((:rocblas_csyrkx_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_int, rocblas_int, Ptr{rocblas_float_complex}, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_float_complex}, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, rocblas_int), handle, uplo, trans, n, k, alpha, A, lda, stride_A, B, ldb, stride_B, beta, C, ldc, stride_C, batch_count) +end + +function rocblas_zsyrkx_strided_batched(handle, uplo, trans, n, k, alpha, A, lda, stride_A, B, ldb, stride_B, beta, C, ldc, stride_C, batch_count) + ccall((:rocblas_zsyrkx_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_operation, rocblas_int, rocblas_int, Ptr{rocblas_double_complex}, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_double_complex}, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, rocblas_int), handle, uplo, trans, n, k, alpha, A, lda, stride_A, B, ldb, stride_B, beta, C, ldc, stride_C, batch_count) +end + +function rocblas_strmm(handle, side, uplo, transA, diag, m, n, alpha, A, lda, B, ldb) + ccall((:rocblas_strmm, librocblas_path), rocblas_status, (rocblas_handle, rocblas_side, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, rocblas_int, Ptr{Cfloat}, Ptr{Cfloat}, rocblas_int, Ptr{Cfloat}, rocblas_int), handle, side, uplo, transA, diag, m, n, alpha, A, lda, B, ldb) +end + +function rocblas_dtrmm(handle, side, uplo, transA, diag, m, n, alpha, A, lda, B, ldb) + ccall((:rocblas_dtrmm, librocblas_path), rocblas_status, (rocblas_handle, rocblas_side, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, rocblas_int, Ptr{Cdouble}, Ptr{Cdouble}, rocblas_int, Ptr{Cdouble}, rocblas_int), handle, side, uplo, transA, diag, m, n, alpha, A, lda, B, ldb) +end + +function rocblas_ctrmm(handle, side, uplo, transA, diag, m, n, alpha, A, lda, B, ldb) + ccall((:rocblas_ctrmm, librocblas_path), rocblas_status, (rocblas_handle, rocblas_side, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, rocblas_int, Ptr{rocblas_float_complex}, Ptr{rocblas_float_complex}, rocblas_int, Ptr{rocblas_float_complex}, rocblas_int), handle, side, uplo, transA, diag, m, n, alpha, A, lda, B, ldb) +end + +function rocblas_ztrmm(handle, side, uplo, transA, diag, m, n, alpha, A, lda, B, ldb) + ccall((:rocblas_ztrmm, librocblas_path), rocblas_status, (rocblas_handle, rocblas_side, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, rocblas_int, Ptr{rocblas_double_complex}, Ptr{rocblas_double_complex}, rocblas_int, Ptr{rocblas_double_complex}, rocblas_int), handle, side, uplo, transA, diag, m, n, alpha, A, lda, B, ldb) +end + +function rocblas_strmm_batched(handle, side, uplo, transA, diag, m, n, alpha, A, lda, B, ldb, batch_count) + ccall((:rocblas_strmm_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_side, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, rocblas_int, Ptr{Cfloat}, Ptr{Ptr{Cfloat}}, rocblas_int, Ptr{Ptr{Cfloat}}, rocblas_int, rocblas_int), handle, side, uplo, transA, diag, m, n, alpha, A, lda, B, ldb, batch_count) +end + +function rocblas_dtrmm_batched(handle, side, uplo, transA, diag, m, n, alpha, A, lda, B, ldb, batch_count) + ccall((:rocblas_dtrmm_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_side, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, rocblas_int, Ptr{Cdouble}, Ptr{Ptr{Cdouble}}, rocblas_int, Ptr{Ptr{Cdouble}}, rocblas_int, rocblas_int), handle, side, uplo, transA, diag, m, n, alpha, A, lda, B, ldb, batch_count) +end + +function rocblas_ctrmm_batched(handle, side, uplo, transA, diag, m, n, alpha, A, lda, B, ldb, batch_count) + ccall((:rocblas_ctrmm_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_side, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, rocblas_int, Ptr{rocblas_float_complex}, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, rocblas_int), handle, side, uplo, transA, diag, m, n, alpha, A, lda, B, ldb, batch_count) +end + +function rocblas_ztrmm_batched(handle, side, uplo, transA, diag, m, n, alpha, A, lda, B, ldb, batch_count) + ccall((:rocblas_ztrmm_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_side, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, rocblas_int, Ptr{rocblas_double_complex}, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, rocblas_int), handle, side, uplo, transA, diag, m, n, alpha, A, lda, B, ldb, batch_count) +end + +function rocblas_strmm_strided_batched(handle, side, uplo, transA, diag, m, n, alpha, A, lda, stride_A, B, ldb, stride_B, batch_count) + ccall((:rocblas_strmm_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_side, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, rocblas_int, Ptr{Cfloat}, Ptr{Cfloat}, rocblas_int, rocblas_stride, Ptr{Cfloat}, rocblas_int, rocblas_stride, rocblas_int), handle, side, uplo, transA, diag, m, n, alpha, A, lda, stride_A, B, ldb, stride_B, batch_count) +end + +function rocblas_dtrmm_strided_batched(handle, side, uplo, transA, diag, m, n, alpha, A, lda, stride_A, B, ldb, stride_B, batch_count) + ccall((:rocblas_dtrmm_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_side, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, rocblas_int, Ptr{Cdouble}, Ptr{Cdouble}, rocblas_int, rocblas_stride, Ptr{Cdouble}, rocblas_int, rocblas_stride, rocblas_int), handle, side, uplo, transA, diag, m, n, alpha, A, lda, stride_A, B, ldb, stride_B, batch_count) +end + +function rocblas_ctrmm_strided_batched(handle, side, uplo, transA, diag, m, n, alpha, A, lda, stride_A, B, ldb, stride_B, batch_count) + ccall((:rocblas_ctrmm_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_side, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, rocblas_int, Ptr{rocblas_float_complex}, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, rocblas_int), handle, side, uplo, transA, diag, m, n, alpha, A, lda, stride_A, B, ldb, stride_B, batch_count) +end + +function rocblas_ztrmm_strided_batched(handle, side, uplo, transA, diag, m, n, alpha, A, lda, stride_A, B, ldb, stride_B, batch_count) + ccall((:rocblas_ztrmm_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_side, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, rocblas_int, Ptr{rocblas_double_complex}, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, rocblas_int), handle, side, uplo, transA, diag, m, n, alpha, A, lda, stride_A, B, ldb, stride_B, batch_count) +end + +function rocblas_strmm_outofplace(handle, side, uplo, transA, diag, m, n, alpha, A, lda, B, ldb, C, ldc) + ccall((:rocblas_strmm_outofplace, librocblas_path), rocblas_status, (rocblas_handle, rocblas_side, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, rocblas_int, Ptr{Cfloat}, Ptr{Cfloat}, rocblas_int, Ptr{Cfloat}, rocblas_int, Ptr{Cfloat}, rocblas_int), handle, side, uplo, transA, diag, m, n, alpha, A, lda, B, ldb, C, ldc) +end + +function rocblas_dtrmm_outofplace(handle, side, uplo, transA, diag, m, n, alpha, A, lda, B, ldb, C, ldc) + ccall((:rocblas_dtrmm_outofplace, librocblas_path), rocblas_status, (rocblas_handle, rocblas_side, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, rocblas_int, Ptr{Cdouble}, Ptr{Cdouble}, rocblas_int, Ptr{Cdouble}, rocblas_int, Ptr{Cdouble}, rocblas_int), handle, side, uplo, transA, diag, m, n, alpha, A, lda, B, ldb, C, ldc) +end + +function rocblas_ctrmm_outofplace(handle, side, uplo, transA, diag, m, n, alpha, A, lda, B, ldb, C, ldc) + ccall((:rocblas_ctrmm_outofplace, librocblas_path), rocblas_status, (rocblas_handle, rocblas_side, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, rocblas_int, Ptr{rocblas_float_complex}, Ptr{rocblas_float_complex}, rocblas_int, Ptr{rocblas_float_complex}, rocblas_int, Ptr{rocblas_float_complex}, rocblas_int), handle, side, uplo, transA, diag, m, n, alpha, A, lda, B, ldb, C, ldc) +end + +function rocblas_ztrmm_outofplace(handle, side, uplo, transA, diag, m, n, alpha, A, lda, B, ldb, C, ldc) + ccall((:rocblas_ztrmm_outofplace, librocblas_path), rocblas_status, (rocblas_handle, rocblas_side, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, rocblas_int, Ptr{rocblas_double_complex}, Ptr{rocblas_double_complex}, rocblas_int, Ptr{rocblas_double_complex}, rocblas_int, Ptr{rocblas_double_complex}, rocblas_int), handle, side, uplo, transA, diag, m, n, alpha, A, lda, B, ldb, C, ldc) +end + +function rocblas_strmm_outofplace_batched(handle, side, uplo, transA, diag, m, n, alpha, A, lda, B, ldb, C, ldc, batch_count) + ccall((:rocblas_strmm_outofplace_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_side, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, rocblas_int, Ptr{Cfloat}, Ptr{Ptr{Cfloat}}, rocblas_int, Ptr{Ptr{Cfloat}}, rocblas_int, Ptr{Ptr{Cfloat}}, rocblas_int, rocblas_int), handle, side, uplo, transA, diag, m, n, alpha, A, lda, B, ldb, C, ldc, batch_count) +end + +function rocblas_dtrmm_outofplace_batched(handle, side, uplo, transA, diag, m, n, alpha, A, lda, B, ldb, C, ldc, batch_count) + ccall((:rocblas_dtrmm_outofplace_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_side, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, rocblas_int, Ptr{Cdouble}, Ptr{Ptr{Cdouble}}, rocblas_int, Ptr{Ptr{Cdouble}}, rocblas_int, Ptr{Ptr{Cdouble}}, rocblas_int, rocblas_int), handle, side, uplo, transA, diag, m, n, alpha, A, lda, B, ldb, C, ldc, batch_count) +end + +function rocblas_ctrmm_outofplace_batched(handle, side, uplo, transA, diag, m, n, alpha, A, lda, B, ldb, C, ldc, batch_count) + ccall((:rocblas_ctrmm_outofplace_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_side, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, rocblas_int, Ptr{rocblas_float_complex}, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, rocblas_int), handle, side, uplo, transA, diag, m, n, alpha, A, lda, B, ldb, C, ldc, batch_count) +end + +function rocblas_ztrmm_outofplace_batched(handle, side, uplo, transA, diag, m, n, alpha, A, lda, B, ldb, C, ldc, batch_count) + ccall((:rocblas_ztrmm_outofplace_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_side, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, rocblas_int, Ptr{rocblas_double_complex}, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, rocblas_int), handle, side, uplo, transA, diag, m, n, alpha, A, lda, B, ldb, C, ldc, batch_count) +end + +function rocblas_strmm_outofplace_strided_batched(handle, side, uplo, transA, diag, m, n, alpha, A, lda, stride_A, B, ldb, stride_B, C, ldc, stride_C, batch_count) + ccall((:rocblas_strmm_outofplace_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_side, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, rocblas_int, Ptr{Cfloat}, Ptr{Cfloat}, rocblas_int, rocblas_stride, Ptr{Cfloat}, rocblas_int, rocblas_stride, Ptr{Cfloat}, rocblas_int, rocblas_stride, rocblas_int), handle, side, uplo, transA, diag, m, n, alpha, A, lda, stride_A, B, ldb, stride_B, C, ldc, stride_C, batch_count) +end + +function rocblas_dtrmm_outofplace_strided_batched(handle, side, uplo, transA, diag, m, n, alpha, A, lda, stride_A, B, ldb, stride_B, C, ldc, stride_C, batch_count) + ccall((:rocblas_dtrmm_outofplace_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_side, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, rocblas_int, Ptr{Cdouble}, Ptr{Cdouble}, rocblas_int, rocblas_stride, Ptr{Cdouble}, rocblas_int, rocblas_stride, Ptr{Cdouble}, rocblas_int, rocblas_stride, rocblas_int), handle, side, uplo, transA, diag, m, n, alpha, A, lda, stride_A, B, ldb, stride_B, C, ldc, stride_C, batch_count) +end + +function rocblas_ctrmm_outofplace_strided_batched(handle, side, uplo, transA, diag, m, n, alpha, A, lda, stride_A, B, ldb, stride_B, C, ldc, stride_C, batch_count) + ccall((:rocblas_ctrmm_outofplace_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_side, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, rocblas_int, Ptr{rocblas_float_complex}, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, rocblas_int), handle, side, uplo, transA, diag, m, n, alpha, A, lda, stride_A, B, ldb, stride_B, C, ldc, stride_C, batch_count) +end + +function rocblas_ztrmm_outofplace_strided_batched(handle, side, uplo, transA, diag, m, n, alpha, A, lda, stride_A, B, ldb, stride_B, C, ldc, stride_C, batch_count) + ccall((:rocblas_ztrmm_outofplace_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_side, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, rocblas_int, Ptr{rocblas_double_complex}, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, rocblas_int), handle, side, uplo, transA, diag, m, n, alpha, A, lda, stride_A, B, ldb, stride_B, C, ldc, stride_C, batch_count) +end + +function rocblas_strtri(handle, uplo, diag, n, A, lda, invA, ldinvA) + ccall((:rocblas_strtri, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_diagonal, rocblas_int, Ptr{Cfloat}, rocblas_int, Ptr{Cfloat}, rocblas_int), handle, uplo, diag, n, A, lda, invA, ldinvA) +end + +function rocblas_dtrtri(handle, uplo, diag, n, A, lda, invA, ldinvA) + ccall((:rocblas_dtrtri, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_diagonal, rocblas_int, Ptr{Cdouble}, rocblas_int, Ptr{Cdouble}, rocblas_int), handle, uplo, diag, n, A, lda, invA, ldinvA) +end + +function rocblas_ctrtri(handle, uplo, diag, n, A, lda, invA, ldinvA) + ccall((:rocblas_ctrtri, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_diagonal, rocblas_int, Ptr{rocblas_float_complex}, rocblas_int, Ptr{rocblas_float_complex}, rocblas_int), handle, uplo, diag, n, A, lda, invA, ldinvA) +end + +function rocblas_ztrtri(handle, uplo, diag, n, A, lda, invA, ldinvA) + ccall((:rocblas_ztrtri, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_diagonal, rocblas_int, Ptr{rocblas_double_complex}, rocblas_int, Ptr{rocblas_double_complex}, rocblas_int), handle, uplo, diag, n, A, lda, invA, ldinvA) +end + +function rocblas_strtri_batched(handle, uplo, diag, n, A, lda, invA, ldinvA, batch_count) + ccall((:rocblas_strtri_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_diagonal, rocblas_int, Ptr{Ptr{Cfloat}}, rocblas_int, Ptr{Ptr{Cfloat}}, rocblas_int, rocblas_int), handle, uplo, diag, n, A, lda, invA, ldinvA, batch_count) +end + +function rocblas_dtrtri_batched(handle, uplo, diag, n, A, lda, invA, ldinvA, batch_count) + ccall((:rocblas_dtrtri_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_diagonal, rocblas_int, Ptr{Ptr{Cdouble}}, rocblas_int, Ptr{Ptr{Cdouble}}, rocblas_int, rocblas_int), handle, uplo, diag, n, A, lda, invA, ldinvA, batch_count) +end + +function rocblas_ctrtri_batched(handle, uplo, diag, n, A, lda, invA, ldinvA, batch_count) + ccall((:rocblas_ctrtri_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_diagonal, rocblas_int, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, rocblas_int), handle, uplo, diag, n, A, lda, invA, ldinvA, batch_count) +end + +function rocblas_ztrtri_batched(handle, uplo, diag, n, A, lda, invA, ldinvA, batch_count) + ccall((:rocblas_ztrtri_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_diagonal, rocblas_int, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, rocblas_int), handle, uplo, diag, n, A, lda, invA, ldinvA, batch_count) +end + +function rocblas_strtri_strided_batched(handle, uplo, diag, n, A, lda, stride_a, invA, ldinvA, stride_invA, batch_count) + ccall((:rocblas_strtri_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_diagonal, rocblas_int, Ptr{Cfloat}, rocblas_int, rocblas_stride, Ptr{Cfloat}, rocblas_int, rocblas_stride, rocblas_int), handle, uplo, diag, n, A, lda, stride_a, invA, ldinvA, stride_invA, batch_count) +end + +function rocblas_dtrtri_strided_batched(handle, uplo, diag, n, A, lda, stride_a, invA, ldinvA, stride_invA, batch_count) + ccall((:rocblas_dtrtri_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_diagonal, rocblas_int, Ptr{Cdouble}, rocblas_int, rocblas_stride, Ptr{Cdouble}, rocblas_int, rocblas_stride, rocblas_int), handle, uplo, diag, n, A, lda, stride_a, invA, ldinvA, stride_invA, batch_count) +end + +function rocblas_ctrtri_strided_batched(handle, uplo, diag, n, A, lda, stride_a, invA, ldinvA, stride_invA, batch_count) + ccall((:rocblas_ctrtri_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_diagonal, rocblas_int, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, rocblas_int), handle, uplo, diag, n, A, lda, stride_a, invA, ldinvA, stride_invA, batch_count) +end + +function rocblas_ztrtri_strided_batched(handle, uplo, diag, n, A, lda, stride_a, invA, ldinvA, stride_invA, batch_count) + ccall((:rocblas_ztrtri_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_fill, rocblas_diagonal, rocblas_int, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, rocblas_int), handle, uplo, diag, n, A, lda, stride_a, invA, ldinvA, stride_invA, batch_count) +end + +function rocblas_strsm(handle, side, uplo, transA, diag, m, n, alpha, A, lda, B, ldb) + ccall((:rocblas_strsm, librocblas_path), rocblas_status, (rocblas_handle, rocblas_side, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, rocblas_int, Ptr{Cfloat}, Ptr{Cfloat}, rocblas_int, Ptr{Cfloat}, rocblas_int), handle, side, uplo, transA, diag, m, n, alpha, A, lda, B, ldb) +end + +function rocblas_dtrsm(handle, side, uplo, transA, diag, m, n, alpha, A, lda, B, ldb) + ccall((:rocblas_dtrsm, librocblas_path), rocblas_status, (rocblas_handle, rocblas_side, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, rocblas_int, Ptr{Cdouble}, Ptr{Cdouble}, rocblas_int, Ptr{Cdouble}, rocblas_int), handle, side, uplo, transA, diag, m, n, alpha, A, lda, B, ldb) +end + +function rocblas_ctrsm(handle, side, uplo, transA, diag, m, n, alpha, A, lda, B, ldb) + ccall((:rocblas_ctrsm, librocblas_path), rocblas_status, (rocblas_handle, rocblas_side, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, rocblas_int, Ptr{rocblas_float_complex}, Ptr{rocblas_float_complex}, rocblas_int, Ptr{rocblas_float_complex}, rocblas_int), handle, side, uplo, transA, diag, m, n, alpha, A, lda, B, ldb) +end + +function rocblas_ztrsm(handle, side, uplo, transA, diag, m, n, alpha, A, lda, B, ldb) + ccall((:rocblas_ztrsm, librocblas_path), rocblas_status, (rocblas_handle, rocblas_side, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, rocblas_int, Ptr{rocblas_double_complex}, Ptr{rocblas_double_complex}, rocblas_int, Ptr{rocblas_double_complex}, rocblas_int), handle, side, uplo, transA, diag, m, n, alpha, A, lda, B, ldb) +end + +function rocblas_strsm_batched(handle, side, uplo, transA, diag, m, n, alpha, A, lda, B, ldb, batch_count) + ccall((:rocblas_strsm_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_side, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, rocblas_int, Ptr{Cfloat}, Ptr{Ptr{Cfloat}}, rocblas_int, Ptr{Ptr{Cfloat}}, rocblas_int, rocblas_int), handle, side, uplo, transA, diag, m, n, alpha, A, lda, B, ldb, batch_count) +end + +function rocblas_dtrsm_batched(handle, side, uplo, transA, diag, m, n, alpha, A, lda, B, ldb, batch_count) + ccall((:rocblas_dtrsm_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_side, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, rocblas_int, Ptr{Cdouble}, Ptr{Ptr{Cdouble}}, rocblas_int, Ptr{Ptr{Cdouble}}, rocblas_int, rocblas_int), handle, side, uplo, transA, diag, m, n, alpha, A, lda, B, ldb, batch_count) +end + +function rocblas_ctrsm_batched(handle, side, uplo, transA, diag, m, n, alpha, A, lda, B, ldb, batch_count) + ccall((:rocblas_ctrsm_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_side, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, rocblas_int, Ptr{rocblas_float_complex}, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, rocblas_int), handle, side, uplo, transA, diag, m, n, alpha, A, lda, B, ldb, batch_count) +end + +function rocblas_ztrsm_batched(handle, side, uplo, transA, diag, m, n, alpha, A, lda, B, ldb, batch_count) + ccall((:rocblas_ztrsm_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_side, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, rocblas_int, Ptr{rocblas_double_complex}, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, rocblas_int), handle, side, uplo, transA, diag, m, n, alpha, A, lda, B, ldb, batch_count) +end + +function rocblas_strsm_strided_batched(handle, side, uplo, transA, diag, m, n, alpha, A, lda, stride_a, B, ldb, stride_b, batch_count) + ccall((:rocblas_strsm_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_side, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, rocblas_int, Ptr{Cfloat}, Ptr{Cfloat}, rocblas_int, rocblas_stride, Ptr{Cfloat}, rocblas_int, rocblas_stride, rocblas_int), handle, side, uplo, transA, diag, m, n, alpha, A, lda, stride_a, B, ldb, stride_b, batch_count) +end + +function rocblas_dtrsm_strided_batched(handle, side, uplo, transA, diag, m, n, alpha, A, lda, stride_a, B, ldb, stride_b, batch_count) + ccall((:rocblas_dtrsm_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_side, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, rocblas_int, Ptr{Cdouble}, Ptr{Cdouble}, rocblas_int, rocblas_stride, Ptr{Cdouble}, rocblas_int, rocblas_stride, rocblas_int), handle, side, uplo, transA, diag, m, n, alpha, A, lda, stride_a, B, ldb, stride_b, batch_count) +end + +function rocblas_ctrsm_strided_batched(handle, side, uplo, transA, diag, m, n, alpha, A, lda, stride_a, B, ldb, stride_b, batch_count) + ccall((:rocblas_ctrsm_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_side, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, rocblas_int, Ptr{rocblas_float_complex}, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, rocblas_int), handle, side, uplo, transA, diag, m, n, alpha, A, lda, stride_a, B, ldb, stride_b, batch_count) +end + +function rocblas_ztrsm_strided_batched(handle, side, uplo, transA, diag, m, n, alpha, A, lda, stride_a, B, ldb, stride_b, batch_count) + ccall((:rocblas_ztrsm_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_side, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, rocblas_int, Ptr{rocblas_double_complex}, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, rocblas_int), handle, side, uplo, transA, diag, m, n, alpha, A, lda, stride_a, B, ldb, stride_b, batch_count) +end + +function rocblas_sgemm(handle, transA, transB, m, n, k, alpha, A, lda, B, ldb, beta, C, ldc) + ccall((:rocblas_sgemm, librocblas_path), rocblas_status, (rocblas_handle, rocblas_operation, rocblas_operation, rocblas_int, rocblas_int, rocblas_int, Ptr{Cfloat}, Ptr{Cfloat}, rocblas_int, Ptr{Cfloat}, rocblas_int, Ptr{Cfloat}, Ptr{Cfloat}, rocblas_int), handle, transA, transB, m, n, k, alpha, A, lda, B, ldb, beta, C, ldc) +end + +function rocblas_dgemm(handle, transA, transB, m, n, k, alpha, A, lda, B, ldb, beta, C, ldc) + ccall((:rocblas_dgemm, librocblas_path), rocblas_status, (rocblas_handle, rocblas_operation, rocblas_operation, rocblas_int, rocblas_int, rocblas_int, Ptr{Cdouble}, Ptr{Cdouble}, rocblas_int, Ptr{Cdouble}, rocblas_int, Ptr{Cdouble}, Ptr{Cdouble}, rocblas_int), handle, transA, transB, m, n, k, alpha, A, lda, B, ldb, beta, C, ldc) +end + +function rocblas_hgemm(handle, transA, transB, m, n, k, alpha, A, lda, B, ldb, beta, C, ldc) + ccall((:rocblas_hgemm, librocblas_path), rocblas_status, (rocblas_handle, rocblas_operation, rocblas_operation, rocblas_int, rocblas_int, rocblas_int, Ptr{rocblas_half}, Ptr{rocblas_half}, rocblas_int, Ptr{rocblas_half}, rocblas_int, Ptr{rocblas_half}, Ptr{rocblas_half}, rocblas_int), handle, transA, transB, m, n, k, alpha, A, lda, B, ldb, beta, C, ldc) +end + +function rocblas_cgemm(handle, transA, transB, m, n, k, alpha, A, lda, B, ldb, beta, C, ldc) + ccall((:rocblas_cgemm, librocblas_path), rocblas_status, (rocblas_handle, rocblas_operation, rocblas_operation, rocblas_int, rocblas_int, rocblas_int, Ptr{rocblas_float_complex}, Ptr{rocblas_float_complex}, rocblas_int, Ptr{rocblas_float_complex}, rocblas_int, Ptr{rocblas_float_complex}, Ptr{rocblas_float_complex}, rocblas_int), handle, transA, transB, m, n, k, alpha, A, lda, B, ldb, beta, C, ldc) +end + +function rocblas_zgemm(handle, transA, transB, m, n, k, alpha, A, lda, B, ldb, beta, C, ldc) + ccall((:rocblas_zgemm, librocblas_path), rocblas_status, (rocblas_handle, rocblas_operation, rocblas_operation, rocblas_int, rocblas_int, rocblas_int, Ptr{rocblas_double_complex}, Ptr{rocblas_double_complex}, rocblas_int, Ptr{rocblas_double_complex}, rocblas_int, Ptr{rocblas_double_complex}, Ptr{rocblas_double_complex}, rocblas_int), handle, transA, transB, m, n, k, alpha, A, lda, B, ldb, beta, C, ldc) +end + +function rocblas_sgemm_batched(handle, transA, transB, m, n, k, alpha, A, lda, B, ldb, beta, C, ldc, batch_count) + ccall((:rocblas_sgemm_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_operation, rocblas_operation, rocblas_int, rocblas_int, rocblas_int, Ptr{Cfloat}, Ptr{Ptr{Cfloat}}, rocblas_int, Ptr{Ptr{Cfloat}}, rocblas_int, Ptr{Cfloat}, Ptr{Ptr{Cfloat}}, rocblas_int, rocblas_int), handle, transA, transB, m, n, k, alpha, A, lda, B, ldb, beta, C, ldc, batch_count) +end + +function rocblas_dgemm_batched(handle, transA, transB, m, n, k, alpha, A, lda, B, ldb, beta, C, ldc, batch_count) + ccall((:rocblas_dgemm_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_operation, rocblas_operation, rocblas_int, rocblas_int, rocblas_int, Ptr{Cdouble}, Ptr{Ptr{Cdouble}}, rocblas_int, Ptr{Ptr{Cdouble}}, rocblas_int, Ptr{Cdouble}, Ptr{Ptr{Cdouble}}, rocblas_int, rocblas_int), handle, transA, transB, m, n, k, alpha, A, lda, B, ldb, beta, C, ldc, batch_count) +end + +function rocblas_hgemm_batched(handle, transA, transB, m, n, k, alpha, A, lda, B, ldb, beta, C, ldc, batch_count) + ccall((:rocblas_hgemm_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_operation, rocblas_operation, rocblas_int, rocblas_int, rocblas_int, Ptr{rocblas_half}, Ptr{Ptr{rocblas_half}}, rocblas_int, Ptr{Ptr{rocblas_half}}, rocblas_int, Ptr{rocblas_half}, Ptr{Ptr{rocblas_half}}, rocblas_int, rocblas_int), handle, transA, transB, m, n, k, alpha, A, lda, B, ldb, beta, C, ldc, batch_count) +end + +function rocblas_cgemm_batched(handle, transA, transB, m, n, k, alpha, A, lda, B, ldb, beta, C, ldc, batch_count) + ccall((:rocblas_cgemm_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_operation, rocblas_operation, rocblas_int, rocblas_int, rocblas_int, Ptr{rocblas_float_complex}, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, Ptr{rocblas_float_complex}, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, rocblas_int), handle, transA, transB, m, n, k, alpha, A, lda, B, ldb, beta, C, ldc, batch_count) +end + +function rocblas_zgemm_batched(handle, transA, transB, m, n, k, alpha, A, lda, B, ldb, beta, C, ldc, batch_count) + ccall((:rocblas_zgemm_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_operation, rocblas_operation, rocblas_int, rocblas_int, rocblas_int, Ptr{rocblas_double_complex}, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, Ptr{rocblas_double_complex}, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, rocblas_int), handle, transA, transB, m, n, k, alpha, A, lda, B, ldb, beta, C, ldc, batch_count) +end + +function rocblas_sgemm_strided_batched(handle, transA, transB, m, n, k, alpha, A, lda, stride_a, B, ldb, stride_b, beta, C, ldc, stride_c, batch_count) + ccall((:rocblas_sgemm_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_operation, rocblas_operation, rocblas_int, rocblas_int, rocblas_int, Ptr{Cfloat}, Ptr{Cfloat}, rocblas_int, rocblas_stride, Ptr{Cfloat}, rocblas_int, rocblas_stride, Ptr{Cfloat}, Ptr{Cfloat}, rocblas_int, rocblas_stride, rocblas_int), handle, transA, transB, m, n, k, alpha, A, lda, stride_a, B, ldb, stride_b, beta, C, ldc, stride_c, batch_count) +end + +function rocblas_dgemm_strided_batched(handle, transA, transB, m, n, k, alpha, A, lda, stride_a, B, ldb, stride_b, beta, C, ldc, stride_c, batch_count) + ccall((:rocblas_dgemm_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_operation, rocblas_operation, rocblas_int, rocblas_int, rocblas_int, Ptr{Cdouble}, Ptr{Cdouble}, rocblas_int, rocblas_stride, Ptr{Cdouble}, rocblas_int, rocblas_stride, Ptr{Cdouble}, Ptr{Cdouble}, rocblas_int, rocblas_stride, rocblas_int), handle, transA, transB, m, n, k, alpha, A, lda, stride_a, B, ldb, stride_b, beta, C, ldc, stride_c, batch_count) +end + +function rocblas_hgemm_strided_batched(handle, transA, transB, m, n, k, alpha, A, lda, stride_a, B, ldb, stride_b, beta, C, ldc, stride_c, batch_count) + ccall((:rocblas_hgemm_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_operation, rocblas_operation, rocblas_int, rocblas_int, rocblas_int, Ptr{rocblas_half}, Ptr{rocblas_half}, rocblas_int, rocblas_stride, Ptr{rocblas_half}, rocblas_int, rocblas_stride, Ptr{rocblas_half}, Ptr{rocblas_half}, rocblas_int, rocblas_stride, rocblas_int), handle, transA, transB, m, n, k, alpha, A, lda, stride_a, B, ldb, stride_b, beta, C, ldc, stride_c, batch_count) +end + +function rocblas_hgemm_kernel_name(handle, transA, transB, m, n, k, alpha, A, lda, stride_a, B, ldb, stride_b, beta, C, ldc, stride_c, batch_count) + ccall((:rocblas_hgemm_kernel_name, librocblas_path), rocblas_status, (rocblas_handle, rocblas_operation, rocblas_operation, rocblas_int, rocblas_int, rocblas_int, Ptr{rocblas_half}, Ptr{rocblas_half}, rocblas_int, rocblas_stride, Ptr{rocblas_half}, rocblas_int, rocblas_stride, Ptr{rocblas_half}, Ptr{rocblas_half}, rocblas_int, rocblas_stride, rocblas_int), handle, transA, transB, m, n, k, alpha, A, lda, stride_a, B, ldb, stride_b, beta, C, ldc, stride_c, batch_count) +end + +function rocblas_sgemm_kernel_name(handle, transA, transB, m, n, k, alpha, A, lda, stride_a, B, ldb, stride_b, beta, C, ldc, stride_c, batch_count) + ccall((:rocblas_sgemm_kernel_name, librocblas_path), rocblas_status, (rocblas_handle, rocblas_operation, rocblas_operation, rocblas_int, rocblas_int, rocblas_int, Ptr{Cfloat}, Ptr{Cfloat}, rocblas_int, rocblas_stride, Ptr{Cfloat}, rocblas_int, rocblas_stride, Ptr{Cfloat}, Ptr{Cfloat}, rocblas_int, rocblas_stride, rocblas_int), handle, transA, transB, m, n, k, alpha, A, lda, stride_a, B, ldb, stride_b, beta, C, ldc, stride_c, batch_count) +end + +function rocblas_dgemm_kernel_name(handle, transA, transB, m, n, k, alpha, A, lda, stride_a, B, ldb, stride_b, beta, C, ldc, stride_c, batch_count) + ccall((:rocblas_dgemm_kernel_name, librocblas_path), rocblas_status, (rocblas_handle, rocblas_operation, rocblas_operation, rocblas_int, rocblas_int, rocblas_int, Ptr{Cdouble}, Ptr{Cdouble}, rocblas_int, rocblas_stride, Ptr{Cdouble}, rocblas_int, rocblas_stride, Ptr{Cdouble}, Ptr{Cdouble}, rocblas_int, rocblas_stride, rocblas_int), handle, transA, transB, m, n, k, alpha, A, lda, stride_a, B, ldb, stride_b, beta, C, ldc, stride_c, batch_count) +end + +function rocblas_cgemm_strided_batched(handle, transA, transB, m, n, k, alpha, A, lda, stride_a, B, ldb, stride_b, beta, C, ldc, stride_c, batch_count) + ccall((:rocblas_cgemm_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_operation, rocblas_operation, rocblas_int, rocblas_int, rocblas_int, Ptr{rocblas_float_complex}, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_float_complex}, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, rocblas_int), handle, transA, transB, m, n, k, alpha, A, lda, stride_a, B, ldb, stride_b, beta, C, ldc, stride_c, batch_count) +end + +function rocblas_zgemm_strided_batched(handle, transA, transB, m, n, k, alpha, A, lda, stride_a, B, ldb, stride_b, beta, C, ldc, stride_c, batch_count) + ccall((:rocblas_zgemm_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_operation, rocblas_operation, rocblas_int, rocblas_int, rocblas_int, Ptr{rocblas_double_complex}, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_double_complex}, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, rocblas_int), handle, transA, transB, m, n, k, alpha, A, lda, stride_a, B, ldb, stride_b, beta, C, ldc, stride_c, batch_count) +end + +function rocblas_sdgmm(handle, side, m, n, A, lda, x, incx, C, ldc) + ccall((:rocblas_sdgmm, librocblas_path), rocblas_status, (rocblas_handle, rocblas_side, rocblas_int, rocblas_int, Ptr{Cfloat}, rocblas_int, Ptr{Cfloat}, rocblas_int, Ptr{Cfloat}, rocblas_int), handle, side, m, n, A, lda, x, incx, C, ldc) +end + +function rocblas_ddgmm(handle, side, m, n, A, lda, x, incx, C, ldc) + ccall((:rocblas_ddgmm, librocblas_path), rocblas_status, (rocblas_handle, rocblas_side, rocblas_int, rocblas_int, Ptr{Cdouble}, rocblas_int, Ptr{Cdouble}, rocblas_int, Ptr{Cdouble}, rocblas_int), handle, side, m, n, A, lda, x, incx, C, ldc) +end + +function rocblas_cdgmm(handle, side, m, n, A, lda, x, incx, C, ldc) + ccall((:rocblas_cdgmm, librocblas_path), rocblas_status, (rocblas_handle, rocblas_side, rocblas_int, rocblas_int, Ptr{rocblas_float_complex}, rocblas_int, Ptr{rocblas_float_complex}, rocblas_int, Ptr{rocblas_float_complex}, rocblas_int), handle, side, m, n, A, lda, x, incx, C, ldc) +end + +function rocblas_zdgmm(handle, side, m, n, A, lda, x, incx, C, ldc) + ccall((:rocblas_zdgmm, librocblas_path), rocblas_status, (rocblas_handle, rocblas_side, rocblas_int, rocblas_int, Ptr{rocblas_double_complex}, rocblas_int, Ptr{rocblas_double_complex}, rocblas_int, Ptr{rocblas_double_complex}, rocblas_int), handle, side, m, n, A, lda, x, incx, C, ldc) +end + +function rocblas_sdgmm_batched(handle, side, m, n, A, lda, x, incx, C, ldc, batch_count) + ccall((:rocblas_sdgmm_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_side, rocblas_int, rocblas_int, Ptr{Ptr{Cfloat}}, rocblas_int, Ptr{Ptr{Cfloat}}, rocblas_int, Ptr{Ptr{Cfloat}}, rocblas_int, rocblas_int), handle, side, m, n, A, lda, x, incx, C, ldc, batch_count) +end + +function rocblas_ddgmm_batched(handle, side, m, n, A, lda, x, incx, C, ldc, batch_count) + ccall((:rocblas_ddgmm_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_side, rocblas_int, rocblas_int, Ptr{Ptr{Cdouble}}, rocblas_int, Ptr{Ptr{Cdouble}}, rocblas_int, Ptr{Ptr{Cdouble}}, rocblas_int, rocblas_int), handle, side, m, n, A, lda, x, incx, C, ldc, batch_count) +end + +function rocblas_cdgmm_batched(handle, side, m, n, A, lda, x, incx, C, ldc, batch_count) + ccall((:rocblas_cdgmm_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_side, rocblas_int, rocblas_int, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, rocblas_int), handle, side, m, n, A, lda, x, incx, C, ldc, batch_count) +end + +function rocblas_zdgmm_batched(handle, side, m, n, A, lda, x, incx, C, ldc, batch_count) + ccall((:rocblas_zdgmm_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_side, rocblas_int, rocblas_int, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, rocblas_int), handle, side, m, n, A, lda, x, incx, C, ldc, batch_count) +end + +function rocblas_sdgmm_strided_batched(handle, side, m, n, A, lda, stride_A, x, incx, stride_x, C, ldc, stride_C, batch_count) + ccall((:rocblas_sdgmm_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_side, rocblas_int, rocblas_int, Ptr{Cfloat}, rocblas_int, rocblas_stride, Ptr{Cfloat}, rocblas_int, rocblas_stride, Ptr{Cfloat}, rocblas_int, rocblas_stride, rocblas_int), handle, side, m, n, A, lda, stride_A, x, incx, stride_x, C, ldc, stride_C, batch_count) +end + +function rocblas_ddgmm_strided_batched(handle, side, m, n, A, lda, stride_A, x, incx, stride_x, C, ldc, stride_C, batch_count) + ccall((:rocblas_ddgmm_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_side, rocblas_int, rocblas_int, Ptr{Cdouble}, rocblas_int, rocblas_stride, Ptr{Cdouble}, rocblas_int, rocblas_stride, Ptr{Cdouble}, rocblas_int, rocblas_stride, rocblas_int), handle, side, m, n, A, lda, stride_A, x, incx, stride_x, C, ldc, stride_C, batch_count) +end + +function rocblas_cdgmm_strided_batched(handle, side, m, n, A, lda, stride_A, x, incx, stride_x, C, ldc, stride_C, batch_count) + ccall((:rocblas_cdgmm_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_side, rocblas_int, rocblas_int, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, rocblas_int), handle, side, m, n, A, lda, stride_A, x, incx, stride_x, C, ldc, stride_C, batch_count) +end + +function rocblas_zdgmm_strided_batched(handle, side, m, n, A, lda, stride_A, x, incx, stride_x, C, ldc, stride_C, batch_count) + ccall((:rocblas_zdgmm_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_side, rocblas_int, rocblas_int, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, rocblas_int), handle, side, m, n, A, lda, stride_A, x, incx, stride_x, C, ldc, stride_C, batch_count) +end + +function rocblas_sgeam(handle, transA, transB, m, n, alpha, A, lda, beta, B, ldb, C, ldc) + ccall((:rocblas_sgeam, librocblas_path), rocblas_status, (rocblas_handle, rocblas_operation, rocblas_operation, rocblas_int, rocblas_int, Ptr{Cfloat}, Ptr{Cfloat}, rocblas_int, Ptr{Cfloat}, Ptr{Cfloat}, rocblas_int, Ptr{Cfloat}, rocblas_int), handle, transA, transB, m, n, alpha, A, lda, beta, B, ldb, C, ldc) +end + +function rocblas_dgeam(handle, transA, transB, m, n, alpha, A, lda, beta, B, ldb, C, ldc) + ccall((:rocblas_dgeam, librocblas_path), rocblas_status, (rocblas_handle, rocblas_operation, rocblas_operation, rocblas_int, rocblas_int, Ptr{Cdouble}, Ptr{Cdouble}, rocblas_int, Ptr{Cdouble}, Ptr{Cdouble}, rocblas_int, Ptr{Cdouble}, rocblas_int), handle, transA, transB, m, n, alpha, A, lda, beta, B, ldb, C, ldc) +end + +function rocblas_cgeam(handle, transA, transB, m, n, alpha, A, lda, beta, B, ldb, C, ldc) + ccall((:rocblas_cgeam, librocblas_path), rocblas_status, (rocblas_handle, rocblas_operation, rocblas_operation, rocblas_int, rocblas_int, Ptr{rocblas_float_complex}, Ptr{rocblas_float_complex}, rocblas_int, Ptr{rocblas_float_complex}, Ptr{rocblas_float_complex}, rocblas_int, Ptr{rocblas_float_complex}, rocblas_int), handle, transA, transB, m, n, alpha, A, lda, beta, B, ldb, C, ldc) +end + +function rocblas_zgeam(handle, transA, transB, m, n, alpha, A, lda, beta, B, ldb, C, ldc) + ccall((:rocblas_zgeam, librocblas_path), rocblas_status, (rocblas_handle, rocblas_operation, rocblas_operation, rocblas_int, rocblas_int, Ptr{rocblas_double_complex}, Ptr{rocblas_double_complex}, rocblas_int, Ptr{rocblas_double_complex}, Ptr{rocblas_double_complex}, rocblas_int, Ptr{rocblas_double_complex}, rocblas_int), handle, transA, transB, m, n, alpha, A, lda, beta, B, ldb, C, ldc) +end + +function rocblas_sgeam_batched(handle, transA, transB, m, n, alpha, A, lda, beta, B, ldb, C, ldc, batch_count) + ccall((:rocblas_sgeam_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_operation, rocblas_operation, rocblas_int, rocblas_int, Ptr{Cfloat}, Ptr{Ptr{Cfloat}}, rocblas_int, Ptr{Cfloat}, Ptr{Ptr{Cfloat}}, rocblas_int, Ptr{Ptr{Cfloat}}, rocblas_int, rocblas_int), handle, transA, transB, m, n, alpha, A, lda, beta, B, ldb, C, ldc, batch_count) +end + +function rocblas_dgeam_batched(handle, transA, transB, m, n, alpha, A, lda, beta, B, ldb, C, ldc, batch_count) + ccall((:rocblas_dgeam_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_operation, rocblas_operation, rocblas_int, rocblas_int, Ptr{Cdouble}, Ptr{Ptr{Cdouble}}, rocblas_int, Ptr{Cdouble}, Ptr{Ptr{Cdouble}}, rocblas_int, Ptr{Ptr{Cdouble}}, rocblas_int, rocblas_int), handle, transA, transB, m, n, alpha, A, lda, beta, B, ldb, C, ldc, batch_count) +end + +function rocblas_cgeam_batched(handle, transA, transB, m, n, alpha, A, lda, beta, B, ldb, C, ldc, batch_count) + ccall((:rocblas_cgeam_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_operation, rocblas_operation, rocblas_int, rocblas_int, Ptr{rocblas_float_complex}, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, Ptr{rocblas_float_complex}, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, Ptr{Ptr{rocblas_float_complex}}, rocblas_int, rocblas_int), handle, transA, transB, m, n, alpha, A, lda, beta, B, ldb, C, ldc, batch_count) +end + +function rocblas_zgeam_batched(handle, transA, transB, m, n, alpha, A, lda, beta, B, ldb, C, ldc, batch_count) + ccall((:rocblas_zgeam_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_operation, rocblas_operation, rocblas_int, rocblas_int, Ptr{rocblas_double_complex}, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, Ptr{rocblas_double_complex}, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, Ptr{Ptr{rocblas_double_complex}}, rocblas_int, rocblas_int), handle, transA, transB, m, n, alpha, A, lda, beta, B, ldb, C, ldc, batch_count) +end + +function rocblas_sgeam_strided_batched(handle, transA, transB, m, n, alpha, A, lda, stride_A, beta, B, ldb, stride_B, C, ldc, stride_C, batch_count) + ccall((:rocblas_sgeam_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_operation, rocblas_operation, rocblas_int, rocblas_int, Ptr{Cfloat}, Ptr{Cfloat}, rocblas_int, rocblas_stride, Ptr{Cfloat}, Ptr{Cfloat}, rocblas_int, rocblas_stride, Ptr{Cfloat}, rocblas_int, rocblas_stride, rocblas_int), handle, transA, transB, m, n, alpha, A, lda, stride_A, beta, B, ldb, stride_B, C, ldc, stride_C, batch_count) +end + +function rocblas_dgeam_strided_batched(handle, transA, transB, m, n, alpha, A, lda, stride_A, beta, B, ldb, stride_B, C, ldc, stride_C, batch_count) + ccall((:rocblas_dgeam_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_operation, rocblas_operation, rocblas_int, rocblas_int, Ptr{Cdouble}, Ptr{Cdouble}, rocblas_int, rocblas_stride, Ptr{Cdouble}, Ptr{Cdouble}, rocblas_int, rocblas_stride, Ptr{Cdouble}, rocblas_int, rocblas_stride, rocblas_int), handle, transA, transB, m, n, alpha, A, lda, stride_A, beta, B, ldb, stride_B, C, ldc, stride_C, batch_count) +end + +function rocblas_cgeam_strided_batched(handle, transA, transB, m, n, alpha, A, lda, stride_A, beta, B, ldb, stride_B, C, ldc, stride_C, batch_count) + ccall((:rocblas_cgeam_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_operation, rocblas_operation, rocblas_int, rocblas_int, Ptr{rocblas_float_complex}, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_float_complex}, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_float_complex}, rocblas_int, rocblas_stride, rocblas_int), handle, transA, transB, m, n, alpha, A, lda, stride_A, beta, B, ldb, stride_B, C, ldc, stride_C, batch_count) +end + +function rocblas_zgeam_strided_batched(handle, transA, transB, m, n, alpha, A, lda, stride_A, beta, B, ldb, stride_B, C, ldc, stride_C, batch_count) + ccall((:rocblas_zgeam_strided_batched, librocblas_path), rocblas_status, (rocblas_handle, rocblas_operation, rocblas_operation, rocblas_int, rocblas_int, Ptr{rocblas_double_complex}, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_double_complex}, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, Ptr{rocblas_double_complex}, rocblas_int, rocblas_stride, rocblas_int), handle, transA, transB, m, n, alpha, A, lda, stride_A, beta, B, ldb, stride_B, C, ldc, stride_C, batch_count) +end + +function rocblas_gemm_batched_ex(handle, transA, transB, m, n, k, alpha, a, a_type, lda, b, b_type, ldb, beta, c, c_type, ldc, d, d_type, ldd, batch_count, compute_type, algo, solution_index, flags) + ccall((:rocblas_gemm_batched_ex, librocblas_path), rocblas_status, (rocblas_handle, rocblas_operation, rocblas_operation, rocblas_int, rocblas_int, rocblas_int, Ptr{Cvoid}, Ptr{Cvoid}, rocblas_datatype, rocblas_int, Ptr{Cvoid}, rocblas_datatype, rocblas_int, Ptr{Cvoid}, Ptr{Cvoid}, rocblas_datatype, rocblas_int, Ptr{Cvoid}, rocblas_datatype, rocblas_int, rocblas_int, rocblas_datatype, rocblas_gemm_algo, Int32, UInt32), handle, transA, transB, m, n, k, alpha, a, a_type, lda, b, b_type, ldb, beta, c, c_type, ldc, d, d_type, ldd, batch_count, compute_type, algo, solution_index, flags) +end + +function rocblas_gemm_ext2(handle, m, n, k, alpha, a, a_type, row_stride_a, col_stride_a, b, b_type, row_stride_b, col_stride_b, beta, c, c_type, row_stride_c, col_stride_c, d, d_type, row_stride_d, col_stride_d, compute_type, algo, solution_index, flags) + ccall((:rocblas_gemm_ext2, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, rocblas_int, rocblas_int, Ptr{Cvoid}, Ptr{Cvoid}, rocblas_datatype, rocblas_stride, rocblas_stride, Ptr{Cvoid}, rocblas_datatype, rocblas_stride, rocblas_stride, Ptr{Cvoid}, Ptr{Cvoid}, rocblas_datatype, rocblas_stride, rocblas_stride, Ptr{Cvoid}, rocblas_datatype, rocblas_stride, rocblas_stride, rocblas_datatype, rocblas_gemm_algo, Int32, UInt32), handle, m, n, k, alpha, a, a_type, row_stride_a, col_stride_a, b, b_type, row_stride_b, col_stride_b, beta, c, c_type, row_stride_c, col_stride_c, d, d_type, row_stride_d, col_stride_d, compute_type, algo, solution_index, flags) +end + +function rocblas_trsm_batched_ex(handle, side, uplo, transA, diag, m, n, alpha, A, lda, B, ldb, batch_count, invA, invA_size, compute_type) + ccall((:rocblas_trsm_batched_ex, librocblas_path), rocblas_status, (rocblas_handle, rocblas_side, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, rocblas_int, Ptr{Cvoid}, Ptr{Cvoid}, rocblas_int, Ptr{Cvoid}, rocblas_int, rocblas_int, Ptr{Cvoid}, rocblas_int, rocblas_datatype), handle, side, uplo, transA, diag, m, n, alpha, A, lda, B, ldb, batch_count, invA, invA_size, compute_type) +end + +function rocblas_trsm_strided_batched_ex(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) + ccall((:rocblas_trsm_strided_batched_ex, librocblas_path), rocblas_status, (rocblas_handle, rocblas_side, rocblas_fill, rocblas_operation, rocblas_diagonal, rocblas_int, rocblas_int, Ptr{Cvoid}, Ptr{Cvoid}, rocblas_int, rocblas_stride, Ptr{Cvoid}, rocblas_int, rocblas_stride, rocblas_int, Ptr{Cvoid}, rocblas_int, rocblas_stride, rocblas_datatype), 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) +end + +function rocblas_axpy_ex(handle, n, alpha, alpha_type, x, x_type, incx, y, y_type, incy, execution_type) + ccall((:rocblas_axpy_ex, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Cvoid}, rocblas_datatype, Ptr{Cvoid}, rocblas_datatype, rocblas_int, Ptr{Cvoid}, rocblas_datatype, rocblas_int, rocblas_datatype), handle, n, alpha, alpha_type, x, x_type, incx, y, y_type, incy, execution_type) +end + +function rocblas_axpy_batched_ex(handle, n, alpha, alpha_type, x, x_type, incx, y, y_type, incy, batch_count, execution_type) + ccall((:rocblas_axpy_batched_ex, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Cvoid}, rocblas_datatype, Ptr{Cvoid}, rocblas_datatype, rocblas_int, Ptr{Cvoid}, rocblas_datatype, rocblas_int, rocblas_int, rocblas_datatype), handle, n, alpha, alpha_type, x, x_type, incx, y, y_type, incy, batch_count, execution_type) +end + +function rocblas_axpy_strided_batched_ex(handle, n, alpha, alpha_type, x, x_type, incx, stridex, y, y_type, incy, stridey, batch_count, execution_type) + ccall((:rocblas_axpy_strided_batched_ex, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Cvoid}, rocblas_datatype, Ptr{Cvoid}, rocblas_datatype, rocblas_int, rocblas_stride, Ptr{Cvoid}, rocblas_datatype, rocblas_int, rocblas_stride, rocblas_int, rocblas_datatype), handle, n, alpha, alpha_type, x, x_type, incx, stridex, y, y_type, incy, stridey, batch_count, execution_type) +end + +function rocblas_dot_ex(handle, n, x, x_type, incx, y, y_type, incy, result, result_type, execution_type) + ccall((:rocblas_dot_ex, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Cvoid}, rocblas_datatype, rocblas_int, Ptr{Cvoid}, rocblas_datatype, rocblas_int, Ptr{Cvoid}, rocblas_datatype, rocblas_datatype), handle, n, x, x_type, incx, y, y_type, incy, result, result_type, execution_type) +end + +function rocblas_dotc_ex(handle, n, x, x_type, incx, y, y_type, incy, result, result_type, execution_type) + ccall((:rocblas_dotc_ex, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Cvoid}, rocblas_datatype, rocblas_int, Ptr{Cvoid}, rocblas_datatype, rocblas_int, Ptr{Cvoid}, rocblas_datatype, rocblas_datatype), handle, n, x, x_type, incx, y, y_type, incy, result, result_type, execution_type) +end + +function rocblas_dot_batched_ex(handle, n, x, x_type, incx, y, y_type, incy, batch_count, result, result_type, execution_type) + ccall((:rocblas_dot_batched_ex, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Cvoid}, rocblas_datatype, rocblas_int, Ptr{Cvoid}, rocblas_datatype, rocblas_int, rocblas_int, Ptr{Cvoid}, rocblas_datatype, rocblas_datatype), handle, n, x, x_type, incx, y, y_type, incy, batch_count, result, result_type, execution_type) +end + +function rocblas_dotc_batched_ex(handle, n, x, x_type, incx, y, y_type, incy, batch_count, result, result_type, execution_type) + ccall((:rocblas_dotc_batched_ex, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Cvoid}, rocblas_datatype, rocblas_int, Ptr{Cvoid}, rocblas_datatype, rocblas_int, rocblas_int, Ptr{Cvoid}, rocblas_datatype, rocblas_datatype), handle, n, x, x_type, incx, y, y_type, incy, batch_count, result, result_type, execution_type) +end + +function rocblas_dot_strided_batched_ex(handle, n, x, x_type, incx, stride_x, y, y_type, incy, stride_y, batch_count, result, result_type, execution_type) + ccall((:rocblas_dot_strided_batched_ex, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Cvoid}, rocblas_datatype, rocblas_int, rocblas_stride, Ptr{Cvoid}, rocblas_datatype, rocblas_int, rocblas_stride, rocblas_int, Ptr{Cvoid}, rocblas_datatype, rocblas_datatype), handle, n, x, x_type, incx, stride_x, y, y_type, incy, stride_y, batch_count, result, result_type, execution_type) +end + +function rocblas_dotc_strided_batched_ex(handle, n, x, x_type, incx, stride_x, y, y_type, incy, stride_y, batch_count, result, result_type, execution_type) + ccall((:rocblas_dotc_strided_batched_ex, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Cvoid}, rocblas_datatype, rocblas_int, rocblas_stride, Ptr{Cvoid}, rocblas_datatype, rocblas_int, rocblas_stride, rocblas_int, Ptr{Cvoid}, rocblas_datatype, rocblas_datatype), handle, n, x, x_type, incx, stride_x, y, y_type, incy, stride_y, batch_count, result, result_type, execution_type) +end + +function rocblas_nrm2_ex(handle, n, x, x_type, incx, results, result_type, execution_type) + ccall((:rocblas_nrm2_ex, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Cvoid}, rocblas_datatype, rocblas_int, Ptr{Cvoid}, rocblas_datatype, rocblas_datatype), handle, n, x, x_type, incx, results, result_type, execution_type) +end + +function rocblas_nrm2_batched_ex(handle, n, x, x_type, incx, batch_count, results, result_type, execution_type) + ccall((:rocblas_nrm2_batched_ex, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Cvoid}, rocblas_datatype, rocblas_int, rocblas_int, Ptr{Cvoid}, rocblas_datatype, rocblas_datatype), handle, n, x, x_type, incx, batch_count, results, result_type, execution_type) +end + +function rocblas_nrm2_strided_batched_ex(handle, n, x, x_type, incx, stride_x, batch_count, results, result_type, execution_type) + ccall((:rocblas_nrm2_strided_batched_ex, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Cvoid}, rocblas_datatype, rocblas_int, rocblas_stride, rocblas_int, Ptr{Cvoid}, rocblas_datatype, rocblas_datatype), handle, n, x, x_type, incx, stride_x, batch_count, results, result_type, execution_type) +end + +function rocblas_rot_ex(handle, n, x, x_type, incx, y, y_type, incy, c, s, cs_type, execution_type) + ccall((:rocblas_rot_ex, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Cvoid}, rocblas_datatype, rocblas_int, Ptr{Cvoid}, rocblas_datatype, rocblas_int, Ptr{Cvoid}, Ptr{Cvoid}, rocblas_datatype, rocblas_datatype), handle, n, x, x_type, incx, y, y_type, incy, c, s, cs_type, execution_type) +end + +function rocblas_rot_batched_ex(handle, n, x, x_type, incx, y, y_type, incy, c, s, cs_type, batch_count, execution_type) + ccall((:rocblas_rot_batched_ex, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Cvoid}, rocblas_datatype, rocblas_int, Ptr{Cvoid}, rocblas_datatype, rocblas_int, Ptr{Cvoid}, Ptr{Cvoid}, rocblas_datatype, rocblas_int, rocblas_datatype), handle, n, x, x_type, incx, y, y_type, incy, c, s, cs_type, batch_count, execution_type) +end + +function rocblas_rot_strided_batched_ex(handle, n, x, x_type, incx, stride_x, y, y_type, incy, stride_y, c, s, cs_type, batch_count, execution_type) + ccall((:rocblas_rot_strided_batched_ex, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Cvoid}, rocblas_datatype, rocblas_int, rocblas_stride, Ptr{Cvoid}, rocblas_datatype, rocblas_int, rocblas_stride, Ptr{Cvoid}, Ptr{Cvoid}, rocblas_datatype, rocblas_int, rocblas_datatype), handle, n, x, x_type, incx, stride_x, y, y_type, incy, stride_y, c, s, cs_type, batch_count, execution_type) +end + +function rocblas_scal_ex(handle, n, alpha, alpha_type, x, x_type, incx, execution_type) + ccall((:rocblas_scal_ex, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Cvoid}, rocblas_datatype, Ptr{Cvoid}, rocblas_datatype, rocblas_int, rocblas_datatype), handle, n, alpha, alpha_type, x, x_type, incx, execution_type) +end + +function rocblas_scal_batched_ex(handle, n, alpha, alpha_type, x, x_type, incx, batch_count, execution_type) + ccall((:rocblas_scal_batched_ex, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Cvoid}, rocblas_datatype, Ptr{Cvoid}, rocblas_datatype, rocblas_int, rocblas_int, rocblas_datatype), handle, n, alpha, alpha_type, x, x_type, incx, batch_count, execution_type) +end + +function rocblas_scal_strided_batched_ex(handle, n, alpha, alpha_type, x, x_type, incx, stridex, batch_count, execution_type) + ccall((:rocblas_scal_strided_batched_ex, librocblas_path), rocblas_status, (rocblas_handle, rocblas_int, Ptr{Cvoid}, rocblas_datatype, Ptr{Cvoid}, rocblas_datatype, rocblas_int, rocblas_stride, rocblas_int, rocblas_datatype), handle, n, alpha, alpha_type, x, x_type, incx, stridex, batch_count, execution_type) +end + +function rocblas_status_to_string(status) + ccall((:rocblas_status_to_string, librocblas_path), Ptr{Cchar}, (rocblas_status,), status) +end + +function rocblas_initialize() + ccall((:rocblas_initialize, librocblas_path), Cvoid, ()) +end + +function rocblas_get_version_string(buf, len) + ccall((:rocblas_get_version_string, librocblas_path), rocblas_status, (Ptr{Cchar}, Csize_t), buf, len) +end + +function rocblas_get_version_string_size(len) + ccall((:rocblas_get_version_string_size, librocblas_path), rocblas_status, (Ptr{Csize_t},), len) +end + +function rocblas_start_device_memory_size_query(handle) + ccall((:rocblas_start_device_memory_size_query, librocblas_path), rocblas_status, (rocblas_handle,), handle) +end + +function rocblas_stop_device_memory_size_query(handle, size) + ccall((:rocblas_stop_device_memory_size_query, librocblas_path), rocblas_status, (rocblas_handle, Ptr{Csize_t}), handle, size) +end + +function rocblas_is_device_memory_size_query(handle) + ccall((:rocblas_is_device_memory_size_query, librocblas_path), Bool, (rocblas_handle,), handle) +end + +function rocblas_device_malloc_success(ptr) + ccall((:rocblas_device_malloc_success, librocblas_path), Bool, (Ptr{rocblas_device_malloc_base},), ptr) +end + +function rocblas_device_malloc_ptr(ptr, res) + ccall((:rocblas_device_malloc_ptr, librocblas_path), rocblas_status, (Ptr{rocblas_device_malloc_base}, Ptr{Ptr{Cvoid}}), ptr, res) +end + +function rocblas_device_malloc_get(ptr, index, res) + ccall((:rocblas_device_malloc_get, librocblas_path), rocblas_status, (Ptr{rocblas_device_malloc_base}, Csize_t, Ptr{Ptr{Cvoid}}), ptr, index, res) +end + +function rocblas_device_malloc_free(ptr) + ccall((:rocblas_device_malloc_free, librocblas_path), rocblas_status, (Ptr{rocblas_device_malloc_base},), ptr) +end + +function rocblas_device_malloc_set_default_memory_size(size) + ccall((:rocblas_device_malloc_set_default_memory_size, librocblas_path), Cvoid, (Csize_t,), size) +end + +function rocblas_get_device_memory_size(handle, size) + ccall((:rocblas_get_device_memory_size, librocblas_path), rocblas_status, (rocblas_handle, Ptr{Csize_t}), handle, size) +end + +function rocblas_set_device_memory_size(handle, size) + ccall((:rocblas_set_device_memory_size, librocblas_path), rocblas_status, (rocblas_handle, Csize_t), handle, size) +end + +function rocblas_set_workspace(handle, addr, size) + ccall((:rocblas_set_workspace, librocblas_path), rocblas_status, (rocblas_handle, Ptr{Cvoid}, Csize_t), handle, addr, size) +end + +function rocblas_is_managing_device_memory(handle) + ccall((:rocblas_is_managing_device_memory, librocblas_path), Bool, (rocblas_handle,), handle) +end + +function rocblas_is_user_managing_device_memory(handle) + ccall((:rocblas_is_user_managing_device_memory, librocblas_path), Bool, (rocblas_handle,), handle) +end + +function rocblas_abort() + ccall((:rocblas_abort, librocblas_path), Cvoid, ()) end -=# diff --git a/src/blas/librocblas_types.jl b/src/blas/librocblas_types.jl deleted file mode 100644 index 44bb2bc83..000000000 --- a/src/blas/librocblas_types.jl +++ /dev/null @@ -1,84 +0,0 @@ -# generated by hand ;( - -using CEnum - -# HACK: a shim -const hipStream_t = Ptr{Cvoid} - -const rocblas_int = Int32 -const rocblas_long = Int64 -const rocblas_float_complex = ComplexF32 -const rocblas_double_complex = ComplexF64 -const rocblas_half = Float16 -const rocblas_half_complex = ComplexF32 # wtf??? -const rocblas_handle = Ptr{Nothing} - -const ROCBLASFloat = Union{Float32,Float64} -const ROCBLASReal = Union{Float32,Float64} -const ROCBLASComplex = Union{ComplexF32,ComplexF64} - -@cenum(rocblas_operation_t, - ROCBLAS_OPERATION_NONE = 111, - ROCBLAS_OPERATION_TRANSPOSE = 112, - ROCBLAS_OPERATION_CONJUGATE_TRANSPOSE = 113, -) - -@cenum(rocblas_fill_t, - ROCBLAS_FILL_UPPER = 121, - ROCBLAS_FILL_LOWER = 122, - ROCBLAS_FILL_FULL = 123, -) - -@cenum(rocblas_diagonal_t, - ROCBLAS_DIAGONAL_NON_UNIT = 131, - ROCBLAS_DIAGONAL_UNIT = 132, -) - -@cenum(rocblas_side_t, - ROCBLAS_SIDE_LEFT = 141, - ROCBLAS_SIDE_RIGHT = 142, - ROCBLAS_SIDE_BOTH = 143, -) - -@cenum(rocblas_status_t, - ROCBLAS_STATUS_SUCCESS = 0, - ROCBLAS_STATUS_INVALID_HANDLE = 1, - ROCBLAS_STATUS_NOT_IMPLEMENTED = 2, - ROCBLAS_STATUS_INVALID_POINTER = 3, - ROCBLAS_STATUS_INVALID_SIZE = 4, - ROCBLAS_STATUS_MEMORY_ERROR = 5, - ROCBLAS_STATUS_INTERNAL_ERROR = 6, -) - -@cenum(rocblas_datatype_t, - ROCBLAS_DATATYPE_F16_R = 150, # 16 bit floating point, real - ROCBLAS_DATATYPE_F32_R = 151, # 32 bit floating point, real - ROCBLAS_DATATYPE_F64_R = 152, # 64 bit floating point, real - ROCBLAS_DATATYPE_F16_C = 153, # 16 bit floating point, complex - ROCBLAS_DATATYPE_F32_C = 154, # 32 bit floating point, complex - ROCBLAS_DATATYPE_F64_C = 155, # 64 bit floating point, complex - ROCBLAS_DATATYPE_I8_R = 160, # 8 bit signed integer, real - ROCBLAS_DATATYPE_U8_R = 161, # 8 bit unsigned integer, real - ROCBLAS_DATATYPE_I32_R = 162, # 32 bit signed integer, real - ROCBLAS_DATATYPE_U32_R = 163, # 32 bit unsigned integer, real - ROCBLAS_DATATYPE_I8_C = 164, # 8 bit signed integer, complex - ROCBLAS_DATATYPE_U8_C = 165, # 8 bit unsigned integer, complex - ROCBLAS_DATATYPE_I32_C = 166, # 32 bit signed integer, complex - ROCBLAS_DATATYPE_U32_C = 167, # 32 bit unsigned integer, complex -) - -@cenum(rocblas_pointer_mode_t, - ROCBLAS_POINTER_MODE_HOST = 0, - ROCBLAS_POINTER_MODE_DEVICE = 1, -) - -@cenum(rocblas_layer_mode_t, - ROCBLAS_LAYER_MODE_NONE = 0b0000000000, - ROCBLAS_LAYER_MODE_LOG_TRACE = 0b0000000001, - ROCBLAS_LAYER_MODE_LOG_BENCH = 0b0000000010, - ROCBLAS_LAYER_MODE_LOG_PROFILE = 0b0000000100, -) - -@cenum(rocblas_gemm_algo, - ROCBLAS_GEMM_ALGO_STANDARD = 0b0000000000, -) diff --git a/src/blas/rocBLAS.jl b/src/blas/rocBLAS.jl index 006231d31..e2cdb5c7c 100644 --- a/src/blas/rocBLAS.jl +++ b/src/blas/rocBLAS.jl @@ -3,13 +3,13 @@ module rocBLAS using ..AMDGPU import AMDGPU: wait!, mark!, librocblas, AnyROCArray import AMDGPU: HandleCache -import AMDGPU.HIP: HIPContext, HIPStream +import AMDGPU: HIP +import .HIP: HIPContext, HIPStream, hipContext_t, hipStream_t, hipEvent_t using LinearAlgebra -include("librocblas_types.jl") -include("error.jl") include("librocblas.jl") +include("error.jl") include("wrappers.jl") include("highlevel.jl") @@ -36,18 +36,20 @@ function handle() # get library state @noinline function new_state(tls) new_handle = pop!(idle_handles, tls.context) do - rocblas_create_handle() + handle_ref = Ref{rocblas_handle}() + @check rocblas_create_handle(handle_ref) + handle_ref[] end finalizer(current_task()) do task push!(idle_handles, tls.context, new_handle) do context!(tls.context) do - rocblas_destroy_handle(new_handle) + @check rocblas_destroy_handle(new_handle) end end end - rocblas_set_stream(new_handle, tls.stream) + @check rocblas_set_stream(new_handle, tls.stream) (; handle=new_handle, tls.stream) end @@ -57,7 +59,7 @@ function handle() # update stream @noinline function update_stream(tls, state) - rocblas_set_stream(state.handle, tls.stream) + @check rocblas_set_stream(state.handle, tls.stream) (; state.handle, stream=tls.stream) end if state.stream != tls.stream @@ -67,6 +69,12 @@ function handle() return state.handle end +function stream(handle::rocblas_handle) + stream_ref = Ref{hipStream_t}() + rocblas_get_stream(handle, stream_ref) + return HIPStream(stream_ref[]) +end + if AMDGPU.functional(:rocblas) @eval rocblas_check_functional() = nothing else diff --git a/src/blas/wrappers.jl b/src/blas/wrappers.jl index 0a28a5385..73f612c7e 100644 --- a/src/blas/wrappers.jl +++ b/src/blas/wrappers.jl @@ -9,51 +9,55 @@ # License: MIT # +const ROCBLASReal = Union{Float32,Float64} +const ROCBLASComplex = Union{ComplexF32,ComplexF64} +const ROCBLASFloat = Union{ROCBLASReal, ROCBLASComplex} + # Utility functions -# convert Char {N,T,C} to rocblas_operation_t +# convert Char {N,T,C} to rocblas_operation function rocblasop(trans::Char) if trans == 'N' - return ROCBLAS_OPERATION_NONE + return rocblas_operation_none end if trans == 'T' - return ROCBLAS_OPERATION_TRANSPOSE + return rocblas_operation_transpose end if trans == 'C' - return ROCBLAS_OPERATION_CONJUGATE_TRANSPOSE + return rocblas_operation_conjugate_transpose end throw(ArgumentError("unknown rocblas operation $trans")) end -# convert Char {U,L} to rocblas_fill_t +# convert Char {U,L} to rocblas_fill function rocblasfill(uplo::Char) if uplo == 'U' - return ROCBLAS_FILL_UPPER + return rocblas_fill_upper end if uplo == 'L' - return ROCBLAS_FILL_LOWER + return rocblas_fill_lower end throw(ArgumentError("unknown rocblas fill mode $uplo")) end -# convert Char {U,N} to rocblas_diagonal_t +# convert Char {U,N} to rocblas_diagonal function rocblasdiag(diag::Char) if diag == 'U' - return ROCBLAS_DIAGONAL_UNIT + return rocblas_diagonal_unit end if diag == 'N' - return ROCBLAS_DIAGONAL_NON_UNIT + return rocblas_diagonal_non_unit end throw(ArgumentError("unknown rocblas diag mode $diag")) end -# convert Char {L,R} to rocblas_side_t +# convert Char {L,R} to rocblas_side function rocblasside(side::Char) if side == 'L' - return ROCBLAS_SIDE_LEFT + return rocblas_side_left end if side == 'R' - return ROCBLAS_SIDE_RIGHT + return rocblas_side_right end throw(ArgumentError("unknown rocblas side mode $side")) end @@ -72,11 +76,11 @@ for (fname, elty) in ((:rocblas_dcopy,:Float64), DY::ROCArray{$elty}, incy::Integer) wait!((DX,DY)) - @check ccall(($(string(fname)), librocblas), rocblas_status_t, + @check ccall(($(string(fname)), librocblas), rocblas_status, (rocblas_handle, Cint, Ptr{$elty}, Cint, Ptr{$elty}, Cint), handle(), n, DX, incx, DY, incy) - mark!((DX,DY),rocblas_get_stream(handle())) + mark!((DX,DY), stream(handle())) DY end end @@ -94,11 +98,11 @@ for (fname, elty) in ((:rocblas_dscal,:Float64), DX::ROCArray{$elty}, incx::Integer) wait!(DX) - @check ccall(($(string(fname)), librocblas), rocblas_status_t, + @check ccall(($(string(fname)), librocblas), rocblas_status, (rocblas_handle, Cint, Ptr{$elty}, Ptr{$elty}, Cint), handle(), n, Ref(DA), DX, incx) - mark!(DX,rocblas_get_stream(handle())) + mark!(DX, stream(handle())) DX end end @@ -115,18 +119,18 @@ for (fname, elty, celty) in ((:rocblas_sscal, :Float32, :ComplexF32), #DY = reinterpret($elty,DX,(2*n,)) #$(rocblascall(fname))(handle(),2*n,Ref(DA),DY,incx) wait!(DX) - @check ccall(($(string(fname)), librocblas), rocblas_status_t, + @check ccall(($(string(fname)), librocblas), rocblas_status, (rocblas_handle, Cint, Ptr{$elty}, Ptr{$celty}, Cint), handle(), 2*n, Ref(DA), DX, incx) - mark!(DX,rocblas_get_stream(handle())) + mark!(DX, stream(handle())) DX end end end ## dot, dotc, dotu -# rocblas_status_t rocblas_ddot +# rocblas_status rocblas_ddot # (rocblas_handle handle, # int n, # const double *x, int incx, @@ -146,7 +150,7 @@ for (jname, fname, elty) in ((:dot,:rocblas_ddot,:Float64), incy::Integer) result = Ref{$elty}() wait!((DX,DY)) - @check ccall(($(string(fname)), librocblas), rocblas_status_t, + @check ccall(($(string(fname)), librocblas), rocblas_status, (rocblas_handle, Cint, Ptr{$elty}, Cint, Ptr{$elty}, Cint, Ptr{$elty}), handle(), n, DX, incx, DY, incy, result) @@ -167,7 +171,7 @@ for (fname, elty, ret_type) in ((:rocblas_dnrm2,:Float64,:Float64), incx::Integer) result = Ref{$ret_type}() wait!(X) - @check ccall(($(string(fname)), librocblas), rocblas_status_t, + @check ccall(($(string(fname)), librocblas), rocblas_status, (rocblas_handle, Cint, Ptr{$elty}, Cint, Ptr{$ret_type}), handle(), n, X, incx, result) @@ -190,7 +194,7 @@ for (fname, elty, ret_type) in ((:rocblas_dasum,:Float64,:Float64), incx::Integer) result = Ref{$ret_type}() wait!(X) - @check ccall(($(string(fname)), librocblas), rocblas_status_t, + @check ccall(($(string(fname)), librocblas), rocblas_status, (rocblas_handle, Cint, Ptr{$elty}, Cint, Ptr{$ret_type}), handle(), n, X, incx, result) @@ -207,7 +211,7 @@ for (fname, elty) in ((:rocblas_daxpy,:Float64), @eval begin # SUBROUTINE DAXPY(N,DA,DX,INCX,DY,INCY) # DY <- DA*DX + DY - # rocblas_status_t rocblas_saxpy( + # rocblas_status rocblas_saxpy( # rocblas_handle handle, # int n, # const float *alpha, /* host or device pointer */ @@ -222,12 +226,12 @@ for (fname, elty) in ((:rocblas_daxpy,:Float64), dy::ROCArray{$elty}, incy::Integer) wait!((dx,dy)) - @check ccall(($(string(fname)), librocblas), rocblas_status_t, + @check ccall(($(string(fname)), librocblas), rocblas_status, (rocblas_handle, Cint, Ref{$elty}, Ptr{$elty}, Cint, Ptr{$elty}, Cint), handle(), n, alpha, dx, incx, dy, incy) - mark!((dx,dy),rocblas_get_stream(handle())) + mark!((dx,dy), stream(handle())) dy end end @@ -259,7 +263,7 @@ for (fname, elty) in ((:rocblasIdamax,:Float64), dx::ROCArray{$elty}, incx::Integer) result = Ref{Cint}() - @check ccall(($(string(fname)), librocblas), rocblas_status_t, + @check ccall(($(string(fname)), librocblas), rocblas_status, (rocblas_handle, Cint, Ptr{$elty}, Cint, Ptr{Cint}), handle(), n, dx, incx, result) @@ -280,7 +284,7 @@ for (fname, elty) in ((:rocblasIdamin,:Float64), dx::ROCArray{$elty}, incx::Integer) result = Ref{Cint}() - @check ccall(($(string(fname)), librocblas), rocblas_status_t, + @check ccall(($(string(fname)), librocblas), rocblas_status, (rocblas_handle, Cint, Ptr{$elty}, Cint, Ptr{Cint}), handle(), n, dx, incx, result) @@ -299,7 +303,7 @@ for (fname, elty) in ((:rocblas_dgemv,:Float64), (:rocblas_zgemv,:ComplexF64), (:rocblas_cgemv,:ComplexF32)) @eval begin - # rocblas_status_t rocblas_dgemv( + # rocblas_status rocblas_dgemv( # rocblas_handle handle, rocblas_operation_t trans, # int m, int n, # const double *alpha, @@ -323,13 +327,13 @@ for (fname, elty) in ((:rocblas_dgemv,:Float64), incx = stride(X,1) incy = stride(Y,1) wait!((A,X,Y)) - @check ccall(($(string(fname)), librocblas), rocblas_status_t, - (rocblas_handle, rocblas_operation_t, Cint, Cint, + @check ccall(($(string(fname)), librocblas), rocblas_status, + (rocblas_handle, rocblas_operation, Cint, Cint, Ptr{$elty}, Ptr{$elty}, Cint, Ptr{$elty}, Cint, Ptr{$elty}, Ptr{$elty}, Cint), handle(), roctrans, m, n, Ref(alpha), A, lda, X, incx, Ref(beta), Y, incy) - mark!((A,X,Y),rocblas_get_stream(handle())) + mark!((A,X,Y), stream(handle())) Y end function gemv(trans::Char, alpha::($elty), A::ROCMatrix{$elty}, X::ROCVector{$elty}) @@ -347,7 +351,7 @@ for (fname, elty) in ((:rocblas_dgbmv,:Float64), (:rocblas_zgbmv,:ComplexF64), (:rocblas_cgbmv,:ComplexF32)) @eval begin - # rocblas_status_t rocblas_dgbmv( + # rocblas_status rocblas_dgbmv( # rocblas_handle handle, rocblas_operation_t trans, # int m, int n, int kl, int ku, # const double *alpha, const double *A, int lda, @@ -372,13 +376,13 @@ for (fname, elty) in ((:rocblas_dgbmv,:Float64), incx = stride(x,1) incy = stride(y,1) wait!((A,x,y)) - @check ccall(($(string(fname)),librocblas), rocblas_status_t, - (rocblas_handle, rocblas_operation_t, Cint, Cint, + @check ccall(($(string(fname)),librocblas), rocblas_status, + (rocblas_handle, rocblas_operation, Cint, Cint, Cint, Cint, Ptr{$elty}, Ptr{$elty}, Cint, Ptr{$elty}, Cint, Ptr{$elty}, Ptr{$elty}, Cint), handle(), roctrans, m, n, kl, ku, Ref(alpha), A, lda, x, incx, Ref(beta), y, incy) - mark!((A,x,y),rocblas_get_stream(handle())) + mark!((A,x,y), stream(handle())) y end function gbmv(trans::Char, @@ -411,7 +415,7 @@ for (fname, elty) in ((:rocblas_dsymv,:Float64), (:rocblas_csymv,:ComplexF32)) # Note that the complex symv are not BLAS but auiliary functions in LAPACK @eval begin - # rocblas_status_t rocblas_dsymv( + # rocblas_status rocblas_dsymv( # rocblas_handle handle, rocblas_fill_t uplo, # int n, const double *alpha, const double *A, int lda, # const double *x, int incx, @@ -430,14 +434,14 @@ for (fname, elty) in ((:rocblas_dsymv,:Float64), incx = stride(x,1) incy = stride(y,1) wait!((A,x,y)) - @check ccall(($(string(fname)),librocblas), rocblas_status_t, - (rocblas_handle, rocblas_fill_t, + @check ccall(($(string(fname)),librocblas), rocblas_status, + (rocblas_handle, rocblas_fill, Cint,Ptr{$elty}, Ptr{$elty}, Cint, Ptr{$elty}, Cint, Ptr{$elty}, Ptr{$elty},Cint), handle(), rocuplo, n, Ref(alpha), A, lda, x, incx, Ref(beta), y, incy) - mark!((A,x,y),rocblas_get_stream(handle())) + mark!((A,x,y), stream(handle())) y end function symv(uplo::Char, alpha::($elty), A::ROCMatrix{$elty}, x::ROCVector{$elty}) @@ -454,7 +458,7 @@ end for (fname, elty) in ((:rocblas_zhemv,:ComplexF64), (:rocblas_chemv,:ComplexF32)) @eval begin - # rocblas_status_t rocblas_chemv( + # rocblas_status rocblas_chemv( # rocblas_handle handle, rocblas_fill_t uplo, # int n, const rocComplex *alpha, const rocComplex *A, int lda, # const rocComplex *x, int incx, @@ -474,14 +478,14 @@ for (fname, elty) in ((:rocblas_zhemv,:ComplexF64), incx = stride(x,1) incy = stride(y,1) wait!((A,x,y)) - @check ccall(($(string(fname)),librocblas), rocblas_status_t, - (rocblas_handle, rocblas_fill_t, + @check ccall(($(string(fname)),librocblas), rocblas_status, + (rocblas_handle, rocblas_fill, Cint,Ptr{$elty}, Ptr{$elty}, Cint, Ptr{$elty}, Cint, Ptr{$elty}, Ptr{$elty},Cint), handle(), rocuplo, n, Ref(alpha), A, lda, x, incx, Ref(beta), y, incy) - mark!((A,x,y),rocblas_get_stream(handle())) + mark!((A,x,y), stream(handle())) y end function hemv(uplo::Char, alpha::($elty), A::ROCMatrix{$elty}, @@ -501,7 +505,7 @@ end for (fname, elty) in ((:rocblas_dsbmv,:Float64), (:rocblas_ssbmv,:Float32)) @eval begin - # rocblas_status_t rocblas_dsbmv( + # rocblas_status rocblas_dsbmv( # rocblas_handle handle, rocblas_fill_t uplo, # int n, int k, const double *alpha, const double *A, int lda, # const double *x, int incx, @@ -523,13 +527,13 @@ for (fname, elty) in ((:rocblas_dsbmv,:Float64), incx = stride(x,1) incy = stride(y,1) wait!((A,x,y)) - @check ccall(($(string(fname)),librocblas), rocblas_status_t, - (rocblas_handle, rocblas_fill_t, Cint, Cint, + @check ccall(($(string(fname)),librocblas), rocblas_status, + (rocblas_handle, rocblas_fill, Cint, Cint, Ptr{$elty}, Ptr{$elty}, Cint, Ptr{$elty}, Cint, Ptr{$elty}, Ptr{$elty}, Cint), handle(), rocuplo, n, k, Ref(alpha), A, lda, x, incx, Ref(beta), y, incy) - mark!((A,x,y),rocblas_get_stream(handle())) + mark!((A,x,y), stream(handle())) y end function sbmv(uplo::Char, k::Integer, alpha::($elty), @@ -548,7 +552,7 @@ end for (fname, elty) in ((:rocblas_zhbmv,:ComplexF64), (:rocblas_chbmv,:ComplexF32)) @eval begin - # rocblas_status_t rocblas_chbmv( + # rocblas_status rocblas_chbmv( # rocblas_handle handle, rocblas_fill_t uplo, # int n, int k, const rocComplex *alpha, const rocComplex *A, int lda, # const rocComplex *x, int incx, @@ -569,13 +573,13 @@ for (fname, elty) in ((:rocblas_zhbmv,:ComplexF64), incx = stride(x,1) incy = stride(y,1) wait!((A,x,y)) - @check ccall(($(string(fname)),librocblas), rocblas_status_t, - (rocblas_handle, rocblas_fill_t, Cint, Cint, + @check ccall(($(string(fname)),librocblas), rocblas_status, + (rocblas_handle, rocblas_fill, Cint, Cint, Ptr{$elty}, Ptr{$elty}, Cint, Ptr{$elty}, Cint, Ptr{$elty}, Ptr{$elty}, Cint), handle(), rocuplo, n, k, Ref(alpha), A, lda, x, incx, Ref(beta), y, incy) - mark!((A,x,y),rocblas_get_stream(handle())) + mark!((A,x,y), stream(handle())) y end function hbmv(uplo::Char, k::Integer, alpha::($elty), @@ -596,7 +600,7 @@ for (fname, elty) in ((:rocblas_stbmv,:Float32), (:rocblas_ztbmv,:ComplexF64), (:rocblas_ctbmv,:ComplexF32)) @eval begin - # rocblas_status_t rocblas_dtbmv( + # rocblas_status rocblas_dtbmv( # rocblas_handle handle, rocblas_fill_t uplo, # rocblas_operation_t trans, rocblas_diagonal_t diag, # int n, int k, const double *alpha, const double *A, int lda, @@ -617,12 +621,12 @@ for (fname, elty) in ((:rocblas_stbmv,:Float32), lda = max(1,stride(A,2)) incx = stride(x,1) wait!((A,x)) - @check ccall(($(string(fname)),librocblas), rocblas_status_t, - (rocblas_handle, rocblas_fill_t, rocblas_operation_t, - rocblas_diagonal_t, Cint, Cint, Ptr{$elty}, Cint, + @check ccall(($(string(fname)),librocblas), rocblas_status, + (rocblas_handle, rocblas_fill, rocblas_operation, + rocblas_diagonal, Cint, Cint, Ptr{$elty}, Cint, Ptr{$elty}, Cint), handle(), rocuplo, roctrans, rocdiag, n, k, A, lda, x, incx) - mark!((A,x),rocblas_get_stream(handle())) + mark!((A,x), stream(handle())) x end function tbmv(uplo::Char, @@ -641,7 +645,7 @@ for (fname, elty) in ((:rocblas_stbsv,:Float32), (:rocblas_ztbsv,:ComplexF64), (:rocblas_ctbsv,:ComplexF32)) @eval begin - # rocblas_status_t rocblas_dtbsv( + # rocblas_status rocblas_dtbsv( # rocblas_handle handle, rocblas_fill_t uplo, # rocblas_operation_t trans, rocblas_diagonal_t diag, # int n, int k, const double *alpha, const double *A, int lda, @@ -662,12 +666,12 @@ for (fname, elty) in ((:rocblas_stbsv,:Float32), lda = max(1,stride(A,2)) incx = stride(x,1) wait!((A,x)) - @check ccall(($(string(fname)),librocblas), rocblas_status_t, - (rocblas_handle, rocblas_fill_t, rocblas_operation_t, - rocblas_diagonal_t, Cint, Cint, Ptr{$elty}, Cint, + @check ccall(($(string(fname)),librocblas), rocblas_status, + (rocblas_handle, rocblas_fill, rocblas_operation, + rocblas_diagonal, Cint, Cint, Ptr{$elty}, Cint, Ptr{$elty}, Cint), handle(), rocuplo, roctrans, rocdiag, n, k, A, lda, x, incx) - mark!((A,x),rocblas_get_stream(handle())) + mark!((A,x), stream(handle())) x end function tbsv(uplo::Char, @@ -687,7 +691,7 @@ for (fname, elty) in ((:rocblas_dtrmv,:Float64), (:rocblas_ztrmv,:ComplexF64), (:rocblas_ctrmv,:ComplexF32)) @eval begin - # rocblas_status_t rocblas_dtrmv( + # rocblas_status rocblas_dtrmv( # rocblas_handle handle, rocblas_fill_t uplo, # rocblas_operation_t trans, rocblas_diagonal_t diag, # int n, const double *A, int lda, @@ -708,12 +712,12 @@ for (fname, elty) in ((:rocblas_dtrmv,:Float64), lda = max(1,stride(A,2)) incx = stride(x,1) wait!((A,x)) - @check ccall(($(string(fname)),librocblas), rocblas_status_t, - (rocblas_handle, rocblas_fill_t, - rocblas_operation_t, rocblas_diagonal_t, Cint, + @check ccall(($(string(fname)),librocblas), rocblas_status, + (rocblas_handle, rocblas_fill, + rocblas_operation, rocblas_diagonal, Cint, Ptr{$elty}, Cint, Ptr{$elty}, Cint), handle(), rocuplo, roctrans, rocdiag, n, A, lda, x, incx) - mark!((A,x),rocblas_get_stream(handle())) + mark!((A,x), stream(handle())) x end function trmv(uplo::Char, @@ -732,7 +736,7 @@ for (fname, elty) in ((:rocblas_dtrsv,:Float64), (:rocblas_ztrsv,:ComplexF64), (:rocblas_ctrsv,:ComplexF32)) @eval begin - # rocblas_status_t rocblas_dtrsv( + # rocblas_status rocblas_dtrsv( # rocblas_handle handle, rocblas_fill_t uplo, # rocblas_operation_t trans, rocblas_diagonal_t diag, # int n, const double *A, int lda, @@ -753,12 +757,12 @@ for (fname, elty) in ((:rocblas_dtrsv,:Float64), lda = max(1,stride(A,2)) incx = stride(x,1) wait!((A,x)) - @check ccall(($(string(fname)),librocblas), rocblas_status_t, - (rocblas_handle, rocblas_fill_t, - rocblas_operation_t, rocblas_diagonal_t, Cint, + @check ccall(($(string(fname)),librocblas), rocblas_status, + (rocblas_handle, rocblas_fill, + rocblas_operation, rocblas_diagonal, Cint, Ptr{$elty}, Cint, Ptr{$elty}, Cint), handle(), rocuplo, roctrans, rocdiag, n, A, lda, x, incx) - mark!((A,x),rocblas_get_stream(handle())) + mark!((A,x), stream(handle())) x end function trsv(uplo::Char, @@ -777,7 +781,7 @@ for (fname, elty) in ((:rocblas_dger,:Float64), (:rocblas_zgerc,:ComplexF64), (:rocblas_cgerc,:ComplexF32)) @eval begin - # rocblas_status_t rocblas_dger( + # rocblas_status rocblas_dger( # rocblas_handle handle, int m, int n, const double *alpha, # const double *x, int incx, # const double *y, int incy, @@ -793,12 +797,12 @@ for (fname, elty) in ((:rocblas_dger,:Float64), incy = stride(y,1) lda = max(1,stride(A,2)) wait!((x,y,A)) - @check ccall(($(string(fname)),librocblas), rocblas_status_t, + @check ccall(($(string(fname)),librocblas), rocblas_status, (rocblas_handle, Cint, Cint, Ptr{$elty}, Ptr{$elty}, Cint, Ptr{$elty}, Cint, Ptr{$elty}, Cint), handle(), m, n, Ref(alpha), x, incx, y, incy, A, lda) - mark!((x,y,A),rocblas_get_stream(handle())) + mark!((x,y,A), stream(handle())) A end end @@ -811,7 +815,7 @@ for (fname, elty) in ((:rocblas_dsyr,:Float64), (:rocblas_zsyr,:ComplexF64), (:rocblas_csyr,:ComplexF32)) @eval begin - # rocblas_status_t rocblas_dsyr( + # rocblas_status rocblas_dsyr( # rocblas_handle handle, rocblas_fill_t uplo, int n, # const double *alpha, const double *x, int incx, # double *A, int lda) @@ -826,12 +830,12 @@ for (fname, elty) in ((:rocblas_dsyr,:Float64), incx = stride(x,1) lda = max(1,stride(A,2)) wait!((x,A)) - @check ccall(($(string(fname)),librocblas), rocblas_status_t, - (rocblas_handle, rocblas_fill_t, Cint, + @check ccall(($(string(fname)),librocblas), rocblas_status, + (rocblas_handle, rocblas_fill, Cint, Ptr{$elty}, Ptr{$elty}, Cint, Ptr{$elty}, Cint), handle(), rocuplo, n, Ref(alpha), x, incx, A, lda) - mark!((x,A),rocblas_get_stream(handle())) + mark!((x,A), stream(handle())) A end end @@ -852,12 +856,12 @@ for (fname, elty) in ((:rocblas_zher,:ComplexF64), incx = stride(x,1) lda = max(1,stride(A,2)) wait!((x,A)) - @check ccall(($(string(fname)),librocblas), rocblas_status_t, - (rocblas_handle, rocblas_fill_t, Cint, + @check ccall(($(string(fname)),librocblas), rocblas_status, + (rocblas_handle, rocblas_fill, Cint, Ptr{$elty}, Ptr{$elty}, Cint, Ptr{$elty}, Cint), handle(), rocuplo, n, Ref(alpha), x, incx, A, lda) - mark!((x,A),rocblas_get_stream(handle())) + mark!((x,A), stream(handle())) A end end @@ -881,13 +885,13 @@ for (fname, elty) in ((:rocblas_zher2,:ComplexF64), incy = stride(y,1) lda = max(1,stride(A,2)) wait!((x,y,A)) - @check ccall(($(string(fname)),librocblas), rocblas_status_t, - (rocblas_handle, rocblas_fill_t, Cint, + @check ccall(($(string(fname)),librocblas), rocblas_status, + (rocblas_handle, rocblas_fill, Cint, Ptr{$elty}, Ptr{$elty}, Cint, Ptr{$elty}, Cint, Ptr{$elty}, Cint), handle(), rocuplo, n, Ref(alpha), x, incx, y, incy, A, lda) - mark!((x,y,A),rocblas_get_stream(handle())) + mark!((x,y,A), stream(handle())) A end end @@ -921,7 +925,7 @@ for (fname, elty) in $(fname)( handle(), rocblasop(transA), rocblasop(transB), m, n, k, Ref(alpha), A, lda, B, ldb, Ref(beta), C, ldc) - mark!((A, B, C),rocblas_get_stream(handle())) + mark!((A, B, C), stream(handle())) C end function gemm(transA::Char, @@ -1090,7 +1094,7 @@ for (fname, elty) in (:rocblas_cgemmStridedBatched,:ComplexF32)) @eval begin - # rocblas_status_t rocblas_dgemmStridedBatched(rocblas_handle handle, + # rocblas_status rocblas_dgemmStridedBatched(rocblas_handle handle, # rocblas_operation_t transa, # rocblas_operation_t transb, # int m, int n, int k, @@ -1131,15 +1135,15 @@ for (fname, elty) in strideC = stride(C, 3) batchCount = size(A, 3) wait!((A,B,C)) - @check ccall(($(string(fname)), librocblas), rocblas_status_t, - (rocblas_handle, rocblas_operation_t, - rocblas_operation_t, Cint, Cint, Cint, Ptr{$elty}, + @check ccall(($(string(fname)), librocblas), rocblas_status, + (rocblas_handle, rocblas_operation, + rocblas_operation, Cint, Cint, Cint, Ptr{$elty}, Ptr{$elty}, Cint, Cint, Ptr{$elty}, Cint, Cint, Ptr{$elty}, Ptr{$elty}, Cint, Cint, Cint), handle(), roctransA, roctransB, m, n, k, Ref(alpha), A, lda, strideA, B, ldb, strideB, Ref(beta), C, ldc, strideC, batchCount) - mark!((A,B,C),rocblas_get_stream(handle())) + mark!((A,B,C), stream(handle())) C end function gemm_strided_batched(transA::Char, @@ -1166,7 +1170,7 @@ for (fname, elty) in ((:rocblas_dsymm,:Float64), (:rocblas_csymm,:ComplexF32)) # TODO: fix julia dimension checks in symm! @eval begin - # rocblas_status_t rocblas_dsymm( + # rocblas_status rocblas_dsymm( # rocblas_handle handle, rocblas_side_t side, # rocblas_fill_t uplo, int m, int n, # const double *alpha, const double *A, int lda, @@ -1192,15 +1196,15 @@ for (fname, elty) in ((:rocblas_dsymm,:Float64), ldb = max(1,stride(B,2)) ldc = max(1,stride(C,2)) wait!((A,B,C)) - @check ccall(($(string(fname)),librocblas), rocblas_status_t, - (rocblas_handle, rocblas_side_t, - rocblas_fill_t, Cint, Cint, Ptr{$elty}, + @check ccall(($(string(fname)),librocblas), rocblas_status, + (rocblas_handle, rocblas_side, + rocblas_fill, Cint, Cint, Ptr{$elty}, Ptr{$elty}, Cint, Ptr{$elty}, Cint, Ptr{$elty}, Ptr{$elty}, Cint), handle(), rocside, rocuplo, m, n, Ref(alpha), A, lda, B, ldb, Ref(beta), C, ldc) - mark!((A,B,C),rocblas_get_stream(handle())) + mark!((A,B,C), stream(handle())) C end function symm(side::Char, @@ -1225,7 +1229,7 @@ for (fname, elty) in ((:rocblas_dsyrk,:Float64), (:rocblas_zsyrk,:ComplexF64), (:rocblas_csyrk,:ComplexF32)) @eval begin - # rocblas_status_t rocblas_dsyrk( + # rocblas_status rocblas_dsyrk( # rocblas_handle handle, rocblas_fill_t uplo, # rocblas_operation_t trans, int n, int k, # const double *alpha, const double *A, int lda, @@ -1246,13 +1250,13 @@ for (fname, elty) in ((:rocblas_dsyrk,:Float64), lda = max(1,stride(A,2)) ldc = max(1,stride(C,2)) wait!((A,C)) - @check ccall(($(string(fname)),librocblas), rocblas_status_t, - (rocblas_handle, rocblas_fill_t, - rocblas_operation_t, Cint, Cint, Ptr{$elty}, + @check ccall(($(string(fname)),librocblas), rocblas_status, + (rocblas_handle, rocblas_fill, + rocblas_operation, Cint, Cint, Ptr{$elty}, Ptr{$elty}, Cint, Ptr{$elty}, Ptr{$elty}, Cint), handle(), rocuplo, roctrans, n, k, Ref(alpha), A, lda, Ref(beta), C, ldc) - mark!((A,C),rocblas_get_stream(handle())) + mark!((A,C), stream(handle())) C end end @@ -1273,7 +1277,7 @@ syrk(uplo::Char, trans::Char, A::ROCVecOrMat) = syrk(uplo, trans, for (fname, elty) in ((:rocblas_zhemm,:ComplexF64), (:rocblas_chemm,:ComplexF32)) @eval begin - # rocblas_status_t rocblas_chemm( + # rocblas_status rocblas_chemm( # rocblas_handle handle, rocblas_side_t side, rocblas_fill_t uplo, # int m, int n, # const rocComplex *alpha, @@ -1301,13 +1305,13 @@ for (fname, elty) in ((:rocblas_zhemm,:ComplexF64), ldb = max(1,stride(B,2)) ldc = max(1,stride(C,2)) wait!((A,B,C)) - @check ccall(($(string(fname)),librocblas), rocblas_status_t, - (rocblas_handle, rocblas_side_t, rocblas_fill_t, + @check ccall(($(string(fname)),librocblas), rocblas_status, + (rocblas_handle, rocblas_side, rocblas_fill, Cint, Cint, Ptr{$elty}, Ptr{$elty}, Cint, Ptr{$elty}, Cint, Ptr{$elty}, Ptr{$elty}, Cint), handle(), rocside, rocuplo, m, n, Ref(alpha), A, lda, B, ldb, Ref(beta), C, ldc) - mark!((A,B,C),rocblas_get_stream(handle())) + mark!((A,B,C), stream(handle())) C end function hemm(uplo::Char, @@ -1326,7 +1330,7 @@ end for (fname, elty) in ((:rocblas_zherk,:ComplexF64), (:rocblas_cherk,:ComplexF32)) @eval begin - # rocblas_status_t rocblas_cherk( + # rocblas_status rocblas_cherk( # rocblas_handle handle, rocblas_fill_t uplo, rocblas_operation_t trans, # int n, int k, # const float *alpha, const rocComplex *A, int lda, @@ -1347,13 +1351,13 @@ for (fname, elty) in ((:rocblas_zherk,:ComplexF64), lda = max(1,stride(A,2)) ldc = max(1,stride(C,2)) wait!((A,C)) - @check ccall(($(string(fname)),librocblas), rocblas_status_t, - (rocblas_handle, rocblas_fill_t, - rocblas_operation_t, Cint, Cint, Ptr{$elty}, + @check ccall(($(string(fname)),librocblas), rocblas_status, + (rocblas_handle, rocblas_fill, + rocblas_operation, Cint, Cint, Ptr{$elty}, Ptr{$elty}, Cint, Ptr{$elty}, Ptr{$elty}, Cint), handle(), rocuplo, roctrans, n, k, Ref(alpha), A, lda, Ref(beta), C, ldc) - mark!((A,C),rocblas_get_stream(handle())) + mark!((A,C), stream(handle())) C end function herk(uplo::Char, trans::Char, alpha::($elty), A::ROCVecOrMat{$elty}) @@ -1370,7 +1374,7 @@ for (fname, elty) in ((:rocblas_dsyr2k,:Float64), (:rocblas_zsyr2k,:ComplexF64), (:rocblas_csyr2k,:ComplexF32)) @eval begin - # rocblas_status_t rocblas_dsyr2k( + # rocblas_status rocblas_dsyr2k( # rocblas_handle handle, # rocblas_fill_t uplo, rocblas_operation_t trans, # int n, int k, @@ -1402,15 +1406,15 @@ for (fname, elty) in ((:rocblas_dsyr2k,:Float64), ldb = max(1,stride(B,2)) ldc = max(1,stride(C,2)) wait!((A,B,C)) - @check ccall(($(string(fname)),librocblas), rocblas_status_t, - (rocblas_handle, rocblas_fill_t, - rocblas_operation_t, Cint, Cint, Ptr{$elty}, + @check ccall(($(string(fname)),librocblas), rocblas_status, + (rocblas_handle, rocblas_fill, + rocblas_operation, Cint, Cint, Ptr{$elty}, Ptr{$elty}, Cint, Ptr{$elty}, Cint, Ptr{$elty}, Ptr{$elty}, Cint), handle(), rocuplo, roctrans, n, k, Ref(alpha), A, lda, B, ldb, Ref(beta), C, ldc) - mark!((A,B,C),rocblas_get_stream(handle())) + mark!((A,B,C), stream(handle())) C end end @@ -1430,7 +1434,7 @@ syr2k(uplo::Char, trans::Char, A::ROCVecOrMat, B::ROCVecOrMat) = syr2k(uplo, tra for (fname, elty1, elty2) in ((:rocblas_zher2k,:ComplexF64,:Float64), (:rocblas_cher2k,:ComplexF32,:Float32)) @eval begin - # rocblas_status_t rocblas_zher2k( + # rocblas_status rocblas_zher2k( # rocblas_handle handle, rocblas_fill_t uplo, rocblas_operation_t trans, # int n, int k, # const cuDoubleComplex *alpha, const cuDoubleComplex *A, int lda, @@ -1460,14 +1464,14 @@ for (fname, elty1, elty2) in ((:rocblas_zher2k,:ComplexF64,:Float64), ldb = max(1,stride(B,2)) ldc = max(1,stride(C,2)) wait!((A,B,C)) - @check ccall(($(string(fname)),librocblas), rocblas_status_t, - (rocblas_handle, rocblas_fill_t, - rocblas_operation_t, Cint, Cint, Ptr{$elty1}, + @check ccall(($(string(fname)),librocblas), rocblas_status, + (rocblas_handle, rocblas_fill, + rocblas_operation, Cint, Cint, Ptr{$elty1}, Ptr{$elty1}, Cint, Ptr{$elty1}, Cint, Ptr{$elty2}, Ptr{$elty1}, Cint), handle(), rocuplo, roctrans, n, k, Ref(alpha), A, lda, B, ldb, Ref(beta), C, ldc) - mark!((A,B,C),rocblas_get_stream(handle())) + mark!((A,B,C), stream(handle())) C end function her2k(uplo::Char, @@ -1492,7 +1496,7 @@ for (mmname, smname, elty) in (:rocblas_ztrmm,:rocblas_ztrsm,:ComplexF64), (:rocblas_ctrmm,:rocblas_ctrsm,:ComplexF32)) @eval begin - # rocblas_status_t rocblas_dtrmm(rocblas_handle handle, + # rocblas_status rocblas_dtrmm(rocblas_handle handle, # rocblas_side_t side, rocblas_fill_t uplo, # rocblas_operation_t trans, rocblas_diagonal_t diag, # int m, int n, @@ -1525,15 +1529,15 @@ for (mmname, smname, elty) in ldb = max(1,stride(B,2)) ldc = max(1,stride(C,2)) wait!((A,B,C)) - @check ccall(($(string(mmname)),librocblas), rocblas_status_t, - (rocblas_handle, rocblas_side_t, - rocblas_fill_t, rocblas_operation_t, - rocblas_diagonal_t, Cint, Cint, Ptr{$elty}, + @check ccall(($(string(mmname)),librocblas), rocblas_status, + (rocblas_handle, rocblas_side, + rocblas_fill, rocblas_operation, + rocblas_diagonal, Cint, Cint, Ptr{$elty}, Ptr{$elty}, Cint, Ptr{$elty}, Cint, Ptr{$elty}, Cint), handle(), rocside, rocuplo, roctransa, rocdiag, m, n, Ref(alpha), A, lda, B, ldb, C, ldc) - mark!((A,B,C),rocblas_get_stream(handle())) + mark!((A,B,C), stream(handle())) C end function trmm(side::Char, @@ -1545,7 +1549,7 @@ for (mmname, smname, elty) in B::ROCMatrix{$elty}) trmm!(side, uplo, transa, diag, alpha, A, B, similar(B)) end - # rocblas_status_t rocblas_dtrsm(rocblas_handle handle, + # rocblas_status rocblas_dtrsm(rocblas_handle handle, # rocblas_side_t side, rocblas_fill_t uplo, # rocblas_operation_t trans, rocblas_diagonal_t diag, # int m, int n, @@ -1571,14 +1575,14 @@ for (mmname, smname, elty) in lda = max(1,stride(A,2)) ldb = max(1,stride(B,2)) wait!((A,B)) - @check ccall(($(string(smname)), librocblas), rocblas_status_t, - (rocblas_handle, rocblas_side_t, - rocblas_fill_t, rocblas_operation_t, - rocblas_diagonal_t, Cint, Cint, Ptr{$elty}, + @check ccall(($(string(smname)), librocblas), rocblas_status, + (rocblas_handle, rocblas_side, + rocblas_fill, rocblas_operation, + rocblas_diagonal, Cint, Cint, Ptr{$elty}, Ptr{$elty}, Cint, Ptr{$elty}, Cint), handle(), rocside, rocuplo, roctransa, rocdiag, m, n, Ref(alpha), A, lda, B, ldb) - mark!((A,B),rocblas_get_stream(handle())) + mark!((A,B), stream(handle())) B end function trsm(side::Char, @@ -1600,7 +1604,7 @@ for (fname, elty) in (:rocblas_ztrsmBatched,:ComplexF64), (:rocblas_ctrsmBatched,:ComplexF32)) @eval begin - # rocblas_status_t rocblas_dtrsmBatched(rocblas_handle handle, + # rocblas_status rocblas_dtrsmBatched(rocblas_handle handle, # rocblas_side_t side, rocblas_fill_t uplo, # rocblas_operation_t trans, rocblas_diagonal_t diag, # int m, int n, @@ -1634,15 +1638,15 @@ for (fname, elty) in Aptrs = device_batch(A) Bptrs = device_batch(B) wait!((A,B)) - @check ccall(($(string(fname)),librocblas), rocblas_status_t, - (rocblas_handle, rocblas_side_t, rocblas_fill_t, - rocblas_operation_t, rocblas_diagonal_t, Cint, Cint, + @check ccall(($(string(fname)),librocblas), rocblas_status, + (rocblas_handle, rocblas_side, rocblas_fill, + rocblas_operation, rocblas_diagonal, Cint, Cint, Ptr{$elty}, Ptr{Ptr{$elty}}, Cint, Ptr{Ptr{$elty}}, Cint, Cint), handle(), rocside, rocuplo, roctransa, rocdiag, m, n, Ref(alpha), Aptrs, lda, Bptrs, ldb, length(A)) - mark!((A,B),rocblas_get_stream(handle())) + mark!((A,B), stream(handle())) B end function trsm_batched(side::Char, @@ -1667,7 +1671,7 @@ for (fname, elty) in ((:rocblas_dgeam,:Float64), (:rocblas_zgeam,:ComplexF64), (:rocblas_cgeam,:ComplexF32)) @eval begin - # rocblas_status_t rocblas_cgeam( + # rocblas_status rocblas_cgeam( # rocblas_handle handle, rocblas_operation_t transa, rocblas_operation_t transb, # int m, int n, # const rocComplex *alpha, @@ -1695,12 +1699,12 @@ for (fname, elty) in ((:rocblas_dgeam,:Float64), ldb = max(1,stride(B,2)) ldc = max(1,stride(C,2)) wait!((A,B,C)) - @check ccall(($(string(fname)),librocblas), rocblas_status_t, - (rocblas_handle, rocblas_operation_t, rocblas_operation_t, + @check ccall(($(string(fname)),librocblas), rocblas_status, + (rocblas_handle, rocblas_operation, rocblas_operation, Cint, Cint, Ptr{$elty}, Ptr{$elty}, Cint, Ptr{$elty}, Ptr{$elty}, Cint, Ptr{$elty}, Cint), handle(), roctransa, roctransb, m, n, Ref(alpha), A, lda, Ref(beta), B, ldb, C, ldc) - mark!((A,B,C),rocblas_get_stream(handle())) + mark!((A,B,C), stream(handle())) C end function geam(transa::Char, @@ -1729,7 +1733,7 @@ for (fname, elty) in (:rocblas_zgetrfBatched,:ComplexF64), (:rocblas_cgetrfBatched,:ComplexF32)) @eval begin - # rocblas_status_t rocblas_dgetrfBatched( + # rocblas_status rocblas_dgetrfBatched( # rocblas_handle handle, int n, double **A, # int lda, int *PivotArray, int *infoArray, # int batchSize) @@ -1747,16 +1751,16 @@ for (fname, elty) in info = ROCArray{Cint}(undef, length(A)) pivotArray = Pivot ? ROCArray{Int32}(undef, (n, length(A))) : C_NULL wait!(A) - @check ccall(($(string(fname)),librocblas), rocblas_status_t, + @check ccall(($(string(fname)),librocblas), rocblas_status, (rocblas_handle, Cint, Ptr{Ptr{$elty}}, Cint, Ptr{Cint}, Ptr{Cint}, Cint), handle(), n, Aptrs, lda, pivotArray, info, length(A)) if( !Pivot ) pivotArray = ROCArray(zeros(Cint, (n, length(A)))) end - mark!(A,rocblas_get_stream(handle())) - pivotArray != C_NULL && mark!(pivotArray,rocblas_get_stream(handle())) - mark!(info,rocblas_get_stream(handle())) + mark!(A, stream(handle())) + pivotArray != C_NULL && mark!(pivotArray, stream(handle())) + mark!(info, stream(handle())) pivotArray, info, A end function getrf_batched(A::Array{ROCMatrix{$elty},1}, @@ -1776,7 +1780,7 @@ for (fname, elty) in (:rocblas_zgetriBatched,:ComplexF64), (:rocblas_cgetriBatched,:ComplexF32)) @eval begin - # rocblas_status_t rocblas_dgetriBatched( + # rocblas_status rocblas_dgetriBatched( # rocblas_handle handle, int n, double **A, # int lda, int *PivotArray, double **C, # int ldc, int *info, int batchSize) @@ -1797,15 +1801,15 @@ for (fname, elty) in info = ROCArray(zeros(Cint,length(A))) wait!(A) wait!(pivotArray) - @check ccall(($(string(fname)),librocblas), rocblas_status_t, + @check ccall(($(string(fname)),librocblas), rocblas_status, (rocblas_handle, Cint, Ptr{Ptr{$elty}}, Cint, Ptr{Cint}, Ptr{Ptr{$elty}}, Cint, Ptr{Cint}, Cint), handle(), n, Aptrs, lda, pivotArray, Cptrs, ldc, info, length(A)) - mark!(A,rocblas_get_stream(handle())) - mark!(pivotArray,rocblas_get_stream(handle())) - mark!(info,rocblas_get_stream(handle())) - mark!(C,rocblas_get_stream(handle())) + mark!(A, stream(handle())) + mark!(pivotArray, stream(handle())) + mark!(info, stream(handle())) + mark!(C, stream(handle())) pivotArray, info, C end end @@ -1819,7 +1823,7 @@ for (fname, elty) in (:rocblas_zmatinvBatched,:ComplexF64), (:rocblas_cmatinvBatched,:ComplexF32)) @eval begin - # rocblas_status_t rocblas_dmatinvBatched( + # rocblas_status rocblas_dmatinvBatched( # rocblas_handle handle, int n, double **A, # int lda, double **C, int ldc, # int *info, int batchSize) @@ -1841,14 +1845,14 @@ for (fname, elty) in Cptrs = device_batch(C) info = ROCArray(zeros(Cint,length(A))) wait!(A) - @check ccall(($(string(fname)),librocblas), rocblas_status_t, + @check ccall(($(string(fname)),librocblas), rocblas_status, (rocblas_handle, Cint, Ptr{Ptr{$elty}}, Cint, Ptr{Ptr{$elty}}, Cint, Ptr{Cint}, Cint), handle(), n, Aptrs, lda, Cptrs, ldc, info, length(A)) - mark!(A,rocblas_get_stream(handle())) - mark!(info,rocblas_get_stream(handle())) - mark!(C,rocblas_get_stream(handle())) + mark!(A, stream(handle())) + mark!(info, stream(handle())) + mark!(C, stream(handle())) info, C end end @@ -1862,7 +1866,7 @@ for (fname, elty) in (:rocblas_zgeqrfBatched,:ComplexF64), (:rocblas_cgeqrfBatched,:ComplexF32)) @eval begin - # rocblas_status_t rocblas_dgeqrfBatched( + # rocblas_status rocblas_dgeqrfBatched( # rocblas_handle handle, int n, int m, # double **A, int lda, double **TauArray, # int *infoArray, int batchSize) @@ -1878,7 +1882,7 @@ for (fname, elty) in Tauptrs = device_batch(TauArray) info = zero(Cint) wait!(A) - @check ccall(($(string(fname)),librocblas), rocblas_status_t, + @check ccall(($(string(fname)),librocblas), rocblas_status, (rocblas_handle, Cint, Cint, Ptr{Ptr{$elty}}, Cint, Ptr{Ptr{$elty}}, Ptr{Cint}, Cint), handle(), m, n, Aptrs, lda, @@ -1886,8 +1890,8 @@ for (fname, elty) in if( info != 0 ) throw(ArgumentError,string("Invalid value at ",-info)) end - mark!(A,rocblas_get_stream(handle())) - mark!(TauArray,rocblas_get_stream(handle())) + mark!(A, stream(handle())) + mark!(TauArray, stream(handle())) TauArray, A end function geqrf_batched(A::Array{ROCMatrix{$elty},1}) @@ -1904,7 +1908,7 @@ for (fname, elty) in (:rocblas_zgelsBatched,:ComplexF64), (:rocblas_cgelsBatched,:ComplexF32)) @eval begin - # rocblas_status_t rocblas_dgelsBatched( + # rocblas_status rocblas_dgelsBatched( # rocblas_handle handle, int m, int n, # int nrhs, double **A, int lda, # double **C, int ldc, int *infoArray, @@ -1936,8 +1940,8 @@ for (fname, elty) in infoarray = ROCArray(zeros(Cint, length(A))) wait!(A) wait!(C) - @check ccall(($(string(fname)),librocblas), rocblas_status_t, - (rocblas_handle, rocblas_operation_t, Cint, Cint, + @check ccall(($(string(fname)),librocblas), rocblas_status, + (rocblas_handle, rocblas_operation, Cint, Cint, Cint, Ptr{Ptr{$elty}}, Cint, Ptr{Ptr{$elty}}, Cint, Ptr{Cint}, Ptr{Cint}, Cint), handle(), roctrans, m, n, nrhs, Aptrs, lda, @@ -1945,9 +1949,9 @@ for (fname, elty) in if( info != 0 ) throw(ArgumentError,string("Invalid value at ",-info)) end - mark!(A,rocblas_get_stream(handle())) - mark!(C,rocblas_get_stream(handle())) - mark!(infoarray,rocblas_get_stream(handle())) + mark!(A, stream(handle())) + mark!(C, stream(handle())) + mark!(infoarray, stream(handle())) A, C, infoarray end function gels_batched(trans::Char, @@ -1964,7 +1968,7 @@ for (fname, elty) in ((:rocblas_ddgmm,:Float64), (:rocblas_zdgmm,:ComplexF64), (:rocblas_cdgmm,:ComplexF32)) @eval begin - # rocblas_status_t rocblas_cdgmm( + # rocblas_status rocblas_cdgmm( # rocblas_handle handle, rocblas_side_t mode, # int m, int n, # const rocComplex *A, int lda, @@ -1985,11 +1989,11 @@ for (fname, elty) in ((:rocblas_ddgmm,:Float64), incx = stride(X,1) ldc = max(1,stride(C,2)) wait!((A,X,C)) - @check ccall(($(string(fname)),librocblas), rocblas_status_t, - (rocblas_handle, rocblas_side_t, Cint, Cint, + @check ccall(($(string(fname)),librocblas), rocblas_status, + (rocblas_handle, rocblas_side, Cint, Cint, Ptr{$elty}, Cint, Ptr{$elty}, Cint, Ptr{$elty}, Cint), handle(), rocside, m, n, A, lda, X, incx, C, ldc) - mark!((A,X,C),rocblas_get_stream(handle())) + mark!((A,X,C), stream(handle())) C end function dgmm(mode::Char, diff --git a/src/runtime/sync.jl b/src/runtime/sync.jl index fcac39c18..3828dfd8d 100644 --- a/src/runtime/sync.jl +++ b/src/runtime/sync.jl @@ -34,6 +34,8 @@ mark!(ss::SyncState, signal::ROCKernelSignal) = lock(()->push!(ss.signals, signal), ss.lock) mark!(ss::SyncState, stream::Ptr{Cvoid}) = lock(()->push!(ss.streams, stream), ss.lock) +mark!(ss::SyncState, stream::HIP.HIPStream) = + mark!(ss, stream.stream) wait!(x) = Adapt.adapt(WaitAdaptor(), x) mark!(x, s) = Adapt.adapt(MarkAdaptor(s), x)