Ë
    ŒÓ^j  ã                   ó†   — d dl mc mc mc mZ d dl mZ d dlmZm	Z	m
Z
mZmZmZmZ g d¢Zedd„«       Zd	d„Zed	d„«       Zy)
é    N)Úbuiltin)Úasync_copy_global_to_sharedÚasync_copy_shared_to_globalÚ
store_waitÚtensor_descriptorÚtensor_descriptor_typeÚmake_tensor_descriptorÚ_emit_alignment_check)Úasync_gatherÚasync_scatterr   r   r   r   r   r	   c                 ób  — |j                   j                  j                  rt        | |fdd|¬«       |j	                  |«      }|j	                  |«      }|j                   j                  | j                  |j                  |j                  |j                  |j                  |j                  «       y)a,  
    Asynchronously gather elements from global memory to shared memory using TMA.

    Args:
        tensor_desc (tensor_descriptor): The tensor descriptor.
        x_offsets (tensor): 1D tensor of X offsets.
        y_offset (int): Scalar Y offset.
        barrier (shared_memory_descriptor): Barrier that will be signaled when the operation is complete.
        result (tensor_memory_descriptor): Result shared memory, must have NVMMASharedLayout.
        pred (bool): Scalar predicate. Operation is skipped if predicate is False. Defaults to True.
    r   Úy_offset©Ú	_semanticN)ÚbuilderÚoptionsÚenable_iisanr
   Ú	to_tensorÚcreate_async_tma_gatherÚhandle)Útensor_descÚ	x_offsetsr   ÚbarrierÚresultÚpredr   s          ú‚/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/triton/experimental/gluon/language/nvidia/blackwell/tma.pyr   r      s�   € ð ×Ñ× Ñ ×-Ò-Ü˜k¨H¨<¸ÈÐ_hÕià×Ñ˜tÓ$€DØ×"Ñ" 8Ó,€HØ×Ñ×-Ñ-¨k×.@Ñ.@À)×BRÑBRÐT\×TcÑTcÐel×esÑesØ.4¯m©m¸T¿[¹[õJó    c                 ó  — t        j                  ||¬«      }t        j                  d|¬«      }|j                  ||¬«      }t        j                  |d|¬«       | j                  ||¬«      }t        j                  |d|¬«       y )Nr   r   z)async_scatter y_offset cannot be negativez9async_scatter x_offsets cannot have any negative elements)Úttglr   Ú__ge__Údevice_assert)r   r   r   ÚzeroÚis_nonnegatives        r   Ú_emit_scatter_nonnegative_checkr$   /   sq   € Ü�~‰~˜h°)Ô<€HÜ�>‰>˜! yÔ1€Dà—_‘_ T°Y�_Ó?€NÜ×Ñ�~Ð'RÐ^gÕhà×%Ñ% d°iÐ%Ó@€NÜ×Ñ�~Ð'bÐnwÖxr   c                 ó0  — |j                   j                  j                  rt        | |fdd|¬«       t	        |||¬«       |j                  |«      }|j                   j                  | j                  |j                  |j                  |j                  «       y)aW  
    Asynchronously scatter elements from shared memory to global memory using TMA.

    Args:
        tensor_desc (tensor_descriptor): The tensor descriptor.
        x_offsets (tensor): 1D tensor of X offsets.
        y_offset (int): Scalar Y offset.
        src (tensor_memory_descriptor): The source data, must be in NVMMASharedLayout.
    r   r   r   N)r   r   r   r
   r$   r   Úcreate_async_tma_scatterr   )r   r   r   Úsrcr   s        r   r   r   :   s|   € ð ×Ñ× Ñ ×-Ò-Ü˜k¨H¨<¸È*Ð`iÕjÜ'¨	°8ÀyÕQà×"Ñ" 8Ó,€HØ×Ñ×.Ñ.¨{×/AÑ/AÀ9×CSÑCSÐU]×UdÑUdÐfi×fpÑfpÕqr   )TN)N)Ú(triton.experimental.gluon.language._coreÚexperimentalÚgluonÚlanguageÚ_corer   r   Ú4triton.experimental.gluon.language.nvidia.hopper.tmar   r   r   r   r   r	   r
   Ú__all__r   r$   r   © r   r   ú<module>r0      sV   ðß 7Ö 7Ý <÷÷ ñ ò	€ð 	òJó 	ðJó*yð 	òró 	ñrr   