o
    پi                     @   sh   d dl mZ d dlZd dlmZ d dlmZmZ d dlmZ ej	dej
dej
deded	df
d
dZdS )    )CallableN)Float32
const_expr)make_acc_tensor_mn_viewtCrCtCrVecop	is_colvecreturnc                 C   s@  t | jtkrt| jt}||  t n| }t	|}t |rWtj
|dgdt
|ks2J tjtj
|dgdddD ]}||d f |||d f  ||  q?n3tj
|dgdt
|ksfJ tjtj
|dgdddD ]}|d |f ||d |f  ||  qst | jtkr| | | j d S d S )Nr   )modeT)unroll_full   )r   element_typer   cutemake_fragmentshapestoreloadtor   sizecutlassrange)r   r   r   r	   tCrC_f32tCrC_f32_mnrc r   I/home/ubuntu/.local/lib/python3.10/site-packages/quack/broadcast_utils.pyvec_op   s    **r   )typingr   r   cutlass.cuter   r   r   quack.layout_utilsr   jitTensorboolr   r   r   r   r   <module>   s   (