Ë
    èÿæig   ã                   óü   — d dl Z d dlmZ d dlmZmZ ddlmZ d„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zddddd d!d"d#d$d%d&d'd(d)d*œZd+„ Z G d,„ d-e «      Z!d.„ Z"y)/é    N)Úir)ÚcgutilsÚtargetconfigé   )Únvvmc                 óB  — dt        |«      z   dz   }t        j                  t        j                  |«      t        j                  t        j                  |«      «      t        j                  |«      t        j                  |«      f«      }t        j                  | ||«      S )NÚ___numba_atomic_iÚ	_cas_hack)Ústrr   ÚFunctionTypeÚIntTypeÚPointerTyper   Úget_or_insert_function)ÚlmodÚisizeÚfnameÚfntys       úi/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/numba/cuda/nvvmutils.pyÚdeclare_atomic_cas_intr      sw   € Ø¤# e£*Ñ,¨{Ñ:€EÜ�?‰?œ2Ÿ:™: eÓ,ÜŸN™N¬2¯:©:°eÓ+<Ó=ÜŸJ™J uÓ-ÜŸJ™J uÓ-ð/ó0€Dô ×)Ñ)¨$°°eÓ<Ð<ó    c                 óP   — | j                  |||dd«      }| j                  |d«      S )NÚ	monotonicr   )ÚcmpxchgÚextract_value)Úbuilderr   r   ÚptrÚcmpÚvalÚouts          r   Úatomic_cmpxchgr       s+   € Ø
�/‰/˜#˜s C¨°kÓ
B€CØ× Ñ   aÓ(Ð(r   c                 óø   — d}t        j                  t        j                  «       t        j                  t        j                  «       d«      t        j                  «       f«      }t	        j
                  | ||«      S )Nz#llvm.nvvm.atomic.load.add.f32.p0f32r   ©r   r   Ú	FloatTyper   r   r   ©r   r   r   s      r   Údeclare_atomic_add_float32r%      sR   € Ø1€EÜ�?‰?œ2Ÿ<™<›>ÜŸN™N¬2¯<©<«>¸1Ó=¼r¿|¹|»~ÐNóP€Dä×)Ñ)¨$°°eÓ<Ð<r   c                 ó^  — t        j                  «       j                  «       }|j                  dk\  rd}nd}t	        j
                  t	        j                  «       t	        j                  t	        j                  «       «      t	        j                  «       f«      }t        j                  | ||«      S )N)é   r   z#llvm.nvvm.atomic.load.add.f64.p0f64Ú___numba_atomic_double_add)
