// @generated by smolvm-cuda-codegen — do not edit. lib='cublas' id=1
pub struct GenLib { _lib: Library,
    f_cublasCreate_v2: unsafe extern "C" fn(*mut *mut c_void) -> c_int,
    f_cublasDestroy_v2: unsafe extern "C" fn(*mut c_void) -> c_int,
    f_cublasSgemm_v2: unsafe extern "C" fn(*mut c_void, c_int, c_int, c_int, c_int, c_int, *const f32, *const f32, c_int, *const f32, c_int, *const f32, *mut f32, c_int) -> c_int,
    f_cublasHgemm: unsafe extern "C" fn(*mut c_void, c_int, c_int, c_int, c_int, c_int, *const u16, *const u16, c_int, *const u16, c_int, *const u16, *mut u16, c_int) -> c_int,
    f_cublasDgemm_v2: unsafe extern "C" fn(*mut c_void, c_int, c_int, c_int, c_int, c_int, *const f64, *const f64, c_int, *const f64, c_int, *const f64, *mut f64, c_int) -> c_int,
    f_cublasSgemmStridedBatched: unsafe extern "C" fn(*mut c_void, c_int, c_int, c_int, c_int, c_int, *const f32, *const f32, c_int, i64, *const f32, c_int, i64, *const f32, *mut f32, c_int, i64, c_int) -> c_int,
    f_cublasDgemmStridedBatched: unsafe extern "C" fn(*mut c_void, c_int, c_int, c_int, c_int, c_int, *const f64, *const f64, c_int, i64, *const f64, c_int, i64, *const f64, *mut f64, c_int, i64, c_int) -> c_int,
    f_cublasSetStream_v2: unsafe extern "C" fn(*mut c_void, *mut c_void) -> c_int,
    f_cublasSetWorkspace_v2: unsafe extern "C" fn(*mut c_void, *mut c_void, usize) -> c_int,
    f_cublasSetMathMode: unsafe extern "C" fn(*mut c_void, c_int) -> c_int,
    f_cublasGetMathMode: unsafe extern "C" fn(*mut c_void, *mut c_int) -> c_int,
    f_cublasGetProperty: unsafe extern "C" fn(c_int, *mut c_int) -> c_int,
    f_cublasGemmEx: unsafe extern "C" fn(*mut c_void, c_int, c_int, c_int, c_int, c_int, *const f32, *const c_void, c_int, c_int, *const c_void, c_int, c_int, *const f32, *mut c_void, c_int, c_int, c_int, c_int) -> c_int,
    f_cublasGemmStridedBatchedEx: unsafe extern "C" fn(*mut c_void, c_int, c_int, c_int, c_int, c_int, *const f32, *const c_void, c_int, c_int, i64, *const c_void, c_int, c_int, i64, *const f32, *mut c_void, c_int, c_int, i64, c_int, c_int, c_int) -> c_int,
    f_cublasGemmBatchedEx: unsafe extern "C" fn(*mut c_void, c_int, c_int, c_int, c_int, c_int, *const f32, *const c_void, c_int, c_int, *const c_void, c_int, c_int, *const f32, *mut c_void, c_int, c_int, c_int, c_int, c_int) -> c_int,
    f_cublasSaxpy_v2: unsafe extern "C" fn(*mut c_void, c_int, *const f32, *const f32, c_int, *mut f32, c_int) -> c_int,
    f_cublasDaxpy_v2: unsafe extern "C" fn(*mut c_void, c_int, *const f64, *const f64, c_int, *mut f64, c_int) -> c_int,
    f_cublasSscal_v2: unsafe extern "C" fn(*mut c_void, c_int, *const f32, *mut f32, c_int) -> c_int,
    f_cublasDscal_v2: unsafe extern "C" fn(*mut c_void, c_int, *const f64, *mut f64, c_int) -> c_int,
    f_cublasScopy_v2: unsafe extern "C" fn(*mut c_void, c_int, *mut f32, c_int, *mut f32, c_int) -> c_int,
    f_cublasDcopy_v2: unsafe extern "C" fn(*mut c_void, c_int, *mut f64, c_int, *mut f64, c_int) -> c_int,
    f_cublasSswap_v2: unsafe extern "C" fn(*mut c_void, c_int, *mut f32, c_int, *mut f32, c_int) -> c_int,
    f_cublasDswap_v2: unsafe extern "C" fn(*mut c_void, c_int, *mut f64, c_int, *mut f64, c_int) -> c_int,
    f_cublasSgemv_v2: unsafe extern "C" fn(*mut c_void, c_int, c_int, c_int, *const f32, *const f32, c_int, *const f32, c_int, *const f32, *mut f32, c_int) -> c_int,
    f_cublasDgemv_v2: unsafe extern "C" fn(*mut c_void, c_int, c_int, c_int, *const f64, *const f64, c_int, *const f64, c_int, *const f64, *mut f64, c_int) -> c_int,
    f_cublasSger_v2: unsafe extern "C" fn(*mut c_void, c_int, c_int, *const f32, *const f32, c_int, *const f32, c_int, *mut f32, c_int) -> c_int,
    f_cublasDger_v2: unsafe extern "C" fn(*mut c_void, c_int, c_int, *const f64, *const f64, c_int, *const f64, c_int, *mut f64, c_int) -> c_int,
    f_cublasSgeam: unsafe extern "C" fn(*mut c_void, c_int, c_int, c_int, c_int, *const f32, *const f32, c_int, *const f32, *const f32, c_int, *mut f32, c_int) -> c_int,
    f_cublasDgeam: unsafe extern "C" fn(*mut c_void, c_int, c_int, c_int, c_int, *const f64, *const f64, c_int, *const f64, *const f64, c_int, *mut f64, c_int) -> c_int,
    f_cublasSsyrk_v2: unsafe extern "C" fn(*mut c_void, c_int, c_int, c_int, c_int, *const f32, *const f32, c_int, *const f32, *mut f32, c_int) -> c_int,
    f_cublasDsyrk_v2: unsafe extern "C" fn(*mut c_void, c_int, c_int, c_int, c_int, *const f64, *const f64, c_int, *const f64, *mut f64, c_int) -> c_int,
    f_cublasSsymm_v2: unsafe extern "C" fn(*mut c_void, c_int, c_int, c_int, c_int, *const f32, *const f32, c_int, *const f32, c_int, *const f32, *mut f32, c_int) -> c_int,
    f_cublasDsymm_v2: unsafe extern "C" fn(*mut c_void, c_int, c_int, c_int, c_int, *const f64, *const f64, c_int, *const f64, c_int, *const f64, *mut f64, c_int) -> c_int,
    f_cublasStrsm_v2: unsafe extern "C" fn(*mut c_void, c_int, c_int, c_int, c_int, c_int, c_int, *const f32, *const f32, c_int, *mut f32, c_int) -> c_int,
    f_cublasDtrsm_v2: unsafe extern "C" fn(*mut c_void, c_int, c_int, c_int, c_int, c_int, c_int, *const f64, *const f64, c_int, *mut f64, c_int) -> c_int,
    f_cublasSetSmCountTarget: unsafe extern "C" fn(*mut c_void, c_int) -> c_int,
    f_cublasGetStream_v2: unsafe extern "C" fn(*mut c_void, *mut *mut c_void) -> c_int,
    f_cublasGetVersion_v2: unsafe extern "C" fn(*mut c_void, *mut c_int) -> c_int,
    f_cublasSdgmm: unsafe extern "C" fn(*mut c_void, c_int, c_int, c_int, *const f32, c_int, *const f32, c_int, *mut f32, c_int) -> c_int,
    f_cublasDdgmm: unsafe extern "C" fn(*mut c_void, c_int, c_int, c_int, *const f64, c_int, *const f64, c_int, *mut f64, c_int) -> c_int,
    f_cublasCdgmm: unsafe extern "C" fn(*mut c_void, c_int, c_int, c_int, *const c_void, c_int, *const c_void, c_int, *mut c_void, c_int) -> c_int,
    f_cublasZdgmm: unsafe extern "C" fn(*mut c_void, c_int, c_int, c_int, *const c_void, c_int, *const c_void, c_int, *mut c_void, c_int) -> c_int,
    f_cublasSsbmv_v2: unsafe extern "C" fn(*mut c_void, c_int, c_int, c_int, *const f32, *const f32, c_int, *const f32, c_int, *const f32, *mut f32, c_int) -> c_int,
    f_cublasDsbmv_v2: unsafe extern "C" fn(*mut c_void, c_int, c_int, c_int, *const f64, *const f64, c_int, *const f64, c_int, *const f64, *mut f64, c_int) -> c_int,
    f_cublasStpttr: unsafe extern "C" fn(*mut c_void, c_int, c_int, *const f32, *mut f32, c_int) -> c_int,
    f_cublasDtpttr: unsafe extern "C" fn(*mut c_void, c_int, c_int, *const f64, *mut f64, c_int) -> c_int,
    f_cublasStrttp: unsafe extern "C" fn(*mut c_void, c_int, c_int, *const f32, c_int, *mut f32) -> c_int,
    f_cublasDtrttp: unsafe extern "C" fn(*mut c_void, c_int, c_int, *const f64, c_int, *mut f64) -> c_int,
    f_cublasSgetriBatched: unsafe extern "C" fn(*mut c_void, c_int, *const c_void, c_int, *const c_int, *mut c_void, c_int, *mut c_int, c_int) -> c_int,
    f_cublasDgetriBatched: unsafe extern "C" fn(*mut c_void, c_int, *const c_void, c_int, *const c_int, *mut c_void, c_int, *mut c_int, c_int) -> c_int,
    f_cublasCgetriBatched: unsafe extern "C" fn(*mut c_void, c_int, *const c_void, c_int, *const c_int, *mut c_void, c_int, *mut c_int, c_int) -> c_int,
    f_cublasZgetriBatched: unsafe extern "C" fn(*mut c_void, c_int, *const c_void, c_int, *const c_int, *mut c_void, c_int, *mut c_int, c_int) -> c_int,
    f_cublasCgeam: unsafe extern "C" fn(*mut c_void, c_int, c_int, c_int, c_int, *const c_void, *const c_void, c_int, *const c_void, *const c_void, c_int, *mut c_void, c_int) -> c_int,
    f_cublasZgeam: unsafe extern "C" fn(*mut c_void, c_int, c_int, c_int, c_int, *const c_void, *const c_void, c_int, *const c_void, *const c_void, c_int, *mut c_void, c_int) -> c_int,
}
impl GenLib {
    pub fn load() -> Result<GenLib, String> {
        unsafe {
            let lib = super::open_host_lib("SMOLVM_CUBLAS_LIB", &["libcublas.so", "libcublas.so.13", "libcublas.so.12"])?;
            Ok(GenLib {
                f_cublasCreate_v2: sym(&lib, b"cublasCreate_v2\0")?,
                f_cublasDestroy_v2: sym(&lib, b"cublasDestroy_v2\0")?,
                f_cublasSgemm_v2: sym(&lib, b"cublasSgemm_v2\0")?,
                f_cublasHgemm: sym(&lib, b"cublasHgemm\0")?,
                f_cublasDgemm_v2: sym(&lib, b"cublasDgemm_v2\0")?,
                f_cublasSgemmStridedBatched: sym(&lib, b"cublasSgemmStridedBatched\0")?,
                f_cublasDgemmStridedBatched: sym(&lib, b"cublasDgemmStridedBatched\0")?,
                f_cublasSetStream_v2: sym(&lib, b"cublasSetStream_v2\0")?,
                f_cublasSetWorkspace_v2: sym(&lib, b"cublasSetWorkspace_v2\0")?,
                f_cublasSetMathMode: sym(&lib, b"cublasSetMathMode\0")?,
                f_cublasGetMathMode: sym(&lib, b"cublasGetMathMode\0")?,
                f_cublasGetProperty: sym(&lib, b"cublasGetProperty\0")?,
                f_cublasGemmEx: sym(&lib, b"cublasGemmEx\0")?,
                f_cublasGemmStridedBatchedEx: sym(&lib, b"cublasGemmStridedBatchedEx\0")?,
                f_cublasGemmBatchedEx: sym(&lib, b"cublasGemmBatchedEx\0")?,
                f_cublasSaxpy_v2: sym(&lib, b"cublasSaxpy_v2\0")?,
                f_cublasDaxpy_v2: sym(&lib, b"cublasDaxpy_v2\0")?,
                f_cublasSscal_v2: sym(&lib, b"cublasSscal_v2\0")?,
                f_cublasDscal_v2: sym(&lib, b"cublasDscal_v2\0")?,
                f_cublasScopy_v2: sym(&lib, b"cublasScopy_v2\0")?,
                f_cublasDcopy_v2: sym(&lib, b"cublasDcopy_v2\0")?,
                f_cublasSswap_v2: sym(&lib, b"cublasSswap_v2\0")?,
                f_cublasDswap_v2: sym(&lib, b"cublasDswap_v2\0")?,
                f_cublasSgemv_v2: sym(&lib, b"cublasSgemv_v2\0")?,
                f_cublasDgemv_v2: sym(&lib, b"cublasDgemv_v2\0")?,
                f_cublasSger_v2: sym(&lib, b"cublasSger_v2\0")?,
                f_cublasDger_v2: sym(&lib, b"cublasDger_v2\0")?,
                f_cublasSgeam: sym(&lib, b"cublasSgeam\0")?,
                f_cublasDgeam: sym(&lib, b"cublasDgeam\0")?,
                f_cublasSsyrk_v2: sym(&lib, b"cublasSsyrk_v2\0")?,
                f_cublasDsyrk_v2: sym(&lib, b"cublasDsyrk_v2\0")?,
                f_cublasSsymm_v2: sym(&lib, b"cublasSsymm_v2\0")?,
                f_cublasDsymm_v2: sym(&lib, b"cublasDsymm_v2\0")?,
                f_cublasStrsm_v2: sym(&lib, b"cublasStrsm_v2\0")?,
                f_cublasDtrsm_v2: sym(&lib, b"cublasDtrsm_v2\0")?,
                f_cublasSetSmCountTarget: sym(&lib, b"cublasSetSmCountTarget\0")?,
                f_cublasGetStream_v2: sym(&lib, b"cublasGetStream_v2\0")?,
                f_cublasGetVersion_v2: sym(&lib, b"cublasGetVersion_v2\0")?,
                f_cublasSdgmm: sym(&lib, b"cublasSdgmm\0")?,
                f_cublasDdgmm: sym(&lib, b"cublasDdgmm\0")?,
                f_cublasCdgmm: sym(&lib, b"cublasCdgmm\0")?,
                f_cublasZdgmm: sym(&lib, b"cublasZdgmm\0")?,
                f_cublasSsbmv_v2: sym(&lib, b"cublasSsbmv_v2\0")?,
                f_cublasDsbmv_v2: sym(&lib, b"cublasDsbmv_v2\0")?,
                f_cublasStpttr: sym(&lib, b"cublasStpttr\0")?,
                f_cublasDtpttr: sym(&lib, b"cublasDtpttr\0")?,
                f_cublasStrttp: sym(&lib, b"cublasStrttp\0")?,
                f_cublasDtrttp: sym(&lib, b"cublasDtrttp\0")?,
                f_cublasSgetriBatched: sym(&lib, b"cublasSgetriBatched\0")?,
                f_cublasDgetriBatched: sym(&lib, b"cublasDgetriBatched\0")?,
                f_cublasCgetriBatched: sym(&lib, b"cublasCgetriBatched\0")?,
                f_cublasZgetriBatched: sym(&lib, b"cublasZgetriBatched\0")?,
                f_cublasCgeam: sym(&lib, b"cublasCgeam\0")?,
                f_cublasZgeam: sym(&lib, b"cublasZgeam\0")?,
                _lib: lib,
            })
        }
    }
    pub fn dispatch(&self, func: u16, args: &[u8], __vh: &mut std::collections::HashMap<u64, u64>, __streams: &std::collections::HashMap<u64, u64>) -> (i32, Vec<u8>) {
        let mut __c = GenCur { b: args, p: 0 };
        let _ = __streams;
        match func {
            0 => { let mut h: *mut c_void = std::ptr::null_mut(); let st = unsafe { (self.f_cublasCreate_v2)(&mut h) }; if st == 0 && args.len() >= 8 { let id = u64::from_le_bytes(args[..8].try_into().unwrap()); if id & super::VHANDLE_TAG != 0 { __vh.insert(id, h as u64); if std::env::var_os("SMOLVM_CUDA_HOST_OPLOG").is_some() { eprintln!("[vh-insert] pid={} id={id:#x}", std::process::id()); } } } (st, (h as u64).to_le_bytes().to_vec()) }
            1 => {
                let __raw = __c.u64();
                let handle = super::vh_resolve(__vh, __raw) as *mut c_void;
                if __raw & super::VHANDLE_TAG != 0 { __vh.remove(&__raw); }
                let mut out = Vec::new();
                let st = unsafe { (self.f_cublasDestroy_v2)(handle) };
                (st, out)
            }
            2 => {
                let handle = super::vh_resolve(__vh, __c.u64()) as *mut c_void;
                let transa = __c.i32();
                let transb = __c.i32();
                let m = __c.i32();
                let n = __c.i32();
                let k = __c.i32();
                let alpha_v = __c.f32();
                let A = super::dptr_resolve(__c.u64()) as *const f32;
                let lda = __c.i32();
                let B = super::dptr_resolve(__c.u64()) as *const f32;
                let ldb = __c.i32();
                let beta_v = __c.f32();
                let C = super::dptr_resolve(__c.u64()) as *mut f32;
                let ldc = __c.i32();
                let mut out = Vec::new();
                let st = unsafe { (self.f_cublasSgemm_v2)(handle, transa as c_int, transb as c_int, m as c_int, n as c_int, k as c_int, &alpha_v, A, lda as c_int, B, ldb as c_int, &beta_v, C, ldc as c_int) };
                (st, out)
            }
            3 => {
                let handle = super::vh_resolve(__vh, __c.u64()) as *mut c_void;
                let transa = __c.i32();
                let transb = __c.i32();
                let m = __c.i32();
                let n = __c.i32();
                let k = __c.i32();
                let alpha_v = __c.u16();
                let A = super::dptr_resolve(__c.u64()) as *const u16;
                let lda = __c.i32();
                let B = super::dptr_resolve(__c.u64()) as *const u16;
                let ldb = __c.i32();
                let beta_v = __c.u16();
                let C = super::dptr_resolve(__c.u64()) as *mut u16;
                let ldc = __c.i32();
                let mut out = Vec::new();
                let st = unsafe { (self.f_cublasHgemm)(handle, transa as c_int, transb as c_int, m as c_int, n as c_int, k as c_int, &alpha_v, A, lda as c_int, B, ldb as c_int, &beta_v, C, ldc as c_int) };
                (st, out)
            }
            4 => {
                let handle = super::vh_resolve(__vh, __c.u64()) as *mut c_void;
                let transa = __c.i32();
                let transb = __c.i32();
                let m = __c.i32();
                let n = __c.i32();
                let k = __c.i32();
                let alpha_v = __c.f64();
                let A = super::dptr_resolve(__c.u64()) as *const f64;
                let lda = __c.i32();
                let B = super::dptr_resolve(__c.u64()) as *const f64;
                let ldb = __c.i32();
                let beta_v = __c.f64();
                let C = super::dptr_resolve(__c.u64()) as *mut f64;
                let ldc = __c.i32();
                let mut out = Vec::new();
                let st = unsafe { (self.f_cublasDgemm_v2)(handle, transa as c_int, transb as c_int, m as c_int, n as c_int, k as c_int, &alpha_v, A, lda as c_int, B, ldb as c_int, &beta_v, C, ldc as c_int) };
                (st, out)
            }
            5 => {
                let handle = super::vh_resolve(__vh, __c.u64()) as *mut c_void;
                let transa = __c.i32();
                let transb = __c.i32();
                let m = __c.i32();
                let n = __c.i32();
                let k = __c.i32();
                let alpha_v = __c.f32();
                let A = super::dptr_resolve(__c.u64()) as *const f32;
                let lda = __c.i32();
                let strideA = __c.i64();
                let B = super::dptr_resolve(__c.u64()) as *const f32;
                let ldb = __c.i32();
                let strideB = __c.i64();
                let beta_v = __c.f32();
                let C = super::dptr_resolve(__c.u64()) as *mut f32;
                let ldc = __c.i32();
                let strideC = __c.i64();
                let batchCount = __c.i32();
                let mut out = Vec::new();
                let st = unsafe { (self.f_cublasSgemmStridedBatched)(handle, transa as c_int, transb as c_int, m as c_int, n as c_int, k as c_int, &alpha_v, A, lda as c_int, strideA as i64, B, ldb as c_int, strideB as i64, &beta_v, C, ldc as c_int, strideC as i64, batchCount as c_int) };
                (st, out)
            }
            6 => {
                let handle = super::vh_resolve(__vh, __c.u64()) as *mut c_void;
                let transa = __c.i32();
                let transb = __c.i32();
                let m = __c.i32();
                let n = __c.i32();
                let k = __c.i32();
                let alpha_v = __c.f64();
                let A = super::dptr_resolve(__c.u64()) as *const f64;
                let lda = __c.i32();
                let strideA = __c.i64();
                let B = super::dptr_resolve(__c.u64()) as *const f64;
                let ldb = __c.i32();
                let strideB = __c.i64();
                let beta_v = __c.f64();
                let C = super::dptr_resolve(__c.u64()) as *mut f64;
                let ldc = __c.i32();
                let strideC = __c.i64();
                let batchCount = __c.i32();
                let mut out = Vec::new();
                let st = unsafe { (self.f_cublasDgemmStridedBatched)(handle, transa as c_int, transb as c_int, m as c_int, n as c_int, k as c_int, &alpha_v, A, lda as c_int, strideA as i64, B, ldb as c_int, strideB as i64, &beta_v, C, ldc as c_int, strideC as i64, batchCount as c_int) };
                (st, out)
            }
            7 => {
                let handle = super::vh_resolve(__vh, __c.u64()) as *mut c_void;
                let stream = super::stream_resolve(__streams, __c.u64()) as *mut c_void;
                let mut out = Vec::new();
                let st = unsafe { (self.f_cublasSetStream_v2)(handle, stream) };
                (st, out)
            }
            8 => {
                let handle = super::vh_resolve(__vh, __c.u64()) as *mut c_void;
                let workspace = super::dptr_resolve(__c.u64()) as *mut c_void;
                let size = __c.u64();
                let mut out = Vec::new();
                let st = unsafe { (self.f_cublasSetWorkspace_v2)(handle, workspace, size as usize) };
                (st, out)
            }
            9 => {
                let handle = super::vh_resolve(__vh, __c.u64()) as *mut c_void;
                let mode = __c.i32();
                let mut out = Vec::new();
                let st = unsafe { (self.f_cublasSetMathMode)(handle, mode as c_int) };
                (st, out)
            }
            10 => {
                let handle = super::vh_resolve(__vh, __c.u64()) as *mut c_void;
                let mut mode_v: c_int = 0 as c_int;
                let mut out = Vec::new();
                let st = unsafe { (self.f_cublasGetMathMode)(handle, &mut mode_v) };
                out.extend_from_slice(&(mode_v as i32).to_le_bytes());
                (st, out)
            }
            11 => {
                let prop_type = __c.i32();
                let mut value_v: c_int = 0 as c_int;
                let mut out = Vec::new();
                let st = unsafe { (self.f_cublasGetProperty)(prop_type as c_int, &mut value_v) };
                out.extend_from_slice(&(value_v as i32).to_le_bytes());
                (st, out)
            }
            12 => {
                let handle = super::vh_resolve(__vh, __c.u64()) as *mut c_void;
                let transa = __c.i32();
                let transb = __c.i32();
                let m = __c.i32();
                let n = __c.i32();
                let k = __c.i32();
                let alpha_v = __c.f32();
                let A = super::dptr_resolve(__c.u64()) as *const c_void;
                let Atype = __c.i32();
                let lda = __c.i32();
                let B = super::dptr_resolve(__c.u64()) as *const c_void;
                let Btype = __c.i32();
                let ldb = __c.i32();
                let beta_v = __c.f32();
                let C = super::dptr_resolve(__c.u64()) as *mut c_void;
                let Ctype = __c.i32();
                let ldc = __c.i32();
                let computeType = __c.i32();
                let algo = __c.i32();
                let mut out = Vec::new();
                let st = unsafe { (self.f_cublasGemmEx)(handle, transa as c_int, transb as c_int, m as c_int, n as c_int, k as c_int, &alpha_v, A, Atype as c_int, lda as c_int, B, Btype as c_int, ldb as c_int, &beta_v, C, Ctype as c_int, ldc as c_int, computeType as c_int, algo as c_int) };
                (st, out)
            }
            13 => {
                let handle = super::vh_resolve(__vh, __c.u64()) as *mut c_void;
                let transa = __c.i32();
                let transb = __c.i32();
                let m = __c.i32();
                let n = __c.i32();
                let k = __c.i32();
                let alpha_v = __c.f32();
                let A = super::dptr_resolve(__c.u64()) as *const c_void;
                let Atype = __c.i32();
                let lda = __c.i32();
                let strideA = __c.i64();
                let B = super::dptr_resolve(__c.u64()) as *const c_void;
                let Btype = __c.i32();
                let ldb = __c.i32();
                let strideB = __c.i64();
                let beta_v = __c.f32();
                let C = super::dptr_resolve(__c.u64()) as *mut c_void;
                let Ctype = __c.i32();
                let ldc = __c.i32();
                let strideC = __c.i64();
                let batchCount = __c.i32();
                let computeType = __c.i32();
                let algo = __c.i32();
                let mut out = Vec::new();
                let st = unsafe { (self.f_cublasGemmStridedBatchedEx)(handle, transa as c_int, transb as c_int, m as c_int, n as c_int, k as c_int, &alpha_v, A, Atype as c_int, lda as c_int, strideA as i64, B, Btype as c_int, ldb as c_int, strideB as i64, &beta_v, C, Ctype as c_int, ldc as c_int, strideC as i64, batchCount as c_int, computeType as c_int, algo as c_int) };
                (st, out)
            }
            14 => {
                let handle = super::vh_resolve(__vh, __c.u64()) as *mut c_void;
                let transa = __c.i32();
                let transb = __c.i32();
                let m = __c.i32();
                let n = __c.i32();
                let k = __c.i32();
                let alpha_v = __c.f32();
                let Aarray = super::dptr_resolve(__c.u64()) as *const c_void;
                let Atype = __c.i32();
                let lda = __c.i32();
                let Barray = super::dptr_resolve(__c.u64()) as *const c_void;
                let Btype = __c.i32();
                let ldb = __c.i32();
                let beta_v = __c.f32();
                let Carray = super::dptr_resolve(__c.u64()) as *mut c_void;
                let Ctype = __c.i32();
                let ldc = __c.i32();
                let batchCount = __c.i32();
                let computeType = __c.i32();
                let algo = __c.i32();
                let mut out = Vec::new();
                let st = unsafe { (self.f_cublasGemmBatchedEx)(handle, transa as c_int, transb as c_int, m as c_int, n as c_int, k as c_int, &alpha_v, Aarray, Atype as c_int, lda as c_int, Barray, Btype as c_int, ldb as c_int, &beta_v, Carray, Ctype as c_int, ldc as c_int, batchCount as c_int, computeType as c_int, algo as c_int) };
                (st, out)
            }
            15 => {
                let handle = super::vh_resolve(__vh, __c.u64()) as *mut c_void;
                let n = __c.i32();
                let alpha_v = __c.f32();
                let x = super::dptr_resolve(__c.u64()) as *const f32;
                let incx = __c.i32();
                let y = super::dptr_resolve(__c.u64()) as *mut f32;
                let incy = __c.i32();
                let mut out = Vec::new();
                let st = unsafe { (self.f_cublasSaxpy_v2)(handle, n as c_int, &alpha_v, x, incx as c_int, y, incy as c_int) };
                (st, out)
            }
            16 => {
                let handle = super::vh_resolve(__vh, __c.u64()) as *mut c_void;
                let n = __c.i32();
                let alpha_v = __c.f64();
                let x = super::dptr_resolve(__c.u64()) as *const f64;
                let incx = __c.i32();
                let y = super::dptr_resolve(__c.u64()) as *mut f64;
                let incy = __c.i32();
                let mut out = Vec::new();
                let st = unsafe { (self.f_cublasDaxpy_v2)(handle, n as c_int, &alpha_v, x, incx as c_int, y, incy as c_int) };
                (st, out)
            }
            17 => {
                let handle = super::vh_resolve(__vh, __c.u64()) as *mut c_void;
                let n = __c.i32();
                let alpha_v = __c.f32();
                let x = super::dptr_resolve(__c.u64()) as *mut f32;
                let incx = __c.i32();
                let mut out = Vec::new();
                let st = unsafe { (self.f_cublasSscal_v2)(handle, n as c_int, &alpha_v, x, incx as c_int) };
                (st, out)
            }
            18 => {
                let handle = super::vh_resolve(__vh, __c.u64()) as *mut c_void;
                let n = __c.i32();
                let alpha_v = __c.f64();
                let x = super::dptr_resolve(__c.u64()) as *mut f64;
                let incx = __c.i32();
                let mut out = Vec::new();
                let st = unsafe { (self.f_cublasDscal_v2)(handle, n as c_int, &alpha_v, x, incx as c_int) };
                (st, out)
            }
            19 => {
                let handle = super::vh_resolve(__vh, __c.u64()) as *mut c_void;
                let n = __c.i32();
                let x = super::dptr_resolve(__c.u64()) as *mut f32;
                let incx = __c.i32();
                let y = super::dptr_resolve(__c.u64()) as *mut f32;
                let incy = __c.i32();
                let mut out = Vec::new();
                let st = unsafe { (self.f_cublasScopy_v2)(handle, n as c_int, x, incx as c_int, y, incy as c_int) };
                (st, out)
            }
            20 => {
                let handle = super::vh_resolve(__vh, __c.u64()) as *mut c_void;
                let n = __c.i32();
                let x = super::dptr_resolve(__c.u64()) as *mut f64;
                let incx = __c.i32();
                let y = super::dptr_resolve(__c.u64()) as *mut f64;
                let incy = __c.i32();
                let mut out = Vec::new();
                let st = unsafe { (self.f_cublasDcopy_v2)(handle, n as c_int, x, incx as c_int, y, incy as c_int) };
                (st, out)
            }
            21 => {
                let handle = super::vh_resolve(__vh, __c.u64()) as *mut c_void;
                let n = __c.i32();
                let x = super::dptr_resolve(__c.u64()) as *mut f32;
                let incx = __c.i32();
                let y = super::dptr_resolve(__c.u64()) as *mut f32;
                let incy = __c.i32();
                let mut out = Vec::new();
                let st = unsafe { (self.f_cublasSswap_v2)(handle, n as c_int, x, incx as c_int, y, incy as c_int) };
                (st, out)
            }
            22 => {
                let handle = super::vh_resolve(__vh, __c.u64()) as *mut c_void;
                let n = __c.i32();
                let x = super::dptr_resolve(__c.u64()) as *mut f64;
                let incx = __c.i32();
                let y = super::dptr_resolve(__c.u64()) as *mut f64;
                let incy = __c.i32();
                let mut out = Vec::new();
                let st = unsafe { (self.f_cublasDswap_v2)(handle, n as c_int, x, incx as c_int, y, incy as c_int) };
                (st, out)
            }
            23 => {
                let handle = super::vh_resolve(__vh, __c.u64()) as *mut c_void;
                let trans = __c.i32();
                let m = __c.i32();
                let n = __c.i32();
                let alpha_v = __c.f32();
                let A = super::dptr_resolve(__c.u64()) as *const f32;
                let lda = __c.i32();
                let x = super::dptr_resolve(__c.u64()) as *const f32;
                let incx = __c.i32();
                let beta_v = __c.f32();
                let y = super::dptr_resolve(__c.u64()) as *mut f32;
                let incy = __c.i32();
                let mut out = Vec::new();
                let st = unsafe { (self.f_cublasSgemv_v2)(handle, trans as c_int, m as c_int, n as c_int, &alpha_v, A, lda as c_int, x, incx as c_int, &beta_v, y, incy as c_int) };
                (st, out)
            }
            24 => {
                let handle = super::vh_resolve(__vh, __c.u64()) as *mut c_void;
                let trans = __c.i32();
                let m = __c.i32();
                let n = __c.i32();
                let alpha_v = __c.f64();
                let A = super::dptr_resolve(__c.u64()) as *const f64;
                let lda = __c.i32();
                let x = super::dptr_resolve(__c.u64()) as *const f64;
                let incx = __c.i32();
                let beta_v = __c.f64();
                let y = super::dptr_resolve(__c.u64()) as *mut f64;
                let incy = __c.i32();
                let mut out = Vec::new();
                let st = unsafe { (self.f_cublasDgemv_v2)(handle, trans as c_int, m as c_int, n as c_int, &alpha_v, A, lda as c_int, x, incx as c_int, &beta_v, y, incy as c_int) };
                (st, out)
            }
            25 => {
                let handle = super::vh_resolve(__vh, __c.u64()) as *mut c_void;
                let m = __c.i32();
                let n = __c.i32();
                let alpha_v = __c.f32();
                let x = super::dptr_resolve(__c.u64()) as *const f32;
                let incx = __c.i32();
                let y = super::dptr_resolve(__c.u64()) as *const f32;
                let incy = __c.i32();
                let A = super::dptr_resolve(__c.u64()) as *mut f32;
                let lda = __c.i32();
                let mut out = Vec::new();
                let st = unsafe { (self.f_cublasSger_v2)(handle, m as c_int, n as c_int, &alpha_v, x, incx as c_int, y, incy as c_int, A, lda as c_int) };
                (st, out)
            }
            26 => {
                let handle = super::vh_resolve(__vh, __c.u64()) as *mut c_void;
                let m = __c.i32();
                let n = __c.i32();
                let alpha_v = __c.f64();
                let x = super::dptr_resolve(__c.u64()) as *const f64;
                let incx = __c.i32();
                let y = super::dptr_resolve(__c.u64()) as *const f64;
                let incy = __c.i32();
                let A = super::dptr_resolve(__c.u64()) as *mut f64;
                let lda = __c.i32();
                let mut out = Vec::new();
                let st = unsafe { (self.f_cublasDger_v2)(handle, m as c_int, n as c_int, &alpha_v, x, incx as c_int, y, incy as c_int, A, lda as c_int) };
                (st, out)
            }
            27 => {
                let handle = super::vh_resolve(__vh, __c.u64()) as *mut c_void;
                let transa = __c.i32();
                let transb = __c.i32();
                let m = __c.i32();
                let n = __c.i32();
                let alpha_v = __c.f32();
                let A = super::dptr_resolve(__c.u64()) as *const f32;
                let lda = __c.i32();
                let beta_v = __c.f32();
                let B = super::dptr_resolve(__c.u64()) as *const f32;
                let ldb = __c.i32();
                let C = super::dptr_resolve(__c.u64()) as *mut f32;
                let ldc = __c.i32();
                let mut out = Vec::new();
                let st = unsafe { (self.f_cublasSgeam)(handle, transa as c_int, transb as c_int, m as c_int, n as c_int, &alpha_v, A, lda as c_int, &beta_v, B, ldb as c_int, C, ldc as c_int) };
                (st, out)
            }
            28 => {
                let handle = super::vh_resolve(__vh, __c.u64()) as *mut c_void;
                let transa = __c.i32();
                let transb = __c.i32();
                let m = __c.i32();
                let n = __c.i32();
                let alpha_v = __c.f64();
                let A = super::dptr_resolve(__c.u64()) as *const f64;
                let lda = __c.i32();
                let beta_v = __c.f64();
                let B = super::dptr_resolve(__c.u64()) as *const f64;
                let ldb = __c.i32();
                let C = super::dptr_resolve(__c.u64()) as *mut f64;
                let ldc = __c.i32();
                let mut out = Vec::new();
                let st = unsafe { (self.f_cublasDgeam)(handle, transa as c_int, transb as c_int, m as c_int, n as c_int, &alpha_v, A, lda as c_int, &beta_v, B, ldb as c_int, C, ldc as c_int) };
                (st, out)
            }
            29 => {
                let handle = super::vh_resolve(__vh, __c.u64()) as *mut c_void;
                let uplo = __c.i32();
                let trans = __c.i32();
                let n = __c.i32();
                let k = __c.i32();
                let alpha_v = __c.f32();
                let A = super::dptr_resolve(__c.u64()) as *const f32;
                let lda = __c.i32();
                let beta_v = __c.f32();
                let C = super::dptr_resolve(__c.u64()) as *mut f32;
                let ldc = __c.i32();
                let mut out = Vec::new();
                let st = unsafe { (self.f_cublasSsyrk_v2)(handle, uplo as c_int, trans as c_int, n as c_int, k as c_int, &alpha_v, A, lda as c_int, &beta_v, C, ldc as c_int) };
                (st, out)
            }
            30 => {
                let handle = super::vh_resolve(__vh, __c.u64()) as *mut c_void;
                let uplo = __c.i32();
                let trans = __c.i32();
                let n = __c.i32();
                let k = __c.i32();
                let alpha_v = __c.f64();
                let A = super::dptr_resolve(__c.u64()) as *const f64;
                let lda = __c.i32();
                let beta_v = __c.f64();
                let C = super::dptr_resolve(__c.u64()) as *mut f64;
                let ldc = __c.i32();
                let mut out = Vec::new();
                let st = unsafe { (self.f_cublasDsyrk_v2)(handle, uplo as c_int, trans as c_int, n as c_int, k as c_int, &alpha_v, A, lda as c_int, &beta_v, C, ldc as c_int) };
                (st, out)
            }
            31 => {
                let handle = super::vh_resolve(__vh, __c.u64()) as *mut c_void;
                let side = __c.i32();
                let uplo = __c.i32();
                let m = __c.i32();
                let n = __c.i32();
                let alpha_v = __c.f32();
                let A = super::dptr_resolve(__c.u64()) as *const f32;
                let lda = __c.i32();
                let B = super::dptr_resolve(__c.u64()) as *const f32;
                let ldb = __c.i32();
                let beta_v = __c.f32();
                let C = super::dptr_resolve(__c.u64()) as *mut f32;
                let ldc = __c.i32();
                let mut out = Vec::new();
                let st = unsafe { (self.f_cublasSsymm_v2)(handle, side as c_int, uplo as c_int, m as c_int, n as c_int, &alpha_v, A, lda as c_int, B, ldb as c_int, &beta_v, C, ldc as c_int) };
                (st, out)
            }
            32 => {
                let handle = super::vh_resolve(__vh, __c.u64()) as *mut c_void;
                let side = __c.i32();
                let uplo = __c.i32();
                let m = __c.i32();
                let n = __c.i32();
                let alpha_v = __c.f64();
                let A = super::dptr_resolve(__c.u64()) as *const f64;
                let lda = __c.i32();
                let B = super::dptr_resolve(__c.u64()) as *const f64;
                let ldb = __c.i32();
                let beta_v = __c.f64();
                let C = super::dptr_resolve(__c.u64()) as *mut f64;
                let ldc = __c.i32();
                let mut out = Vec::new();
                let st = unsafe { (self.f_cublasDsymm_v2)(handle, side as c_int, uplo as c_int, m as c_int, n as c_int, &alpha_v, A, lda as c_int, B, ldb as c_int, &beta_v, C, ldc as c_int) };
                (st, out)
            }
            33 => {
                let handle = super::vh_resolve(__vh, __c.u64()) as *mut c_void;
                let side = __c.i32();
                let uplo = __c.i32();
                let trans = __c.i32();
                let diag = __c.i32();
                let m = __c.i32();
                let n = __c.i32();
                let alpha_v = __c.f32();
                let A = super::dptr_resolve(__c.u64()) as *const f32;
                let lda = __c.i32();
                let B = super::dptr_resolve(__c.u64()) as *mut f32;
                let ldb = __c.i32();
                let mut out = Vec::new();
                let st = unsafe { (self.f_cublasStrsm_v2)(handle, side as c_int, uplo as c_int, trans as c_int, diag as c_int, m as c_int, n as c_int, &alpha_v, A, lda as c_int, B, ldb as c_int) };
                (st, out)
            }
            34 => {
                let handle = super::vh_resolve(__vh, __c.u64()) as *mut c_void;
                let side = __c.i32();
                let uplo = __c.i32();
                let trans = __c.i32();
                let diag = __c.i32();
                let m = __c.i32();
                let n = __c.i32();
                let alpha_v = __c.f64();
                let A = super::dptr_resolve(__c.u64()) as *const f64;
                let lda = __c.i32();
                let B = super::dptr_resolve(__c.u64()) as *mut f64;
                let ldb = __c.i32();
                let mut out = Vec::new();
                let st = unsafe { (self.f_cublasDtrsm_v2)(handle, side as c_int, uplo as c_int, trans as c_int, diag as c_int, m as c_int, n as c_int, &alpha_v, A, lda as c_int, B, ldb as c_int) };
                (st, out)
            }
            35 => {
                let handle = super::vh_resolve(__vh, __c.u64()) as *mut c_void;
                let sm_count_target = __c.i32();
                let mut out = Vec::new();
                let st = unsafe { (self.f_cublasSetSmCountTarget)(handle, sm_count_target as c_int) };
                (st, out)
            }
            36 => {
                let handle = super::vh_resolve(__vh, __c.u64()) as *mut c_void;
                let mut stream_v: *mut c_void = std::ptr::null_mut();
                let mut out = Vec::new();
                let st = unsafe { (self.f_cublasGetStream_v2)(handle, &mut stream_v) };
                out.extend_from_slice(&super::stream_unresolve(__streams, stream_v as u64).to_le_bytes());
                (st, out)
            }
            37 => {
                let handle = super::vh_resolve(__vh, __c.u64()) as *mut c_void;
                let mut version_v: c_int = 0 as c_int;
                let mut out = Vec::new();
                let st = unsafe { (self.f_cublasGetVersion_v2)(handle, &mut version_v) };
                out.extend_from_slice(&(version_v as i32).to_le_bytes());
                (st, out)
            }
            38 => {
                let handle = super::vh_resolve(__vh, __c.u64()) as *mut c_void;
                let mode = __c.i32();
                let m = __c.i32();
                let n = __c.i32();
                let A = super::dptr_resolve(__c.u64()) as *const f32;
                let lda = __c.i32();
                let x = super::dptr_resolve(__c.u64()) as *const f32;
                let incx = __c.i32();
                let C = super::dptr_resolve(__c.u64()) as *mut f32;
                let ldc = __c.i32();
                let mut out = Vec::new();
                let st = unsafe { (self.f_cublasSdgmm)(handle, mode as c_int, m as c_int, n as c_int, A, lda as c_int, x, incx as c_int, C, ldc as c_int) };
                (st, out)
            }
            39 => {
                let handle = super::vh_resolve(__vh, __c.u64()) as *mut c_void;
                let mode = __c.i32();
                let m = __c.i32();
                let n = __c.i32();
                let A = super::dptr_resolve(__c.u64()) as *const f64;
                let lda = __c.i32();
                let x = super::dptr_resolve(__c.u64()) as *const f64;
                let incx = __c.i32();
                let C = super::dptr_resolve(__c.u64()) as *mut f64;
                let ldc = __c.i32();
                let mut out = Vec::new();
                let st = unsafe { (self.f_cublasDdgmm)(handle, mode as c_int, m as c_int, n as c_int, A, lda as c_int, x, incx as c_int, C, ldc as c_int) };
                (st, out)
            }
            40 => {
                let handle = super::vh_resolve(__vh, __c.u64()) as *mut c_void;
                let mode = __c.i32();
                let m = __c.i32();
                let n = __c.i32();
                let A = super::dptr_resolve(__c.u64()) as *const c_void;
                let lda = __c.i32();
                let x = super::dptr_resolve(__c.u64()) as *const c_void;
                let incx = __c.i32();
                let C = super::dptr_resolve(__c.u64()) as *mut c_void;
                let ldc = __c.i32();
                let mut out = Vec::new();
                let st = unsafe { (self.f_cublasCdgmm)(handle, mode as c_int, m as c_int, n as c_int, A, lda as c_int, x, incx as c_int, C, ldc as c_int) };
                (st, out)
            }
            41 => {
                let handle = super::vh_resolve(__vh, __c.u64()) as *mut c_void;
                let mode = __c.i32();
                let m = __c.i32();
                let n = __c.i32();
                let A = super::dptr_resolve(__c.u64()) as *const c_void;
                let lda = __c.i32();
                let x = super::dptr_resolve(__c.u64()) as *const c_void;
                let incx = __c.i32();
                let C = super::dptr_resolve(__c.u64()) as *mut c_void;
                let ldc = __c.i32();
                let mut out = Vec::new();
                let st = unsafe { (self.f_cublasZdgmm)(handle, mode as c_int, m as c_int, n as c_int, A, lda as c_int, x, incx as c_int, C, ldc as c_int) };
                (st, out)
            }
            42 => {
                let handle = super::vh_resolve(__vh, __c.u64()) as *mut c_void;
                let uplo = __c.i32();
                let n = __c.i32();
                let k = __c.i32();
                let alpha_v = __c.f32();
                let A = super::dptr_resolve(__c.u64()) as *const f32;
                let lda = __c.i32();
                let x = super::dptr_resolve(__c.u64()) as *const f32;
                let incx = __c.i32();
                let beta_v = __c.f32();
                let y = super::dptr_resolve(__c.u64()) as *mut f32;
                let incy = __c.i32();
                let mut out = Vec::new();
                let st = unsafe { (self.f_cublasSsbmv_v2)(handle, uplo as c_int, n as c_int, k as c_int, &alpha_v, A, lda as c_int, x, incx as c_int, &beta_v, y, incy as c_int) };
                (st, out)
            }
            43 => {
                let handle = super::vh_resolve(__vh, __c.u64()) as *mut c_void;
                let uplo = __c.i32();
                let n = __c.i32();
                let k = __c.i32();
                let alpha_v = __c.f64();
                let A = super::dptr_resolve(__c.u64()) as *const f64;
                let lda = __c.i32();
                let x = super::dptr_resolve(__c.u64()) as *const f64;
                let incx = __c.i32();
                let beta_v = __c.f64();
                let y = super::dptr_resolve(__c.u64()) as *mut f64;
                let incy = __c.i32();
                let mut out = Vec::new();
                let st = unsafe { (self.f_cublasDsbmv_v2)(handle, uplo as c_int, n as c_int, k as c_int, &alpha_v, A, lda as c_int, x, incx as c_int, &beta_v, y, incy as c_int) };
                (st, out)
            }
            44 => {
                let handle = super::vh_resolve(__vh, __c.u64()) as *mut c_void;
                let uplo = __c.i32();
                let n = __c.i32();
                let src = super::dptr_resolve(__c.u64()) as *const f32;
                let dst = super::dptr_resolve(__c.u64()) as *mut f32;
                let lda = __c.i32();
                let mut out = Vec::new();
                let st = unsafe { (self.f_cublasStpttr)(handle, uplo as c_int, n as c_int, src, dst, lda as c_int) };
                (st, out)
            }
            45 => {
                let handle = super::vh_resolve(__vh, __c.u64()) as *mut c_void;
                let uplo = __c.i32();
                let n = __c.i32();
                let src = super::dptr_resolve(__c.u64()) as *const f64;
                let dst = super::dptr_resolve(__c.u64()) as *mut f64;
                let lda = __c.i32();
                let mut out = Vec::new();
                let st = unsafe { (self.f_cublasDtpttr)(handle, uplo as c_int, n as c_int, src, dst, lda as c_int) };
                (st, out)
            }
            46 => {
                let handle = super::vh_resolve(__vh, __c.u64()) as *mut c_void;
                let uplo = __c.i32();
                let n = __c.i32();
                let src = super::dptr_resolve(__c.u64()) as *const f32;
                let lda = __c.i32();
                let dst = super::dptr_resolve(__c.u64()) as *mut f32;
                let mut out = Vec::new();
                let st = unsafe { (self.f_cublasStrttp)(handle, uplo as c_int, n as c_int, src, lda as c_int, dst) };
                (st, out)
            }
            47 => {
                let handle = super::vh_resolve(__vh, __c.u64()) as *mut c_void;
                let uplo = __c.i32();
                let n = __c.i32();
                let src = super::dptr_resolve(__c.u64()) as *const f64;
                let lda = __c.i32();
                let dst = super::dptr_resolve(__c.u64()) as *mut f64;
                let mut out = Vec::new();
                let st = unsafe { (self.f_cublasDtrttp)(handle, uplo as c_int, n as c_int, src, lda as c_int, dst) };
                (st, out)
            }
            48 => {
                let handle = super::vh_resolve(__vh, __c.u64()) as *mut c_void;
                let n = __c.i32();
                let Aarray = super::dptr_resolve(__c.u64()) as *const c_void;
                let lda = __c.i32();
                let pivots = super::dptr_resolve(__c.u64()) as *const c_int;
                let Carray = super::dptr_resolve(__c.u64()) as *mut c_void;
                let ldc = __c.i32();
                let info = super::dptr_resolve(__c.u64()) as *mut c_int;
                let batch_size = __c.i32();
                let mut out = Vec::new();
                let st = unsafe { (self.f_cublasSgetriBatched)(handle, n as c_int, Aarray, lda as c_int, pivots, Carray, ldc as c_int, info, batch_size as c_int) };
                (st, out)
            }
            49 => {
                let handle = super::vh_resolve(__vh, __c.u64()) as *mut c_void;
                let n = __c.i32();
                let Aarray = super::dptr_resolve(__c.u64()) as *const c_void;
                let lda = __c.i32();
                let pivots = super::dptr_resolve(__c.u64()) as *const c_int;
                let Carray = super::dptr_resolve(__c.u64()) as *mut c_void;
                let ldc = __c.i32();
                let info = super::dptr_resolve(__c.u64()) as *mut c_int;
                let batch_size = __c.i32();
                let mut out = Vec::new();
                let st = unsafe { (self.f_cublasDgetriBatched)(handle, n as c_int, Aarray, lda as c_int, pivots, Carray, ldc as c_int, info, batch_size as c_int) };
                (st, out)
            }
            50 => {
                let handle = super::vh_resolve(__vh, __c.u64()) as *mut c_void;
                let n = __c.i32();
                let Aarray = super::dptr_resolve(__c.u64()) as *const c_void;
                let lda = __c.i32();
                let pivots = super::dptr_resolve(__c.u64()) as *const c_int;
                let Carray = super::dptr_resolve(__c.u64()) as *mut c_void;
                let ldc = __c.i32();
                let info = super::dptr_resolve(__c.u64()) as *mut c_int;
                let batch_size = __c.i32();
                let mut out = Vec::new();
                let st = unsafe { (self.f_cublasCgetriBatched)(handle, n as c_int, Aarray, lda as c_int, pivots, Carray, ldc as c_int, info, batch_size as c_int) };
                (st, out)
            }
            51 => {
                let handle = super::vh_resolve(__vh, __c.u64()) as *mut c_void;
                let n = __c.i32();
                let Aarray = super::dptr_resolve(__c.u64()) as *const c_void;
                let lda = __c.i32();
                let pivots = super::dptr_resolve(__c.u64()) as *const c_int;
                let Carray = super::dptr_resolve(__c.u64()) as *mut c_void;
                let ldc = __c.i32();
                let info = super::dptr_resolve(__c.u64()) as *mut c_int;
                let batch_size = __c.i32();
                let mut out = Vec::new();
                let st = unsafe { (self.f_cublasZgetriBatched)(handle, n as c_int, Aarray, lda as c_int, pivots, Carray, ldc as c_int, info, batch_size as c_int) };
                (st, out)
            }
            52 => {
                let handle = super::vh_resolve(__vh, __c.u64()) as *mut c_void;
                let transa = __c.i32();
                let transb = __c.i32();
                let m = __c.i32();
                let n = __c.i32();
                let alpha_v = [__c.u64()];
                let A = super::dptr_resolve(__c.u64()) as *const c_void;
                let lda = __c.i32();
                let beta_v = [__c.u64()];
                let B = super::dptr_resolve(__c.u64()) as *const c_void;
                let ldb = __c.i32();
                let C = super::dptr_resolve(__c.u64()) as *mut c_void;
                let ldc = __c.i32();
                let mut out = Vec::new();
                let st = unsafe { (self.f_cublasCgeam)(handle, transa as c_int, transb as c_int, m as c_int, n as c_int, alpha_v.as_ptr().cast(), A, lda as c_int, beta_v.as_ptr().cast(), B, ldb as c_int, C, ldc as c_int) };
                (st, out)
            }
            53 => {
                let handle = super::vh_resolve(__vh, __c.u64()) as *mut c_void;
                let transa = __c.i32();
                let transb = __c.i32();
                let m = __c.i32();
                let n = __c.i32();
                let alpha_v = [__c.u64(), __c.u64()];
                let A = super::dptr_resolve(__c.u64()) as *const c_void;
                let lda = __c.i32();
                let beta_v = [__c.u64(), __c.u64()];
                let B = super::dptr_resolve(__c.u64()) as *const c_void;
                let ldb = __c.i32();
                let C = super::dptr_resolve(__c.u64()) as *mut c_void;
                let ldc = __c.i32();
                let mut out = Vec::new();
                let st = unsafe { (self.f_cublasZgeam)(handle, transa as c_int, transb as c_int, m as c_int, n as c_int, alpha_v.as_ptr().cast(), A, lda as c_int, beta_v.as_ptr().cast(), B, ldb as c_int, C, ldc as c_int) };
                (st, out)
            }
            _ => (super::super::CUDA_ERROR_NOT_FOUND, Vec::new()),
        }
    }
}
struct GenCur<'a> { b: &'a [u8], p: usize }
impl GenCur<'_> {
    fn take(&mut self, n: usize) -> [u8; 8] { let mut o = [0u8; 8]; let end = (self.p + n).min(self.b.len()); o[..end - self.p].copy_from_slice(&self.b[self.p..end]); self.p = end; o }
    fn u16(&mut self) -> u16 { u16::from_le_bytes(self.take(2)[..2].try_into().unwrap()) }
    fn i32(&mut self) -> i32 { i32::from_le_bytes(self.take(4)[..4].try_into().unwrap()) }
    fn i64(&mut self) -> i64 { i64::from_le_bytes(self.take(8)) }
    fn u64(&mut self) -> u64 { u64::from_le_bytes(self.take(8)) }
    fn f32(&mut self) -> f32 { f32::from_le_bytes(self.take(4)[..4].try_into().unwrap()) }
    fn f64(&mut self) -> f64 { f64::from_le_bytes(self.take(8)) }
}
