
    
9jU8              	         % S SK Jr  S SKrS SKrSrSrSrSrS\	S'   S	r
\
S
-  r
SrSrSr\" 5       rS rS rS rS rS r\S:X  Ga4  \" S5       r\R1                  5       rSSS5        Sr\ H  r\" \R9                  \5      5       r\R1                  5       rSSS5        S r\ Ht  r\RA                  5       r!\RD                  RG                  \R9                  \5      5      r$\$ r\R1                  5       RK                  5       r&SSS5        \" \&\\!\\5      rSrMv     M     \RO                  SS5      r\RO                  SS5      r\\RQ                  S5      S r\" SS5       r\RS                  \5        SSS5        gg! , (       d  f       GN#= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g= f)    )annotationsNz&/usr/local/cuda-{0}/include/cusparse.h)z11.3z11.0z10.2zehttps://raw.githubusercontent.com/ROCmSoftwarePlatform/hipSPARSE/rocm-{0}/library/include/hipsparse.h)z3.5.0z3.7.0z3.8.0z3.9.0z4.0.0z4.2.0ztuple[str, ...]typedefs)cusparseIndexBase_tcusparseStatus_tcusparseHandle_tcusparseMatDescr_tcsrsv2Info_tcsrsm2Info_tcsric02Info_tbsric02Info_tcsrilu02Info_tbsrilu02Info_tcsrgemm2Info_tcusparseMatrixType_tcusparseFillMode_tcusparseDiagType_tcusparsePointerMode_tcusparseAction_tcusparseDirection_tcusparseSolvePolicy_tcusparseOperation_t)cusparseSpVecDescr_tcusparseDnVecDescr_tcusparseSpMatDescr_tcusparseDnMatDescr_tcusparseIndexType_tcusparseFormat_tcusparseOrder_tcusparseSpMVAlg_tcusparseSpMMAlg_tcusparseSparseToDenseAlg_tcusparseDenseToSparseAlg_tcusparseCsr2CscAlg_ta  
#if HIP_VERSION >= 402
static hipDataType convert_hipDatatype(cudaDataType type) {
    switch(static_cast<int>(type)) {
        case 2 /* CUDA_R_16F */: return HIP_R_16F;
        case 0 /* CUDA_R_32F */: return HIP_R_32F;
        case 1 /* CUDA_R_64F */: return HIP_R_64F;
        case 6 /* CUDA_C_16F */: return HIP_C_16F;
        case 4 /* CUDA_C_32F */: return HIP_C_32F;
        case 5 /* CUDA_C_64F */: return HIP_C_64F;
        default: throw std::runtime_error("unrecognized type");
    }
}
#endif
a|  
#if HIP_VERSION >= 402
typedef enum {} cusparseOrder_t;
static hipsparseOrder_t convert_hipsparseOrder_t(cusparseOrder_t type) {
    switch(static_cast<int>(type)) {
        case 1 /* CUSPARSE_ORDER_COL */: return HIPSPARSE_ORDER_COLUMN;
        case 2 /* CUSPARSE_ORDER_ROW */: return HIPSPARSE_ORDER_ROW;
        default: throw std::runtime_error("unrecognized type");
    }
}
z[
#if HIP_VERSION < 401
#define HIPSPARSE_STATUS_NOT_SUPPORTED (hipsparseStatus_t)10
#endif
c                    U R                  U5      n US:X  a   U$ X[        U5      -      S:w  a  U R                  XS-   5      nO U$ M7  )N(   )findlen)cu_hcu_funccu_sigs      \/home/wildlama/miniconda3/lib/python3.13/site-packages/cupyx/tools/_hipsparse_stub_mapper.pyget_idx_to_funcr.   b   s[    YYwF R<
 M	 W%&#-YYwq1FM     c                d    U R                  S5      n [        U S   5      S-  [        U S   5      -   $ )N.r   d   r'   )splitint)hip_versions    r-   get_hip_ver_numr6   p   s4    ##C(K{1~$s;q>':::r/   c                   / nS n[        U 5       H  u  p4X2:w  d  M  UR                  S5      (       d  UR                  S5      (       a  UR                  U5        MK  UR                  S5      nUS:X  a  UR                  S5      nUS:X  a   UR                  X@US-      -   5        US-   nM  UR                  US US-    5        M     U$ )N,)r%   r'   )	enumerateendswithappendr(   )r,   cu_sig_processed	skip_linelines	break_idxs         r-   merge_bad_broken_linesrB   v   s     IV$zz#!**S// ''*FF3K	? !sI?$++AtAv,>? $QI %++Aly{O< % r/   c                   SU ;   a+  U R                  5       n SU S   S S -   S-   U S   S   -   nSnGO>SU ;   a+  U R                  5       n SU S   S S -   S-   U S   S   -   nSnGOSU ;   a+  U R                  5       n SU S   S S -   S-   U S   S   -   nS	nGOS
U ;   a+  U R                  5       n SU S   S S -   S-   U S   S   -   nSnGOSU ;   a<  U R                  5       n US-  nUSU S   S S  SU S   S S  S3-  nSU S   S   -   nSnGOiSU ;   a<  U R                  5       n US-  nUSU S   S S  SU S   S S  S3-  nSU S   S   -   nSnGO'SU ;   a*  U R                  5       n SU S   S S -   S-   U S   S   -   nSnOSU ;   a0  U R                  5       n US-  nX S   S S S-   -  nSU S   S   -   nSnOSU ;   a4  U R                  5       n US-  nUSU S   S S -   S-   -  nSU S   S   -   nSnOSU ;   a4  U R                  5       n US-  nUSU S   S S -   S-   -  nS U S   S   -   nSnOMS!U ;   a0  US":X  a*  U R                  5       n SU S   S S -   S-   U S   S   -   nS#nOU R                  5       n U S   nSnXU-   S$-   -  nX4$ )%Nzconst cuComplex*r&   r%   r9   z#reinterpret_cast<const hipComplex*>zconst cuDoubleComplex*z)reinterpret_cast<const hipDoubleComplex*>z
cuComplex*zreinterpret_cast<hipComplex*>zcuDoubleComplex*z#reinterpret_cast<hipDoubleComplex*>	cuComplexz  hipComplex blah;
z	  blah.x=z.x;
  blah.y=z.y;
blah cuDoubleComplexz  hipDoubleComplex blah;
zcudaDataType*zreinterpret_cast<hipDataType*>cudaDataTypez)  hipDataType blah = convert_hipDatatype(z);
zcusparseOrder_t*z  hipsparseOrder_t blah2 = zconvert_hipsparseOrder_t(*z&blah2r   zconvert_hipsparseOrder_t(blah2zconst void*hipsparseSpVV_bufferSizezconst_cast<void*> )r3   )r@   hip_sigdeclhip_funcargcasts         r-   process_func_argsrQ      sk   
 QGGIAbE#2J$quRy04	!Q	&GGIAbE#2J$quRy0:		GGIAbE#2J$quRy0.	q	 GGIAbE#2J$quRy04		GGI&&)AbE#2J<~aeCRj\GGquRy 	a	GGI,,)AbE#2J<~aeCRj\GGquRy 	A	GGIAbE#2J$quRy0/	1	GGI;;"cr
