
    Yhc                        d dl mZ d dlmc mZ d dlmc mZ d dlmZ d dl	m
Z
 d dlmZmZmZ d dlmZ ddZe
dd            Ze
dd            Ze
dd            ZdS )    )annotationsN)kernel_signature)with_native_function_and_index)BackendIndexNativeFunctionNativeFunctionsGroup)mapMaybebankend_indexr   returnstrc                b    | j         rdS ddi}|                    | j        j        d          dz   S )N XPUTORCH_XPU_API	TORCH_API )externalgetdispatch_keyname)r
   !device_torch_api_key_word_mappings     p/var/www/tools.fuzzalab.pt/emblema-extractor/venv/lib/python3.11/site-packages/torchgen/dest/native_functions.pytorch_api_key_word_prefixr      sP     r 	)%
 	*--&+[	
 	
 	    fr   backend_index
str | Nonec                    t          | |          }|                    |           }|d S d|j        v rd S |j        rdnd}| d|                    |j                   dS )Nzlegacy::staticr   r   )r   ;)r   
get_kernelkernelr   decl)r   r   sigmetadataprefixs        r   gen_unstructuredr'       sy    
1m
,
,C''**HtX_$$t*3D<<388899<<<<r   gr   	list[str]c                   t          j        |           }t          j        |           }|                    |           }|g S t          |          }d| d|j         d| dd                    d |D                        d	gS )Nzstruct structured_z : public at::meta::structured_z {
void impl(z, c              3  >   K   | ]}|                                 V  d S N)r#   ).0as     r   	<genexpr>z!gen_structured.<locals>.<genexpr>8   s*      00!QVVXX000000r   z);
};
)metar   
structuredimpl_argumentsr!   r   r"   join)r(   r   	meta_nameout_argsr%   r&   s         r   gen_structuredr7   -   s    	!I(++H''**H	&}55F		 	#?	 	KT	 	9900x00000	 	 	 r   %NativeFunctionsGroup | NativeFunctionc                H                        |           }t          | t                    ra|-|j        r&j        rt          d          t          |           S t          t          fd| 	                                                    S t          |           }|g n|gS )Nz>Structured external backend functions are not implemented yet.c                $    t          |           S r-   )r'   )r   r   s    r   <lambda>z5compute_native_function_declaration.<locals>.<lambda>P   s    #3A}#E#E r   )r!   
isinstancer   r2   r   AssertionErrorr7   listr	   	functionsr'   )r(   r   r%   xs    `  r   #compute_native_function_declarationrA   @   s     ''**H!)** (H$7% 8$T   &a777EEEEq{{}}UU   Q..YrrQC'r   )r
   r   r   r   )r   r   r   r   r   r   )r(   r   r   r   r   r)   )r(   r8   r   r   r   r)   )
__future__r   torchgen.api.metaapir1   torchgen.api.structuredr2   torchgen.api.typesr   torchgen.contextr   torchgen.modelr   r   r   torchgen.utilsr	   r   r'   r7   rA    r   r   <module>rK      s"   " " " " " "                   , , , , , , , , , / / / / / / ; ; ; ; ; ; M M M M M M M M M M # # # # # #   *  	= 	= 	=  	=      $  ( ( (  ( ( (r   