hanzo-rocm 0.5.2

Rust bindings for AMD ROCm libraries
// src/rocsolver/ffi.rs
//! FFI re-exports for rocSOLVER.
//!
//! This module selectively re-exports the FFI bindings that are needed for the safe wrappers.
//! Users should generally not need to use this module directly.

// Re-export bindings module (excluding handle types that would conflict with rocblas)
pub use super::bindings::{
    // rocSOLVER-specific enums
    rocblas_direct,
    rocblas_direct_,
    rocblas_direct__rocblas_backward_direction,
    rocblas_direct__rocblas_forward_direction,
    rocblas_eform,
    rocblas_eform_,
    rocblas_eform__rocblas_eform_abx,
    rocblas_eform__rocblas_eform_ax,
    rocblas_eform__rocblas_eform_bax,
    rocblas_eorder,
    rocblas_eorder_,
    rocblas_eorder__rocblas_eorder_blocks,
    rocblas_eorder__rocblas_eorder_entire,
    rocblas_erange,
    rocblas_erange_,
    rocblas_erange__rocblas_erange_all,
    rocblas_erange__rocblas_erange_index,
    rocblas_erange__rocblas_erange_value,
    rocblas_esort,
    rocblas_esort_,
    rocblas_esort__rocblas_esort_ascending,
    rocblas_esort__rocblas_esort_none,
    rocblas_evect,
    rocblas_evect_,
    rocblas_evect__rocblas_evect_none,
    rocblas_evect__rocblas_evect_original,
    rocblas_evect__rocblas_evect_tridiagonal,
    rocblas_srange,
    rocblas_srange_,
    rocblas_srange__rocblas_srange_all,
    rocblas_srange__rocblas_srange_index,
    rocblas_srange__rocblas_srange_value,
    rocblas_storev,
    rocblas_storev_,
    rocblas_storev__rocblas_column_wise,
    rocblas_storev__rocblas_row_wise,
    rocblas_svect,
    rocblas_svect_,
    rocblas_svect__rocblas_svect_all,
    rocblas_svect__rocblas_svect_none,
    rocblas_svect__rocblas_svect_overwrite,
    rocblas_svect__rocblas_svect_singular,
    rocblas_workmode,
    rocblas_workmode_,
    rocblas_workmode__rocblas_inplace,
    rocblas_workmode__rocblas_outofplace,
    rocsolver_alg_mode,
    rocsolver_alg_mode_,
    rocsolver_alg_mode__rocsolver_alg_mode_gpu,
    rocsolver_alg_mode__rocsolver_alg_mode_hybrid,
    rocsolver_alg_mode__rocsolver_alg_mode_mixed,
    // rocSOLVER functions - decompositions
    rocsolver_cgebrd,
    rocsolver_cgebrd_batched,
    rocsolver_cgebrd_strided_batched,
    // rocSOLVER functions - solvers
    rocsolver_cgels,
    rocsolver_cgels_batched,
    rocsolver_cgels_strided_batched,
    rocsolver_cgeqrf,
    rocsolver_cgeqrf_batched,
    rocsolver_cgeqrf_strided_batched,
    rocsolver_cgesv,
    rocsolver_cgesv_batched,
    rocsolver_cgesv_strided_batched,
    // rocSOLVER functions - SVD
    rocsolver_cgesvd,
    rocsolver_cgesvd_batched,
    rocsolver_cgesvd_strided_batched,
    rocsolver_cgetrf,
    rocsolver_cgetrf_batched,
    rocsolver_cgetrf_npvt,
    rocsolver_cgetrf_npvt_batched,
    rocsolver_cgetrf_npvt_strided_batched,
    rocsolver_cgetrf_strided_batched,
    rocsolver_cgetrs,
    rocsolver_cgetrs_batched,
    rocsolver_cgetrs_strided_batched,
    // rocSOLVER functions - eigenvalue
    rocsolver_cheev,
    rocsolver_cheev_batched,
    rocsolver_cheev_strided_batched,
    rocsolver_cposv,
    rocsolver_cposv_batched,
    rocsolver_cposv_strided_batched,
    rocsolver_cpotrf,
    rocsolver_cpotrf_batched,
    rocsolver_cpotrf_strided_batched,
    // rocSOLVER functions - orthogonal (no batched variants exist)
    rocsolver_cungqr,
    rocsolver_cunmqr,
    rocsolver_dgebrd,
    rocsolver_dgebrd_batched,
    rocsolver_dgebrd_strided_batched,
    rocsolver_dgels,
    rocsolver_dgels_batched,
    rocsolver_dgels_strided_batched,
    rocsolver_dgeqrf,
    rocsolver_dgeqrf_batched,
    rocsolver_dgeqrf_strided_batched,
    rocsolver_dgesv,
    rocsolver_dgesv_batched,
    rocsolver_dgesv_strided_batched,
    rocsolver_dgesvd,
    rocsolver_dgesvd_batched,
    rocsolver_dgesvd_strided_batched,
    rocsolver_dgetrf,
    rocsolver_dgetrf_batched,
    rocsolver_dgetrf_npvt,
    rocsolver_dgetrf_npvt_batched,
    rocsolver_dgetrf_npvt_strided_batched,
    rocsolver_dgetrf_strided_batched,
    rocsolver_dgetrs,
    rocsolver_dgetrs_batched,
    rocsolver_dgetrs_strided_batched,
    rocsolver_dorgqr,
    rocsolver_dormqr,
    rocsolver_dposv,
    rocsolver_dposv_batched,
    rocsolver_dposv_strided_batched,
    rocsolver_dpotrf,
    rocsolver_dpotrf_batched,
    rocsolver_dpotrf_strided_batched,
    rocsolver_dsyev,
    rocsolver_dsyev_batched,
    rocsolver_dsyev_strided_batched,
    rocsolver_sgebrd,
    rocsolver_sgebrd_batched,
    rocsolver_sgebrd_strided_batched,
    rocsolver_sgels,
    rocsolver_sgels_batched,
    rocsolver_sgels_strided_batched,
    rocsolver_sgeqrf,
    rocsolver_sgeqrf_batched,
    rocsolver_sgeqrf_strided_batched,
    rocsolver_sgesv,
    rocsolver_sgesv_batched,
    rocsolver_sgesv_strided_batched,
    rocsolver_sgesvd,
    rocsolver_sgesvd_batched,
    rocsolver_sgesvd_strided_batched,
    rocsolver_sgetrf,
    rocsolver_sgetrf_batched,
    rocsolver_sgetrf_npvt,
    rocsolver_sgetrf_npvt_batched,
    rocsolver_sgetrf_npvt_strided_batched,
    rocsolver_sgetrf_strided_batched,
    rocsolver_sgetrs,
    rocsolver_sgetrs_batched,
    rocsolver_sgetrs_strided_batched,
    rocsolver_sorgqr,
    rocsolver_sormqr,
    rocsolver_sposv,
    rocsolver_sposv_batched,
    rocsolver_sposv_strided_batched,
    rocsolver_spotrf,
    rocsolver_spotrf_batched,
    rocsolver_spotrf_strided_batched,
    rocsolver_ssyev,
    rocsolver_ssyev_batched,
    rocsolver_ssyev_strided_batched,
    rocsolver_zgebrd,
    rocsolver_zgebrd_batched,
    rocsolver_zgebrd_strided_batched,
    rocsolver_zgels,
    rocsolver_zgels_batched,
    rocsolver_zgels_strided_batched,
    rocsolver_zgeqrf,
    rocsolver_zgeqrf_batched,
    rocsolver_zgeqrf_strided_batched,
    rocsolver_zgesv,
    rocsolver_zgesv_batched,
    rocsolver_zgesv_strided_batched,
    rocsolver_zgesvd,
    rocsolver_zgesvd_batched,
    rocsolver_zgesvd_strided_batched,
    rocsolver_zgetrf,
    rocsolver_zgetrf_batched,
    rocsolver_zgetrf_npvt,
    rocsolver_zgetrf_npvt_batched,
    rocsolver_zgetrf_npvt_strided_batched,
    rocsolver_zgetrf_strided_batched,
    rocsolver_zgetrs,
    rocsolver_zgetrs_batched,
    rocsolver_zgetrs_strided_batched,
    rocsolver_zheev,
    rocsolver_zheev_batched,
    rocsolver_zheev_strided_batched,
    rocsolver_zposv,
    rocsolver_zposv_batched,
    rocsolver_zposv_strided_batched,
    rocsolver_zpotrf,
    rocsolver_zpotrf_batched,
    rocsolver_zpotrf_strided_batched,
    rocsolver_zungqr,
    rocsolver_zunmqr,
};

// Re-export common rocBLAS types that rocSOLVER uses
// IMPORTANT: We use rocblas types for handle, status, etc. to ensure compatibility
pub use crate::rocblas::ffi::{
    rocblas_diagonal, rocblas_double_complex, rocblas_fill, rocblas_float_complex, rocblas_handle,
    rocblas_int, rocblas_operation, rocblas_side, rocblas_status, rocblas_stride,
};