U
    yÊ¹jEH  ã                   @  s�   d dl mZ ddlmZ ddlmZ ddlmZ ddlm	Z	 ej
Z
dd	„ Zd
d„ Zdd„ ZG dd„ dƒZG dd„ dƒZdd„ ZG dd„ dƒZdS )é    )Úannotationsé   )Úcoreé   )Útorch_wrapper)ÚExecutionContext)Ú	MemoryMapc                 C  sD  ddi}t | tƒr,tj| gfdtji|—ŽS t | tƒr¬d|   krJdk rhn ntj| gfdtji|—ŽS d|   kr|dk ršn ntj| gfdtji|—ŽS td| › d	�ƒ‚ntt | tƒrÐtj| gfdtj	i|—ŽS t 
| ¡rÞ| S t | tƒrì| S t | tƒ�r| jd
k�rd
S t| jƒS | d
k�r d
S d�s@td| › dt| ƒ› d�ƒ‚d
S )zI
    Converts various Python primitive data types to PyTorch tensor.
    ÚdeviceÚcudaÚdtypei   €l        lûÿÿÿ         l            zNonrepresentable integer Ú.NFzcannot convert z	 of type z
 to tensor)Ú
isinstanceÚboolÚtorchÚtensorÚintÚint32Úint64ÚRuntimeErrorÚfloatÚfloat32Ú	is_tensorÚWrappedTensorÚdebugger_constexprÚvalueÚ_primitive_to_tensorÚAssertionErrorÚtype)ÚxZtensor_args© r   úY/var/www/html/bwave/python/venv/lib/python3.8/site-packages/triton/interpreter/tl_lang.pyr      s,    






r   c                   s   ‡ fdd„}|S )zŸ
    A decorator function to harmonize function args:
        - converts primitives to PyTorch tensors
        - wraps PyTorch tensors with WrappedTensors
    c                    s,   t tdd„ | ƒƒ}t tdd„ |ƒƒ}ˆ |Ž S )Nc                 S  s   t | ƒS ©N)r   ©Úvr   r   r    Ú<lambda>/   ó    z0_infer_tensor.<locals>.wrapper.<locals>.<lambda>c                 S  s   t  | ¡rt| ƒS | S r!   )r   r   r   r"   r   r   r    r$   0   r%   )ÚtupleÚmap)ÚargsÚnew_args©Úfuncr   r    Úwrapper.   s    z_infer_tensor.<locals>.wrapperr   ©r+   r,   r   r*   r    Ú_infer_tensor(   s    r.   c                   s   ‡ fdd„}|S )zÌ
    A decorator function to unwrap WrappedTensors and debugger_constexpr before calling the function.
    Can be combined with _infer_tensor decorator to harmonize args (everything to torch tensor).
    c                    sz   | D ]}t  |¡rtdƒ‚qdd„ ‰ ttˆ | ƒƒ}‡ fdd„| ¡ D ƒ}ˆ| d f|dd … ž|Ž}t  |¡rvt|ƒS |S )Nzunexpected tensor argumentc                 S  s$   t | tƒr| jS t | tƒr | jS | S r!   )r   r   r   r   r   r"   r   r   r    Úunwrap_tensor@   s
    

z9_tensor_operation.<locals>.wrapper.<locals>.unwrap_tensorc                   s   i | ]\}}|ˆ |ƒ“qS r   r   )Ú.0Úkr#   ©r/   r   r    Ú
<dictcomp>H   s      z6_tensor_operation.<locals>.wrapper.<locals>.<dictcomp>r   r   )r   r   r   r&   r'   Úitemsr   )r(   ÚkwargsÚargr)   Z
new_kwargsÚresultr*   r2   r    r,   <   s    z"_tensor_operation.<locals>.wrapperr   r-   r   r*   r    Ú_tensor_operation7   s    r8   c                   @  sŠ   e Zd Zdd„ Zddœdd„Zddœdd	„Zd
d„ Zdd„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd"d d!„ZdS )#r   c                 C  s   t |tƒr|j| _n|| _d S r!   ©r   r   r   )Úselfr   r   r   r    Ú__init__Q   s    

