
    Xh                    z   U d dl mZ d dlmZ d dlmZmZmZmZm	Z	m
Z
 er4ddlmZ eee         eedf         ej        ej        f         Zeedf         ZdZdQdZdRdZdSdZd ZdTdZi ddddddddd d!d"d#d$d%d&d!d'd(d)d(d*d#d+d,d-d,d.d/d0d/d1d2d3d4d4d5d5d6d7d8d8d9d:d;d<d=d>d?Z ee                                          D ]Zeee<   d@ Zi dA dBD             dC dBD             dD dED             dF dGD             dHd dIZdJedK<   e                                D ]\  Z Zee         ee <   dUdOZ!dPS )V    )annotationsreduce)AnyCallableTYPE_CHECKINGUnionListDict   core.i   iterableIterableTypepathObjPathreturnr   c                &    t          d ||           S )Nc                    | |         S N )aidxs     _/var/www/tools.fuzzalab.pt/emblema-extractor/venv/lib/python3.11/site-packages/triton/_utils.py<lambda>z#get_iterable_path.<locals>.<lambda>   s
    3     r   )r   r   s     r   get_iterable_pathr      s    ''x888r   tuple[int, ...]valc                    t          |          dk    sJ t          |          dk    r| nt          | |d d                   }|||d         <   d S )Nr   r   )lenr   )r   r   r   prevs       r   set_iterable_pathr$      sP    t99>>>>4yyA~~88+<XtCRCy+Q+QDDbNNNr   Union[IterableType, Any]predCallable[[ObjPath, Any], bool]list[ObjPath]c                    ddl m fdi d
fd d	|            t                                                    S )Nr   r   c                T    t          | t          t          j        j        f          S r   )
isinstancelisttuple
tuple_type)xr   s    r   r   zfind_paths_if.<locals>.<lambda>   s     :a$tz[_[jAk3l3l r   r   r   currentr   c                     |          r(t          |          D ]\  }} g | |R |           d S  | |          rd | <   d S d S r   )	enumerate)r   r0   r   item_implis_iterabler&   rets       r   r4   zfind_paths_if.<locals>._impl   s    ;w 	&w// * *	TllcllD))))* *T$   	CIII	 	r   r   )r   r   r0   r   )languager   r,   keys)r   r&   r4   r   r5   r6   s    `@@@@r   find_paths_ifr9      s    )l)l)l)lK!C         
E"h

r   c                    | | dz
  z  dk    S )Nr   r   r   )r/   s    r   is_power_of_twor;   *   s    QKAr   shape	List[int]c           	     >   d}t          |           D ]d\  }}t          |t                    s#t          d| dt	          |           d          t          |          st          d| d          ||z  }e|t          k    rt          d| dt           d          |S )	Nr   zShape element z1 must have type `constexpr[int]`, got `constexpr[]z must be a power of 2znumel (z') exceeds triton maximum tensor numel ())r2   r+   int	TypeErrortyper;   
ValueErrorTRITON_MAX_TENSOR_NUMEL)r<   numelids       r   validate_block_shaperI   .   s    E%    1!S!! 	mkQkkaefgahahkkklllq!! 	HFaFFFGGG
&&&k5kkQhkkklllLr   boolu1int1uint1i1
float8e4nvfp8e4nvfloat8e5fp8e5float8e4b15fp8e4b15float8_e4m3fn
float8e4b8fp8e4b8float8_e4m3fnuzfloat8_e5m2float8e5b16fp8e5b16float8_e5m2fnuzhalffp16float16bfloat16bf16floatfp32fp64i8i16i32i64u8u16u32u64void)float32doublefloat64int8int16rA   int32int64uint8uint16uint32uint64rm   c                l    t          |                               d          d         }t          |         S )N.r!   )strsplittype_canonicalisation_dict)dtype	dtype_strs     r   canonicalize_dtyper   e   s+    E

  %%b)I%i00r   c                    i | ]}d | |	S )ur   .0ns     r   
<dictcomp>r   k   0     $ $ $ 1ww $ $ $r   )r             @   c                    i | ]}d | |	S )rG   r   r   s     r   r   r   m   r   r   c                    i | ]}d | |	S )fpr   r   s     r   r   r   o   s0        Axx   r   )r   r   r   c                    i | ]}d | d	S )fp8r   r   )r   suffixs     r   r   r   q   s0     ? ? ? V~~q ? ? ?r   )e4nve4b15e4b8e5e5b16r   )ra   rm   zDict[str, int]BITWIDTH_DICTr~   r{   rA   c                    t           |          S r   )r   )r~   s    r   get_primitive_bitwidthr   {   s    r   N)r   r   r   r   r   r   )r   r   r   r   r   r   )r   r%   r&   r'   r   r(   )r<   r=   )r~   r{   r   rA   )"
__future__r   	functoolsr   typingr   r   r   r	   r
   r   r7   r   r,   r-   r.   r   rA   r   rE   r   r$   r9   r;   rI   r}   valuesvr   r   __annotations__itemskr   r   r   r   <module>r      sc   " " " " " " "       B B B B B B B B B B B B B B B B cE#s(OTZPQLCHoG! 9 9 9 9      $     #
D# D# T	#
 	$# )# # :# Y# )# y# 7# :# z#  F!#" v##$ %#& V'#( E# # # J 
(//11	2	2 & &A$%q!!1 1 1
!$ $"$ $ $!$ $"$ $ $!
   !? ?=? ? ?! ! ! !     ',,.. ( (DAq$Q'M!           r   