
    `iW8              	          U d dl Zd dlZd dlmZ dZdZdZdZee	df         e
d<   d	Zed
z  ZdZdZdZ e            Zd Zd Zd Zd Zd Zedk    r edd          5 Ze                                Zddd           n# 1 swxY w Y   dZeD ]Z ee                    e          d          5 Ze                                Zddd           n# 1 swxY w Y   d ZeD ]Z e!                                Z"ej#        $                    e                    e                     Z%e%5 Ze                                &                                Z'ddd           n# 1 swxY w Y    ee'ee"e e          ZdZe(                    dd          Ze(                    dd          Zee)                    d          d         Z edd          5 Ze*                    e           ddd           dS # 1 swxY w Y   dS dS )    N)Tuplez&/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.0.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                     |                      |          }	 |dk    rn8| |t          |          z            dk    r|                      ||dz             }nn?|S )NT(   )findlen)cu_hcu_funccu_sigs      v/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/cupyx/tools/_hipsparse_stub_mapper.pyget_idx_to_funcr.   a   sg    YYwFR<<&W%&#--YYwq11FF M    c                     |                      d          } t          | d                   dz  t          | d                   z   S )N.r   d   r'   )splitint)hip_versions    r-   get_hip_ver_numr6   o   s=    ##C((K{1~$s;q>':':::r/   c                    g }d }t          |           D ]\  }}||k    r|                    d          s|                    d          r|                    |           K|                    d          }|dk    r|                    d          }|dk    r'|                    || |dz            z              |dz   }|                    |d |dz                       |S )N,)r%   r'   )	enumerateendswithappendr(   )r,   cu_sig_processed	skip_linelines	break_idxs         r-   merge_bad_broken_linesrB   u   s     IV$$ = =a9zz# =!**S// = ''****FF3KK	?? !sI??$++AtAv,>??? $QII %++Aly{lO<<<r/   c                    d| v r=|                                  } d| d         d d         z   dz   | d         d         z   }d}nd| v r=|                                  } d| d         d d         z   dz   | d         d         z   }d}nd| v r=|                                  } d| d         d d         z   dz   | d         d         z   }d	}nud
| v r=|                                  } d| d         d d         z   dz   | d         d         z   }d}n4d| v rV|                                  } |dz  }|d| d         d d          d| d         d d          dz  }d| d         d         z   }d}nd| v rV|                                  } |dz  }|d| d         d d          d| d         d d          dz  }d| d         d         z   }d}nd| v r=|                                  } d| d         d d         z   dz   | d         d         z   }d}n?d| v rC|                                  } |dz  }|| d         d d         dz   z  }d| d         d         z   }d}nd| v rF|                                  } |dz  }|d| d         d d         z   dz   z  }d| d         d         z   }d}nd| v rF|                                  } |dz  }|d| d         d d         z   dz   z  }d | d         d         z   }d}ndd!| v rB|d"k    r<|                                  } d| d         d d         z   dz   | d         d         z   }d#}n|                                  } | d         }d}|||z   d$z   z  }||fS )%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      s   
 QGGIIAbE#2#J$quRy04	!Q	&	&GGIIAbE#2#J$quRy0:			GGIIAbE#2#J$quRy0.	q	 	 GGIIAbE#2#J$quRy04			GGII&&GAbE#2#JGGaeCRCjGGGGquRy 	a		GGII,,GAbE#2#JGGaeCRCjGGGGquRy 	A		GGIIAbE#2#J$quRy0/	1		GGII;;"crc
V##quRy 	q	 	 GGII--,quSbSz9FBB2r"	a		GGII--+aeCRCj86AA"b	!
1

666GGIIAbE#2#J$quRy0"GGIIes
S !GD=r/   c                 8   t          |          }g }t          |          D ]a\  }}|dk    r|s|                    |           |dk    rs|                    d           |                    d           |                    d           |                    t                     |                    t                     |                    d          r^d}d}	d	}
t          D ]`}||v rZ|t          vrQ|                    d
          rd|dd          z   n|}|| v r&|}||k    r|}d|z   dz   |z   dz   }n
|dk    rd }d}
d	}	n	  nad }||dk    r!|dk    r|                    t                     n;|	r9|dk    r3|
r|                    d|            n|                    d|            |dk    r|dk    s|                    |           |	rG|dk    rA|
r*|                    d           |                    |           |                    d           ||	rt          	                    |           d|v r|
                                }	 t          |          dk    sJ n!# t          $ r t          d|             w xY w|d         }|d |                    d                   }d|dd          z   }t          ||          }t          | |          }|dk    r|dk    rJ |dk    r%|dk    rt          |dt           j                   d}n|dk    r%|dk    rt          |dt           j                   d}n||d                              d          }|dk    sJ ||||z   dz            }|
                    d          }|d          dz   }|dd          D ]&}|dt          |d                    dz   z  |z   dz   z  }'|d d         }||d<   d	}|                    d                    |                     ||dz            }d!|vr||dz            }d!|v sJ |r|
                    d          }t'          |          }|dk    r|                    d|            d"|z   dz   }d}|D ]}t)          ||||          \  }}|d d         dz   }|                    ||z              |dk    r?|                    d           |                    d#           |                    d$           |                    |d |                    d!          d%z            d&z              d!|v rEd'|v rd(|v r$d||dz
           v r|                    |           5|                    |           L|                    |           cd                    |          dz   S ))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      s   !+..K JU## W$ W$466$6d###c!!!!":;;;!!HJ J J!!HJ J J!!"8999!!"5666__Y'' J	$H!M!N  99*<!<!<-.\\$-?-?FEAabbEMMQE~~#'::'+H#-#5#;a#?##EDD*c11'+-2N(, E)))kS.@.@%%&=>>>>" N{S'8'8% N"))*M*M*MNNNN"))*L{*L*LMMM ...;#3E3E%%d+++  2[3%6%6% 4"))'222"))(333%%j111}}"&&q)))d]]**,,C3xx1}}}}}!   ooo&&& !fG0w||C0001Gwqrr{*H %T733F%eX66G||2u2'R--gF:' ' ' '2'R--h N:' ' ' 'vww-,,S11"}}}}fVG^A%556  d++#AY-
 G GA3#c!f++/#:a"?$"FFJJ#CRCAchhsmm,,, 1:Dt##QqSz4'''' <d++/77#%%%%&IK&I&IJJJ%036 4 4A$57D(%4 %4MGTT!#2#,,!!$w,///#%%%%g...%%BD D D%%h///!!0499X..q0019:< < < <  D(( 1T99eAaCj((%%d+++ !!$'''' d####IIj!!T))s   I""J __main__z"cupy_backends/stub/cupy_cusparse.hrFTz#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)+urllib.requesturllibrg   typingr   
cusparse_hcu_versionshipsparse_urlhip_versionsstr__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 S/   < 	 & &  
   SUU   ; ; ;  ,B B BJ_* _* _*D z	2C	8	8 A               D  T*##F++S11 	Q6688D	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 # 	 	G"--//N.(()=)=g)F)FGGC *))* * * * * * * * * * * * * * * DngtDDEDD	 MM%
#% %E
 MM,,. .E %**T""##$E	2C	8	8 A	                 ? sH   A??BB/CC	C	$'EEE
G--G14G1