zdebugger_constexpr.__init__Ústr©Úreturnc                 C  s   dt | jƒ d S )Nzdebugger_constexpr(ú))r<   r   ©r:   r   r   r    Ú__str__W   s    zdebugger_constexpr.__str__r   c                 C  s   | j S r!   ©r   r@   r   r   r    Ú	__index__Z   s    zdebugger_constexpr.__index__c                 C  s
   t | jƒS r!   )r   r   r@   r   r   r    Ú__bool__]   s    zdebugger_constexpr.__bool__c                 C  s   t |tƒr|jn|}| j|kS r!   r9   ©r:   Úotherr   r   r    Ú__ge__`   s    zdebugger_constexpr.__ge__c                 C  s   t |tƒr|jn|}| j|kS r!   r9   rE   r   r   r    Ú__gt__d   s    zdebugger_constexpr.__gt__c                 C  s   t |tƒr|jn|}| j|kS r!   r9   rE   r   r   r    Ú__le__h   s    zdebugger_constexpr.__le__c                 C  s   t |tƒr|jn|}| j|k S r!   r9   rE   r   r   r    Ú__lt__l   s    zdebugger_constexpr.__lt__c                 C  s   t |tƒr|jn|}| j|kS r!   r9   rE   r   r   r    Ú__eq__p   s    zdebugger_constexpr.__eq__c                 C  s   t |tƒr|jn|}| j|B S r!   r9   rE   r   r   r    Ú__or__t   s    zdebugger_constexpr.__or__c                 C  s   t |tƒr|jn|}| j|B S r!   r9   rE   r   r   r    Ú__ror__x   s    zdebugger_constexpr.__ror__c                 C  s   t |tƒr|jn|}| j|@ S r!   r9   rE   r   r   r    Ú__and__|   s    zdebugger_constexpr.__and__c                 C  s   t |tƒr|jn|}| j|@ S r!   r9   rE   r   r   r    Ú__rand__€   s    zdebugger_constexpr.__rand__FNc                 C  sJ   |t jfkrt}n*|t jkr"t}n|t jfkr4t}ntdƒ‚t|| jƒƒS )Nzdtype not supported in debugger)	r   r   r   r   Zfloat64r   Ú
ValueErrorr   r   )r:   r   ÚbitcastZ_builderZret_tyr   r   r    Úto„   s    
zdebugger_constexpr.to)FN)Ú__name__Ú
__module__Ú__qualname__r;   rA   rC   rD   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rR   r   r   r   r    r   P   s   r   c                   @  s4  e Zd Zdd„ Zddœdd„Zddœdd	„Zd
dœdd„Zedd„ ƒZe	e
dd„ ƒƒZe	e
dd„ ƒƒZe	e
dd„ ƒƒZe	e
dd„ ƒƒZe	e
dd„ ƒƒZe	e
dd„ ƒƒZe	e
dd„ ƒƒZe	e
dd„ ƒƒZe	e
dd „ ƒƒZe	e
d!d"„ ƒƒZe	e
d#d$„ ƒƒZe	e
d%d&„ ƒƒZe	e
d'd(„ ƒƒZe	e
d)d*„ ƒƒZe	e
d+d,„ ƒƒZe	e
d-d.„ ƒƒZe	e
d/d0„ ƒƒZe	e
d1d2„ ƒƒZe	e
d3d4„ ƒƒZe	e
d5d6„ ƒƒZe	e
d7d8„ ƒƒZe	e
d9d:„ ƒƒZ e	e
d;d<„ ƒƒZ!e	e
d=d>„ ƒƒZ"e	e
d?d@„ ƒƒZ#e	e
dAdB„ ƒƒZ$e	e
dCdD„ ƒƒZ%e	e
dEdF„ ƒƒZ&e	e
dGdH„ ƒƒZ'e
dIdJ„ ƒZ(e
dOdLdM„ƒZ)dNS )Pr   c                 C  s
   || _ d S r!   ©r   )r:   r   r   r   r    r;   ‘   s    zWrappedTensor.__init__r   r=   c                 C  s
   | j  ¡ S r!   )r   Úitemr@   r   r   r    rC   ”   s    zWrappedTensor.__index__r<   c                 C  s   dt | jƒ S )NZwrapped_)r<   r   r@   r   r   r    rA   —   s    zWrappedTensor.__str__r   c                 C  s   t  | jdk¡ ¡ S )NT)r   Úallr   rW   r@   r   r   r    rD   š   s    zWrappedTensor.__bool__c                 C  s   | j jS r!   )r   r   r@   r   r   r    r   �   s    zWrappedTensor.dtypec                 C  s   t  | j|¡S r!   )r   Úaddr   rE   r   r   r    Ú__add__¡   s    zWrappedTensor.__add__c                 C  s
   |   |¡S r!   )rZ   rE   r   r   r    Ú__radd__¦   s    zWrappedTensor.__radd__c                 C  s   t  | j|¡S r!   ©r   Úsubr   rE   r   r   r    Ú__sub__«   s    zWrappedTensor.__sub__c                 C  s   t  || j¡S r!   r\   rE   r   r   r    Ú__rsub__°   s    zWrappedTensor.__rsub__c                 C  s   t  | j|¡S r!   )r   Úmulr   rE   r   r   r    Ú__mul__µ   s    zWrappedTensor.__mul__c                 C  s
   |   |¡S r!   )ra   rE   r   r   r    Ú__rmul__º   s    zWrappedTensor.__rmul__c                 C  s   t  | j|¡S r!   ©r   Údivr   rE   r   r   r    Ú__truediv__¿   s    zWrappedTensor.__truediv__c                 C  s   t  || j¡S r!   rc   rE   r   r   r    Ú__rtruediv__Ä   s    zWrappedTensor.__rtruediv__c                 C  s   t  | j|¡S r!   ©r   Zfloor_divider   rE   r   r   r    Ú__floordiv__É   s    zWrappedTensor.__floordiv__c                 C  s   t  || j¡S r!   rg   rE   r   r   r    Ú__rfloordiv__Î   s    zWrappedTensor.__rfloordiv__c                 C  s   t  | j|¡S r!   ©r   Ú	remainderr   rE   r   r   r    Ú__mod__Ó   s    zWrappedTensor.__mod__c                 C  s   t  || j¡S r!   rj   rE   r   r   r    Ú__rmod__Ø   s    zWrappedTensor.__rmod__c                 C  s   | j  S r!   rV   r@   r   r   r    Ú__neg__Ý   s    zWrappedTensor.__neg__c                 C  s   | j  S r!   rV   r@   r   r   r    Ú
__invert__â   s    zWrappedTensor.__invert__c                 C  s   t  | j|¡S r!   )r   Úbitwise_andr   rE   r   r   r    rN   ç   s    zWrappedTensor.__and__c                 C  s   t  | j|¡S r!   )r   Ú
bitwise_orr   rE   r   r   r    rL   ì   s    zWrappedTensor.__or__c                 C  s   t  | j|¡S r!   )r   Úbitwise_xorr   rE   r   r   r    Ú__xor__ñ   s    zWrappedTensor.__xor__c                 C  s   t  | j|¡S r!   )r   Zbitwise_left_shiftr   rE   r   r   r    Ú
__lshift__ö   s    zWrappedTensor.__lshift__c                 C  s   t  | j|¡S r!   )r   Zbitwise_right_shiftr   rE   r   r   r    Ú
__rshift__û   s    zWrappedTensor.__rshift__c                 C  s
   | j |kS r!   rV   rE   r   r   r    rH      s    zWrappedTensor.__gt__c                 C  s
   || j kS r!   rV   rE   r   r   r    Ú__rgt__  s    zWrappedTensor.__rgt__c                 C  s
   | j |kS r!   rV   rE   r   r   r    rG   
  s    zWrappedTensor.__ge__c                 C  s
   || j kS r!   rV   rE   r   r   r    Ú__rge__  s    zWrappedTensor.__rge__c                 C  s
   | j |k S r!   rV   rE   r   r   r    rJ     s    zWrappedTensor.__lt__c                 C  s
   || j k S r!   rV   rE   r   r   r    Ú__rlt__  s    zWrappedTensor.__rlt__c                 C  s
   | j |kS r!   rV   rE   r   r   r    rI     s    zWrappedTensor.__le__c                 C  s
   || j kS r!   rV   rE   r   r   r    Ú__rle__#  s    zWrappedTensor.__rle__c                 C  s   t  | j|¡S r!   ©r   Úequalr   rE   r   r   r    rK   (  s    zWrappedTensor.__eq__c                 C  s   t  | j|¡ S r!   rz   rE   r   r   r    Ú__ne__-  s    zWrappedTensor.__ne__c                 C  s   | j  |¡S r!   )r   Ú__getitem__)r:   Zslicesr   r   r    r}   2  s    zWrappedTensor.__getitem__Fc                 C  s   | j  |¡S r!   )r   rR   )r:   r   rQ   r   r   r    rR   C  s    zWrappedTensor.toN)F)*rS   rT   rU   r;   rC   rA   rD   Úpropertyr   r.   r8   rZ   r[   r^   r_   ra   rb   re   rf   rh   ri   rl   rm   rn   ro   rN   rL   rs   rt   ru   rH   rv   rG   rw   rJ   rx   rI   ry   rK   r|   r}   rR   r   r   r   r    r   �   sÂ   

r   c                 C  s   t | tƒr| jS | S r!   r9   r"   r   r   r    Ú_constexpr_to_valueM  s    
r   c                   @  sÆ  e Zd ZU ded< ded< dddœdd„Zedvdddœdd„ƒZedwdddœdd„ƒZedd„ ƒZedd„ ƒZ	edd„ ƒZ
edd„ ƒZedxdd„ƒZedd„ ƒZedd „ ƒZed!d"„ ƒZed#d$„ ƒZedyd&d'„ƒZed(d)„ ƒZedzd*d+„ƒZed{d,d-„ƒZed|d.d/„ƒZed}d0d1„ƒZed~d2d3„ƒZedd4d5„ƒZed€d6d7„ƒZed8d9„ ƒZed:d;„ ƒZed�d<d=„ƒZed>d?„ ƒZed@dA„ ƒZedBdC„ ƒZedDdE„ ƒZ edFdG„ ƒZ!edHdI„ ƒZ"edJdK„ ƒZ#edLdM„ ƒZ$edNdO„ ƒZ%edPdQ„ ƒZ&edRdS„ ƒZ'edTdU„ ƒZ(edVdW„ ƒZ)edXdY„ ƒZ*edZd[„ ƒZ+ed\d]„ ƒZ,ed‚d^d_„ƒZ-ed`da„ ƒZ.edbdc„ ƒZ/eddde„ ƒZ0edƒdfdg„ƒZ1edhdi„ ƒZ2ed„djdk„ƒZ3edldm„ ƒZ4ed…dndo„ƒZ5edpdq„ ƒZ6ed†drds„ƒZ7ed‡dtdu„ƒZ8dS )ˆÚTritonLangProxyr   Ú_memory_mapr   Ú_context)Ú
memory_mapÚcontextc                 C  s   || _ || _d S r!   )r�   r‚   )r:   rƒ   r„   r   r   r    r;   W  s    zTritonLangProxy.__init__Nç        Ú Fztorch.Tensor)ÚpointerÚmaskc                 C  s   | j  |||¡S r!   )r�   Úload)r:   r‡   rˆ   rF   Zcache_modifierZeviction_policyZvolatiler   r   r    r‰   b  s    
zTritonLangProxy.load)r‡   r   c                 C  s   | j  |||¡S r!   )r�   Ústore)r:   r‡   r   rˆ   r   r   r    rŠ   n  s    zTritonLangProxy.storec                 C  s0   |t | jjƒk st‚tj| jj| gtjdd�S ©Nr
   ©r   r	   )Úlenr‚   Ú
