Ë
    ŒÓ^j<  ã                   óž   — d dl mZmZmZmZmZ ddlmZ ddlm	Z	m
Z
 ddlmZ g d¢Ze
dd„«       Ze
dd
d	dœd„«       Ze
dd„«       Zed„ «       Zy	)é   )ÚMBarrierLayoutÚallocate_mbarrierÚinitÚ
invalidateÚwaité    )Újité   )Ú_unwrap_if_constexprÚbuiltiné   )Úcluster)	r   ÚarriveÚexpectÚsync_cluster_initÚfence_init_release_clusterr   r   r   r   NTc                 óž   — |j                  |«      }t        |«      }|j                  j                  | j                  ||j                  «       y)a}  
    Expect a specific number of bytes being copied. When they are copied, the barrier is signaled.

    Args:
        mbarrier (shared_memory_descriptor): Barrier that will be signaled when the operation is complete.
        bytes_per_cta (int): Expected byte count per CTA.
        pred (bool): Scalar predicate. Operation is skipped if predicate is False. Defaults to True.
    N)Ú	to_tensorr   ÚbuilderÚcreate_mbarrier_expectÚhandle)ÚmbarrierÚbytes_per_ctaÚpredÚ	_semantics       ú„/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/triton/experimental/gluon/language/nvidia/hopper/mbarrier.pyr   r      s>   € ð ×Ñ˜tÓ$€DÜ(¨Ó7€MØ×Ñ×,Ñ,¨X¯_©_¸mÈTÏ[É[ÕYó    )Úcountr   r   c                óž   — t        |«      }|j                  |«      }|j                  j                  | j                  ||j                  «       y)a'  
    Arrive at an mbarrier with a specified count.

    Args:
        mbarrier (shared_memory_descriptor): Barrier to be signalled.
        count (int): Count to arrive with. Defaults to 1.
        pred (bool): Scalar predicate. Operation is skipped if predicate is False. Defaults to True.
    N)r   r   r   Úcreate_mbarrier_arriver   )r   r   r   r   s       r   r   r   "   s>   € ô ! Ó'€EØ×Ñ˜tÓ$€DØ×Ñ×,Ñ,¨X¯_©_¸eÀTÇ[Á[ÕQr   c                 ó8   — | j                   j                  «        y)z­
    Fence that makes prior mbarrier initialization visible across the CTA cluster.

    Needs to be called together with cluster.arrive(relaxed=True) and cluster.wait.
    N)r   Ú*create_fence_mbarrier_init_release_cluster)r   s    r   r   r   1   s   € ð ×Ñ×@Ñ@ÕBr   c                  ól   — t        «        t        j                  d¬«       t        j                  «        y)zK
    Ensure mbarrier initialization is visible across the CTA cluster.
    T)ÚrelaxedN)r   r   r   r   © r   r   r   r   ;   s   € ô
 Ô Ü‡N�N˜4Õ Ü‡L�L…Nr   )NTN)N)Úampere.mbarrierr   r   r   r   r   Ú"triton.experimental.gluon._runtimer	   Ú_corer   r   Ú r   Ú__all__r   r   r   r   r%   r   r   ú<module>r+      sx   ðß WÕ WÝ 2ß 2Ý ò
€ð 	òZó 	ðZð 	Ø d°dó Ró 	ðRð 	òCó 	ðCð ñó ñr   