r   ÚConfigStackÚtopÚcompute_capabilityr   r   Ú
DoubleTyper   r   r   )r   Úflagsr   r   s       r   Údeclare_atomic_add_float64r.      sz   € Ü×$Ñ$Ó&×*Ñ*Ó,€EØ×Ñ 6Ò)Ø5‰à,ˆÜ�?‰?œ2Ÿ=™=›?ÜŸN™N¬2¯=©=«?Ó;¼R¿]¹]»_ÐMóO€Dä×)Ñ)¨$°°eÓ<Ð<r   c                 óö   — d}t        j                  t        j                  «       t        j                  t        j                  «       «      t        j                  «       f«      }t	        j
                  | ||«      S )NÚ___numba_atomic_float_subr"   r$   s      r   Údeclare_atomic_sub_float32r1   '   óP   € Ø'€EÜ�?‰?œ2Ÿ<™<›>ÜŸN™N¬2¯<©<«>Ó:¼B¿L¹L»NÐKóM€Dä×)Ñ)¨$°°eÓ<Ð<r   c                 óö   — d}t        j                  t        j                  «       t        j                  t        j                  «       «      t        j                  «       f«      }t	        j
                  | ||«      S )NÚ___numba_atomic_double_sub©r   r   r,   r   r   r   r$   s      r   Údeclare_atomic_sub_float64r6   .   óP   € Ø(€EÜ�?‰?œ2Ÿ=™=›?ÜŸN™N¬2¯=©=«?Ó;¼R¿]¹]»_ÐMóO€Dä×)Ñ)¨$°°eÓ<Ð<r   c                 óü   — d}t        j                  t        j                  d«      t        j                  t        j                  d«      «      t        j                  d«      f«      }t	        j
                  | ||«      S )Nz"llvm.nvvm.atomic.load.inc.32.p0i32é    ©r   r   r   r   r   r   r$   s      r   Údeclare_atomic_inc_int32r;   5   óV   € Ø0€EÜ�?‰?œ2Ÿ:™: b›>ÜŸN™N¬2¯:©:°b«>Ó:¼B¿J¹JÀr»NÐKóM€Dä×)Ñ)¨$°°eÓ<Ð<r   c                 óü   — d}t        j                  t        j                  d«      t        j                  t        j                  d«      «      t        j                  d«      f«      }t	        j
                  | ||«      S )NÚ___numba_atomic_u64_incé@   r:   r$   s      r   Údeclare_atomic_inc_int64r@   <   óV   € Ø%€EÜ�?‰?œ2Ÿ:™: b›>ÜŸN™N¬2¯:©:°b«>Ó:¼B¿J¹JÀr»NÐKóM€Dä×)Ñ)¨$°°eÓ<Ð<r   c                 óü   — d}t        j                  t        j                  d«      t        j                  t        j                  d«      «      t        j                  d«      f«      }t	        j
                  | ||«      S )Nz"llvm.nvvm.atomic.load.dec.32.p0i32r9   r:   r$   s      r   Údeclare_atomic_dec_int32rC   C   r<   r   c                 óü   — d}t        j                  t        j                  d«      t        j                  t        j                  d«      «      t        j                  d«      f«      }t	        j
                  | ||«      S )NÚ___numba_atomic_u64_decr?   r:   r$   s      r   Údeclare_atomic_dec_int64rF   J   rA   r   c                 óö   — d}t        j                  t        j                  «       t        j                  t        j                  «       «      t        j                  «       f«      }t	        j
                  | ||«      S )NÚ___numba_atomic_float_maxr"   r$   s      r   Údeclare_atomic_max_float32rI   Q   r2   r   c                 óö   — d}t        j                  t        j                  «       t        j                  t        j                  «       «      t        j                  «       f«      }t	        j
                  | ||«      S )NÚ___numba_atomic_double_maxr5   r$   s      r   Údeclare_atomic_max_float64rL   X   r7   r   c                 óö   — d}t        j                  t        j                  «       t        j                  t        j                  «       «      t        j                  «       f«      }t	        j
                  | ||«      S )NÚ___numba_atomic_float_minr"   r$   s      r   Údeclare_atomic_min_float32rO   _   r2   r   c                 óö   — d}t        j                  t        j                  «       t        j                  t        j                  «       «      t        j                  «       f«      }t	        j
                  | ||«      S )NÚ___numba_atomic_double_minr5   r$   s      r   Údeclare_atomic_min_float64rR   f   r7   r   c                 óö   — d}t        j                  t        j                  «       t        j                  t        j                  «       «      t        j                  «       f«      }t	        j
                  | ||«      S )NÚ___numba_atomic_float_nanmaxr"   r$   s      r   Údeclare_atomic_nanmax_float32rU   m   óP   € Ø*€EÜ�?‰?œ2Ÿ<™<›>ÜŸN™N¬2¯<©<«>Ó:¼B¿L¹L»NÐKóM€Dä×)Ñ)¨$°°eÓ<Ð<r   c                 óö   — d}t        j                  t        j                  «       t        j                  t        j                  «       «      t        j                  «       f«      }t	        j
                  | ||«      S )NÚ___numba_atomic_double_nanmaxr5   r$   s      r   Údeclare_atomic_nanmax_float64rY   t   óP   € Ø+€EÜ�?‰?œ2Ÿ=™=›?ÜŸN™N¬2¯=©=«?Ó;¼R¿]¹]»_ÐMóO€Dä×)Ñ)¨$°°eÓ<Ð<r   c                 óö   — d}t        j                  t        j                  «       t        j                  t        j                  «       «      t        j                  «       f«      }t	        j
                  | ||«      S )NÚ___numba_atomic_float_nanminr"   r$   s      r   Údeclare_atomic_nanmin_float32r]   {   rV   r   c                 óö   — d}t        j                  t        j                  «       t        j                  t        j                  «       «      t        j                  «       f«      }t	        j
                  | ||«      S )NÚ___numba_atomic_double_nanminr5   r$   s      r   Údeclare_atomic_nanmin_float64r`   ‚   rZ   r   c                 ó®   — d}t        j                  t        j                  d«      t        j                  d«      f«      }t        j                  | ||«      S )NÚcudaCGGetIntrinsicHandler?   r9   ©r   r   r   r   r   r$   s      r   Ú declare_cudaCGGetIntrinsicHandlerd   ‰   sB   € Ø&€EÜ�?‰?œ2Ÿ:™: b›>ÜŸJ™J r›NÐ,ó.€Dä×)Ñ)¨$°°eÓ<Ð<r   c                 óÖ   — d}t        j                  t        j                  d«      t        j                  d«      t        j                  d«      f«      }t        j                  | ||«      S )NÚcudaCGSynchronizer9   r?   rc   r$   s      r   Údeclare_cudaCGSynchronizerg   �   sL   € Ø€EÜ�?‰?œ2Ÿ:™: b›>ÜŸJ™J r›N¬B¯J©J°r«NÐ;ó=€Dä×)Ñ)¨$°°eÓ<Ð<r   c                 óŽ  — | j                   j                  j                  }t        j                  |j                  d«      dz   «      }t        j                  ||j                  dt        j                  ¬«      }d|_
        d|_        ||_        | j                  |t        j                  t        j                   d«      «      d«      S )	Nzutf-8ó    Ú_str)ÚnameÚ	addrspaceÚinternalTé   Úgeneric)Úbasic_blockÚfunctionÚmoduler   Úmake_bytearrayÚencodeÚadd_global_variableÚtyper   ÚADDRSPACE_CONSTANTÚlinkageÚglobal_constantÚinitializerÚaddrspacecastr   r   r   )r   Úvaluer   ÚcvalÚgls        r   Údeclare_stringr   —   s—   € Ø×Ñ×'Ñ'×.Ñ.€DÜ×!Ñ! %§,¡,¨wÓ"7¸'Ñ"AÓB€DÜ	×	$Ñ	$ T¨4¯9©9¸6Ü/3×/FÑ/Fô
H€Bà€B„JØ€BÔØ€B„Nà× Ñ  ¤R§^¡^´B·J±J¸q³MÓ%BÀIÓNÐNr   c                 óÚ   — t        j                  t        j                  d«      «      }t        j                  t        j                  d«      ||g«      }t	        j
                  | |d«      }|S )Nrn   r9   Úvprintf)r   r   r   r   r   r   )r   Ú	voidptrtyÚ	vprintftyr�   s       r   Údeclare_vprintr„   £   sP   € Ü—‘œrŸz™z¨!›}Ó-€Iô —‘¤§
¡
¨2£°¸IÐ0FÓG€IÜ×,Ñ,¨T°9¸iÓH€GØ€Nr   zllvm.nvvm.read.ptx.sreg.tid.xzllvm.nvvm.read.ptx.sreg.tid.yzllvm.nvvm.read.ptx.sreg.tid.zzllvm.nvvm.read.ptx.sreg.ntid.xzllvm.nvvm.read.ptx.sreg.ntid.yzllvm.nvvm.read.ptx.sreg.ntid.zzllvm.nvvm.read.ptx.sreg.ctaid.xzllvm.nvvm.read.ptx.sreg.ctaid.yzllvm.nvvm.read.ptx.sreg.ctaid.zz llvm.nvvm.read.ptx.sreg.nctaid.xz llvm.nvvm.read.ptx.sreg.nctaid.yz llvm.nvvm.read.ptx.sreg.nctaid.zz llvm.nvvm.read.ptx.sreg.warpsizezllvm.nvvm.read.ptx.sreg.laneid)ztid.xztid.yztid.zzntid.xzntid.yzntid.zzctaid.xzctaid.yzctaid.zznctaid.xznctaid.yznctaid.zÚwarpsizeÚlaneidc                 óÌ   — | j                   }t        j                  t        j                  d«      d«      }t	        j
                  ||t        |   «      }| j                  |d«      S )Nr9   © )rr   r   r   r   r   r   ÚSREG_MAPPINGÚcall)r   rk   rr   r   Úfns        r   Ú	call_sregrŒ   Ä   sM   € Ø�^‰^€FÜ�?‰?œ2Ÿ:™: b›>¨2Ó.€DÜ	×	'Ñ	'¨°´lÀ4Ñ6HÓ	I€BØ�<‰<˜˜BÓÐr   c                   ó0   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚSRegBuilderc                 ó   — || _         y ©N)r   )Úselfr   s     r   Ú__init__zSRegBuilder.__init__Ì   s	   € Øˆ�r   c                 ó4   — t        | j                  d|z  «      S )Nztid.%s©rŒ   r   ©r‘   Úxyzs     r   ÚtidzSRegBuilder.tidÏ   s   € Ü˜Ÿ™ x°#¡~Ó6Ð6r   c                 ó4   — t        | j                  d|z  «      S )Nzctaid.%sr”   r•   s     r   ÚctaidzSRegBuilder.ctaidÒ   s   € Ü˜Ÿ™ z°CÑ'7Ó8Ð8r   c                 ó4   — t        | j                  d|z  «      S )Nzntid.%sr”   r•   s     r   ÚntidzSRegBuilder.ntidÕ   s   € Ü˜Ÿ™ y°3¡Ó7Ð7r   c                 ó4   — t        | j                  d|z  «      S )Nz	nctaid.%sr”   r•   s     r   ÚnctaidzSRegBuilder.nctaidØ   s   € Ü˜Ÿ™ {°SÑ'8Ó9Ð9r   c                 óž  — t        j                  d«      }| j                  j                  | j	                  |«      |«      }| j                  j                  | j                  |«      |«      }| j                  j                  | j                  |«      |«      }| j                  j                  | j                  j                  ||«      |«      }|S )Nr?   )	r   r   r   Úsextr—   r›   r™   ÚaddÚmul)r‘   r–   Úi64r—   r›   r�   Úress          r   ÚgetdimzSRegBuilder.getdimÛ   s•   € Ü�j‰j˜‹nˆØ�l‰l×Ñ §¡¨£¨sÓ3ˆØ�|‰|× Ñ  §¡¨3£°Ó5ˆØ—‘×"Ñ" 4§:¡:¨c£?°CÓ8ˆØ�l‰l×Ñ˜tŸ|™|×/Ñ/°°fÓ=¸sÓCˆØˆ
r   N)	Ú__name__Ú
__module__Ú__qualname__r’   r—   r™   r›   r�   r¤   rˆ   r   r   rŽ   rŽ   Ë   s    „ òò7ò9ò8ò:ór   rŽ   c                 óˆ   ‡— t        | «      Šˆfd„dD «       }t        t        j                  |d |«      «      }|dk(  r|d   S |S )Nc              3   ó@   •K  — | ]  }‰j                  |«      –— Œ y ­wr�   )r¤   )Ú.0r–   Úsregs     €r   Ú	<genexpr>z get_global_id.<locals>.<genexpr>æ   s   øè ø€ Ð	,¡e˜sˆ$�+‰+�c×
¡eùs   ƒr–   r   r   )rŽ   ÚlistÚ	itertoolsÚislice)r   ÚdimÚitÚseqr«   s       @r   Úget_global_idr³   ä   sE   ø€ Ü�wÓ€DÛ	,¡eÓ	,€BÜ
Œy×Ñ  D¨#Ó.Ó
/€CØ
ˆa‚xØ�1‰vˆàˆ
r   )#r®   Úllvmliter   Ú
numba.corer   r   Úcudadrvr   r   r    r%   r.   r1   r6   r;   r@   rC   rF   rI   rL   rO   rR   rU   rY   r]   r`   rd   rg   r   r„   r‰   rŒ   ÚobjectrŽ   r³   rˆ   r   r   Ú<module>r¸      sÉ   ðÛ Ý ß ,Ý ò=ò)ò
=ò=ò=ò=ò=ò=ò=ò=ò=ò=ò=ò=ò=ò=ò=ò=ò=ò=ò	Oòð -Ø,Ø,à.Ø.Ø.à0Ø0Ø0à2Ø2Ø2à2Ø.ñ%€ò, ô�&ô ó2r   