V##quRy 	q	 GGI--,quSbz9FBB2r"	a	GGI--+aeCRj86AA"b	!
1
66GGIAbE#2J$quRy0"GGIes
S !G=r/   c                
   [        U5      n/ n[        U5       GH  u  pgUS:X  a  U(       dx  UR                  U5        US:X  a_  UR                  S5        UR                  S5        UR                  S5        UR                  [        5        UR                  [        5        M  M  UR                  S5      (       Gaa  SnSn	S	n
[         Ha  nX;   d  M
  U[        ;  d  M  UR                  S
5      (       a  SUSS  -   OUnX;   a%  UnX:w  a  UnSU-   S-   U-   S-   nO
US:X  a  S nSn
S	n	O   O   S nUb  US:X  a  US:X  a  UR                  [        5        O=U	(       a6  US:  a0  U
(       a  UR                  SU 35        OUR                  SU 35        US:X  a  US:X  d  UR                  U5        U	(       a@  US:  a:  U
(       a"  UR                  S5        UR                  U5        UR                  S5        Ub"  U	(       a  [        R                  U5        GM  GM   GM  SU;   GaQ  UR                  5       n [        U5      S:X  d   e US   nUS UR                  S5       nSUSS  -   n[        X5      n[        X5      nUS:X  a  US:X  a   eUS:X  a"  US:w  a  [        US[         R"                  S9  SnOUS:w  a"  US:X  a  [        US[         R"                  S9  SnOuUUS  R                  S5      nUS:w  d   eUUUU-   S-    nUR                  S5      nUS    S-   nUSS   H   nUS[        US    5      S-   -  U-   S-   -  nM"     US S nUUS'   S	nUR                  SR%                  U5      5        X&S-      nS!U;  a  X&S-      nS!U;   d   eU(       a  UR                  S5      n['        U5      nUS:w  a  UR                  SU 35        S"U-   S-   nSnU H  n[)        UUUU5      u  nnM     US S S-   nUR                  UU-   5        US:w  a6  UR                  S5        UR                  S#5        UR                  S$5        GM,  GM/  UR                  US UR                  S!5      S%-    S&-   5        GM[  S!U;   aE  S'U;   a  GMj  S(U;   a"  SX&S-
     ;   a  UR                  U5        GM  GM  UR                  U5        GM  UR                  U5        GM     SR%                  U5      S-   $ ! [         a    [        SU 35        e f = f))N   i1  z#include <hipsparse.h>z2#include <hip/hip_version.h>    // for HIP_VERSIONz2#include <hip/library_types.h>  // for hipDataTypetypedefrF   FTcuhip   ztypedef rK   ;r   i  z#if HIP_VERSION >= z#if HIP_VERSION < z#elsez#endif
z...zsig is r'   r&   r%   z%not found in cuSPARSE, maybe removed?)filez,not found in hipSPARSE, maybe not supported?r9   
r   returnz	  return z(  return HIPSPARSE_STATUS_NOT_SUPPORTED;z#endif   z  HIPSPARSE_STATUS_NOT_SUPPORTED;CUSPARSE_STATUSHIPSPARSE_STATUS_NOT_SUPPORTED)r6   r:   r<   cudaDataType_converterdefault_return_code
startswithr   processed_typedefscusparseOrder_converteraddr3   r)   AssertionErrorprintr(   r.   sysstderrjoinrB   rQ   )hip_hr*   stubsr5   init
hip_stub_hir?   old_linetypedef_foundtypedef_neededthip_tsigr+   rN   r,   rL   can_mapend_idx
new_cu_sigr@   rM   s                          r-   mainrx      sa   !+.K JU#6$d#c!!!":;!!HJ!!HJ!!"89!!"56 " __Y''H!M!N9*<!<-.\\$-?-?EAabEMQE~#':'+H#-#5#;a#?##ED*c1'+-2N(, ! $ ))kS.@%%&=>"{S'8%")),?}*MN")),>{m*LM ..;#3E%%d+ [3%6%"))'2"))(3%%j1}"&&q) "/} d]**,C3x1}$} !fG0w||C01Gwqr{*H %T3F%e6G|2u2'R-gF::'2'R-h N::'vw-,,S1"}$}fVG^A%56  d+#AY-
A3#c!f+/#:a"?$"FFJ $#CRAchhsm, 1:Dt#qSz4'''d+/7#%%%(;K=&IJ%036A$57D(%4MGT   "#2,,!!$w,/#%%%g.%%BD%%h/	 & !!/$))H-a/089:  D( 1T9eaCj(%%d+ )
 !!$' d#o $r IIj!T))m " uo&s   4S))T__main__z"cupy_backends/stub/cupy_cusparse.hFTz#define CUSPARSE_VERSION -1zg#define CUSPARSE_VERSION (hipsparseVersionMajor*100000+hipsparseVersionMinor*100+hipsparseVersionPatch)"INCLUDE_GUARD_STUB_CUPY_CUSPARSE_H"INCLUDE_GUARD_HIP_CUPY_HIPSPARSE_HrZ   z"cupy_backends/hip/cupy_hipsparse.hw)*
__future__r   urllib.requesturllibrg   
cusparse_hcu_versionshipsparse_urlhip_versions__annotations__r   r_   rc   r`   setrb   r.   r6   rB   rQ   rx   __name__openfreadrk   rl   cu_verformatr*   xhip_ver
splitlinesstubs_splittedrequesturlopenreqdecoderj   replacer(   write r/   r-   <module>r      s   "  
0 6
&BE  < 	 & &  
   U ;,BJ_*D z	2	3q 
4 D*##F+,668D - #G"--/N..(()=)=g)FGC)  ngtDED $   MM%
#%E
 MM,,.E %**T"#$E	2C	8A	 
9	8? 	3	3
 -, " 
9	8s0   E<F"F F0<
F
F	
F-0
F>