o
    i                     @   sT   d dl mZ d dlmZmZ d dlmZ d dlmZm	Z	 dgZ
eG dd dZdS )    )	dataclass)ListAny)validate_block_shape)PaddedSharedLayoutSwizzledSharedLayoutTensorDescriptorc                   @   s|   e Zd ZU eed< ee ed< ee ed< ee ed< eeB ed< dZ	e
ed< dd	 Zed
edee deeB fddZdS )r   baseshapestridesblock_shapelayoutzeropaddingc                 C   s   t | j}|dksJ d| dt | j|ks%J d| dt | j t | j|ks9J d| dt | j t| j | jd d	ksIJ d
t| jttfsUJ dt| jtre| jj	d	kseJ d| j
dksnJ dd S )N   zExpected 2 dimensions but got z dimensionsz	Expected z strides but got zExpected block_shape to have z dimensions but got    z!Last dimension must be contiguouszBExpected layout to be a PaddedSharedLayout or SwizzledSharedLayoutz3Expected max_phase to be 1 for SwizzledSharedLayoutr   z Only 'zero' padding is supported)lenr
   r   r   r   
isinstancer   r   r   	max_phaser   )selfndim r   d/home/ubuntu/Irodori-TTS/.venv/lib/python3.10/site-packages/triton/experimental/gluon/amd/gfx1250.py__post_init__   s   
(
zTensorDescriptor.__post_init__tensorc                 C   s   t | | j|  ||S )a   Create a TensorDescriptor object from a tensor.

        Args:
            tensor (torch.Tensor): The input tensor.
            block_shape (List[int]): The block shape of the tensor.
            layout (PaddedSharedLayout | SwizzledSharedLayout): The layout of the tensor in shared memory.

        Returns:
            tensor_descriptor: the created TensorDescriptor object

        )r   r
   stride)r   r   r   r   r   r   from_tensor!   s   zTensorDescriptor.from_tensorN)__name__
__module____qualname__r   __annotations__r   intr   r   r   strr   staticmethodr   r   r   r   r   r   	   s   
 $N)dataclassesr   typingr   r   triton._utilsr   +triton.experimental.gluon.language._layoutsr   r   __all__r   r   r   r   r   <module>   s    