program_idr   r   r   r   ©r:   Úaxisr   r   r    rŽ   r  s    zTritonLangProxy.program_idc                 C  s0   |t | jjƒk st‚tj| jj| gtjdd�S r‹   )r�   r‚   Zprogram_sizer   r   r   r   r�   r   r   r    Únum_programsw  s    zTritonLangProxy.num_programsc                 C  s   t j||t jdd�S )Nr
   )ÚstartÚendr   r	   )r   Úaranger   )r:   r’   r“   r   r   r    r”   |  s    zTritonLangProxy.arangec                 C  sì   t |ƒD ]J\}}t|tƒs*td|› d�ƒ‚t|jtƒstd|› dt|jƒ› d�ƒ‚qdd„ |D ƒ}t|tjƒrÜ| 	¡ r~t
j}n^| ¡ rŽt
j}nN| ¡ ržt
j}n>| ¡ r®t
j}n.| ¡ r¾t
j}n| ¡ rÎt
j}ntd|› �ƒ‚t
j||dd	�S )
NzShape element z must have type `constexpr`z1 must have type `constexpr[int]`, got `constexpr[ú]c                 S  s   g | ]
}|j ‘qS r   rB   )r0   r   r   r   r    Ú
<listcomp>‡  s     z)TritonLangProxy.zeros.<locals>.<listcomp>zUnsupported dtype r
   )Úsizer   r	   )Ú	enumerater   r   Ú	TypeErrorr   r   r   Úlcorer   Zis_fp32r   r   Zis_fp16Úfloat16Zis_bf16Zbfloat16Zis_int32r   Zis_int16Zint16Zis_int8Zint8Úzeros)r:   Úshaper   ÚiÚdr   r   r    rœ   €  s*    
zTritonLangProxy.zerosc                 C  s   |d krt j}tƒ ‚d S r!   )r   r›   ÚNotImplementedError)r:   ÚinputÚscaleÚshiftZnbitZdst_tyr   r   r    Ú
dequantize™  s    zTritonLangProxy.dequantizec                 C  s
   t ƒ ‚d S r!   ©r    )r:   r¡   rF   r   r   r    Ú	broadcastŸ  s    zTritonLangProxy.broadcastc                 C  s
   t ƒ ‚d S r!   r¥   ©r:   r¡   r�   r   r   r    Úbroadcast_to£  s    zTritonLangProxy.broadcast_toc                 C  s
   t ƒ ‚d S r!   r¥   r§   r   r   r    Úcat§  s    zTritonLangProxy.catc                 C  s
   t ƒ ‚d S r!   r¥   r§   r   r   r    Úreshape«  s    zTritonLangProxy.reshapeTc                 C  s2   |j |j kst‚|r|j}|r$|j}tj||d�S )N)r¡   rF   )r   r   ÚTr   Úmatmul)r:   r¡   rF   Ztrans_aZtrans_bZ
allow_tf32r   r   r    Údot¯  s    zTritonLangProxy.dotc                 C  sl   | j  |d d¡}t|tjƒs0tj|g|jdd�}t|tjƒsPtj|g|jdd�}||krh| j  ||d ¡ |S )Nr…   r
   rŒ   )r�   r‰   r   r   ZTensorr   r   rŠ   )r:   r‡   ÚcmpÚvalÚstoredr   r   r    Ú
atomic_cas¸  s    zTritonLangProxy.atomic_casc                 C  sB   t |tƒrtj|gtjdd�}| j ||d¡}| j |||¡ |S )Nr
   rŒ   r…   )r   r   r   r   r   r�   r‰   rŠ   )r:   r‡   r¯   rˆ   r°   r   r   r    Úatomic_xchgÃ  s
    
zTritonLangProxy.atomic_xchgc                 C  s,   | j  ||d¡}|| }| j  |||¡ |S ©Nr…   )r�   r‰   rŠ   ©r:   r‡   r¯   rˆ   r°   r7   r   r   r    Ú
atomic_addË  s    zTritonLangProxy.atomic_addc                 C  s0   | j  ||d¡}t ||¡}| j  |||¡ |S r³   )r�   r‰   r   ÚmaximumrŠ   r´   r   r   r    Ú
atomic_maxÓ  s    zTritonLangProxy.atomic_maxc                 C  s0   | j  ||d¡}t ||¡}| j  |||¡ |S r³   )r�   r‰   r   ÚminimumrŠ   r´   r   r   r    Ú
atomic_minÚ  s    zTritonLangProxy.atomic_minc                 C  s0   | j  ||d¡}t ||¡}| j  |||¡ |S ©Nr   )r�   r‰   r   rp   rŠ   r´   r   r   r    Ú
atomic_andá  s    zTritonLangProxy.atomic_andc                 C  s0   | j  ||d¡}t ||¡}| j  |||¡ |S rº   )r�   r‰   r   rq   rŠ   r´   r   r   r    Ú	atomic_orè  s    zTritonLangProxy.atomic_orc                 C  s0   | j  ||d¡}t ||¡}| j  |||¡ |S rº   )r�   r‰   r   rr   rŠ   r´   r   r   r    Ú
atomic_xorï  s    zTritonLangProxy.atomic_xorc                 C  s&   t |ƒ}t |ƒ}t |ƒ}t |||¡S r!   )r   r   Úwhere)r:   Ú	conditionr   Úyr   r   r    r¾   ö  s    zTritonLangProxy.wherec                 C  s
   t ƒ ‚d S r!   r¥   ©r:   r   rÀ   r   r   r    Úumulhiý  s    zTritonLangProxy.umulhic                 C  s
   t ƒ ‚d S r!   r¥   )r:   r   rÀ   Úieee_roundingr   r   r    Úfdiv  s    zTritonLangProxy.fdivc                 C  s
   t  |¡S r!   )r   Úexp©r:   r   r   r   r    rÅ     s    zTritonLangProxy.expc                 C  s
   t  |¡S r!   )r   ÚlogrÆ   r   r   r    rÇ   	  s    zTritonLangProxy.logc                 C  s
   t  |¡S r!   )r   ÚcosrÆ   r   r   r    rÈ     s    zTritonLangProxy.cosc                 C  s
   t  |¡S r!   )r   ÚsinrÆ   r   r   r    rÉ     s    zTritonLangProxy.sinc                 C  s
   t  |¡S r!   )r   ÚsqrtrÆ   r   r   r    rÊ     s    zTritonLangProxy.sqrtc                 C  s
   t ƒ ‚d S r!   r¥   r@   r   r   r    Úglobaltimer  s    zTritonLangProxy.globaltimerc                 C  s
   t ƒ ‚d S r!   r¥   r@   r   r   r    Úclock  s    zTritonLangProxy.clockc                 C  s
   t ƒ ‚d S r!   r¥   r@   r   r   r    Údebug_barrier!  s    zTritonLangProxy.debug_barrierc                 C  s   |S r!   r   ©r:   r¡   Úvaluesr   r   r    Úmultiple_of%  s    zTritonLangProxy.multiple_ofc                 C  s   |S r!   r   rÎ   r   r   r    Úmax_contiguous)  s    zTritonLangProxy.max_contiguousc                 C  s   |S r!   r   rÎ   r   r   r    Úmax_constancy-  s    zTritonLangProxy.max_constancyc                 C  s
   t  |¡S r!   )r   ÚabsrÆ   r   r   r    rÓ   1  s    zTritonLangProxy.absc                 C  s   || d | S )Nr   r   )r:   r   rd   r   r   r    Úcdiv5  s    zTritonLangProxy.cdivc                 C  s<   t |tƒrtj|dd�}t |tƒr0tj|dd�}t ||¡S )Nr
   )r	   )r   r   r   r   r¸   rÁ   r   r   r    r¸   9  s
    

zTritonLangProxy.minimumc                 C  s   t  ||¡S r!   )r   r¶   rÁ   r   r   r    r¶   A  s    zTritonLangProxy.maximumc                 C  s
   t ƒ ‚d S r!   r¥   rÆ   r   r   r    ÚsigmoidE  s    zTritonLangProxy.sigmoidc                 C  s
   t ƒ ‚d S r!   r¥   )r:   r   rÃ   r   r   r    ÚsoftmaxI  s    zTritonLangProxy.softmaxc                 C  s
   t ƒ ‚d S r!   r¥   rÆ   r   r   r    ÚravelM  s    zTritonLangProxy.ravelc                 C  s
   t ƒ ‚d S r!   r¥   )r:   rž   ÚjZsize_iZsize_jZsize_gr   r   r    Ú	swizzle2dQ  s    zTritonLangProxy.swizzle2dc                 C  s
   t ƒ ‚d S r!   r¥   )r:   r¡   r   r   r    Ú
zeros_likeU  s    zTritonLangProxy.zeros_likec                 C  s"   |d krt  |¡S t j||d�jS ©N)Údim)r   ÚmaxrÏ   ©r:   r¡   r�   r   r   r    rÝ   Y  s    
zTritonLangProxy.maxc                 C  s
   t ƒ ‚d S r!   r¥   rÞ   r   r   r    Úargmax_  s    zTritonLangProxy.argmaxc                 C  s"   |d krt  |¡S t j||d�jS rÛ   )r   ÚminrÏ   rÞ   r   r   r    rà   c  s    
zTritonLangProxy.minc                 C  s
   t ƒ ‚d S r!   r¥   rÞ   r   r   r    Úargmini  s    zTritonLangProxy.argminc                 C  s    |d krt  |¡S t j||d�S rÛ   )r   ÚsumrÞ   r   r   r    râ   m  s    
zTritonLangProxy.sumc                 C  s
   t ƒ ‚d S r!   r¥   rÞ   r   r   r    Úxor_sums  s    zTritonLangProxy.xor_sumc                 C  s    |d krt  |¡S t j||d�S rÛ   )r   ÚcumsumrÞ   r   r   r    rä   w  s    
zTritonLangProxy.cumsumc                 C  s    |d krt  |¡S t j||d�S rÛ   )r   ÚcumprodrÞ   r   r   r    rå   }  s    
zTritonLangProxy.cumprod)Nr…   r†   r†   F)N)N)FFT)N)N)N)N)N)N)N)F)F)N)N)N)N)N)9rS   rT   rU   Ú__annotations__r;   r8   r‰   rŠ   rŽ   r‘   r”   rœ   r¤   r¦   r¨   r©   rª   r­   r±   r²   rµ   r·   r¹   r»   r¼   r½   r¾   rÂ   rÄ   rÅ   rÇ   rÈ   rÉ   rÊ   rË   rÌ   rÍ   rÐ   rÑ   rÒ   rÓ   rÔ   r¸   r¶   rÕ   rÖ   r×   rÙ   rÚ   rÝ   rß   rà   rá   râ   rã   rä   rå   r   r   r   r    r€   S  sÜ   
     ù

































r€   N)Ú
__future__r   Úlanguager   rš   r†   r   r   rƒ   r   r   r   r.   r8   r   r   r   r€   r   r   r   r    Ú<module>   s   @ >