§
    �Štjêy  ã                  óÐ  — U d dl mZ d dlZd dlZd dlZd dlZd dlmZ 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 dlmZ d d	lmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z" d d
l#m$Z$m%Z% e	rd dl&m'Z' ej(        dej)        dej*        dej+        dej,        dej-        dej.        dej/        dej0        dej1        dej2        dej3        diZ4ej(        dej)        dej*        dej+        dej,        dej-        dej.        dej/        dej0        dej1        dej2        dej3        diZ5ej(        dej)        dej*        dej+        dej,        dej-        dej.        dej/        dej0        dej1        d ej2        d!ej3        d"iZ6	 dodpd+„Z7dqd/„Z8drd5„Z9dsd8„Z:i a;d9e<d:<    ej=        d;¦  «        Z>dtdA„Z?dudE„Z@dvdI„ZA	 dwdxdL„ZBdydU„ZCdzdV„ZDd{dW„ZEd|dZ„ZF ed[¬\¦  «         G d]„ d^¦  «        ¦   «         ZG	 d}d~dd„ZHddn„ZIdS )€é    )ÚannotationsN)Ú	dataclass)ÚTYPE_CHECKING)Úaten_shimified_opsÚinductor_fallback_ops)ÚDispatcherSignature)ÚCppSignatureÚCppSignatureGroup)Úmethod_with_native_function)ÚArgumentÚBackendIndexÚBaseTyÚBaseTypeÚDispatchKeyÚFunctionSchemaÚis_cuda_dispatch_keyÚListTypeÚNativeFunctionÚNativeFunctionsGroupÚOperatorNameÚOptionalTypeÚTypeÚVariant)ÚFileManagerÚmapMaybe)ÚSequenceÚAtenTensorHandleÚint32_tÚint64_tÚdoublezconst char*ÚAtenGeneratorHandleú
at::TensorÚboolzc10::SymIntzc10::Scalarz::std::string_viewzc10::DeviceIndexzc10::Layoutzc10::MemoryFormatzc10::ScalarTypezat::GeneratorÚresolve_tensor_dispatch_flagsÚ zstatic_cast<c10::DeviceIndex>zstatic_cast<c10::Layout>zstatic_cast<c10::MemoryFormat>zstatic_cast<c10::ScalarType>z&*generator_handle_to_generator_pointerFÚtypr   ÚnameÚstrÚis_writeÚreturnú1tuple[list[str], list[str], list[str], list[str]]c                ó  — t          | t          ¦  «        rÍ| j        t          v ru| j        t          j        k    r
|rd|› d�g}n-t          | j                 rt          | j                 › d|› d�n|g}t          | j                 g|gt          | j                 g|fS | j        t          j        k    rddg||dz   gdgd|› d|› d	�gfS t          d
t          | ¦  «        › �¦  «        ‚t          | t          ¦  «        �r…t          | j        |¦  «        \  }}}}d}g }	g }
|D �][}||         dz   ||<   |                     d¦  «        rd|	                     d|› d�¦  «         |t!          d¦  «        d…         }|
                     d|› d||         › d||dz            › d�¦  «         |dz  }ŒŠ|dk    rF|	                     d¦  «         |
                     d||         › d||dz            › d�¦  «         |dz  }ŒÖ|dk    r?|	                     d|› d�¦  «         |
                     d||         › d�¦  «         |dz  }�Œ|	                     d|› d�¦  «         |
                     d|› d||         › d�¦  «         |dz  }�Œ]|||	|
fS t          | t"          ¦  «        �rWt          | j        |¦  «        \  }}}}t!          |¦  «        dk    rt%          dt          | ¦  «        › �¦  «        ‚d|d         › d�|d<   |                     d¦  «         |d         }|                     |dz   ¦  «         |d         }g }|dk    r8| j        €t%          d ¦  «        ‚|                     d!| j        › d|› d�¦  «         nm|dk    r|s|                     d"|› d|› d#�¦  «         nH|d$k    r#|                     d%|› d&|› d'|› d|› d(�	¦  «         n|                     d!|› d|› d|› d#�¦  «         d)„ |D ¦   «         }||||fS t          d*t          | ¦  «        › d+�¦  «        ‚),Nz!*tensor_handle_to_tensor_pointer(ú)ú(r   Ú_index_zc10::Devicez)c10::Device(static_cast<c10::DeviceType>(z!), static_cast<c10::DeviceIndex>(z	_index_))zTODO: add support for arg type r   Ú*úc10::ArrayRef<z::std::optional<ú>éÿÿÿÿzpointer_to_optional_list<z>(ú, é   é   z::std::optional<c10::Device>zpointer_to_optional_device(r"   zresolve_tensor_dispatch_flags(zpointer_to_optional<z'ListType with unsupported element type zconst r   Ú_len_r#   zbool ListType must have a sizezpointer_to_list<z#resolve_tensor_list_dispatch_flags(z_len_)z::std::optional<at::Tensor>z
c10::List<z>(c10::ArrayRef<z%>(resolve_tensor_list_dispatch_flags(z_len_)))c                ó   — g | ]}d |› d�‘Œ	S )r1   r2   © )Ú.0Úts     úV/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/torchgen/gen_aoti_c_shim.pyú
<listcomp>z-convert_arg_type_and_name.<locals>.<listcomp>Â   s$   € Ð@Ð@Ð@°Ð+ qÐ+Ð+Ð+Ð@Ð@Ð@ó    zArgument type z not supported!)Ú
isinstancer   r'   Úbase_type_to_c_typer   ÚTensorÚbase_type_to_callsite_exprÚbase_type_to_aten_typeÚDeviceÚNotImplementedErrorÚreprr   Úconvert_arg_type_and_nameÚelemÚ
startswithÚappendÚlenr   ÚAssertionErrorÚsize)r&   r'   r)   Úcallsite_exprÚc_typesÚnamesÚ
aten_typesÚcallsite_exprsÚjÚnew_aten_typesÚnew_callsite_exprsÚ	aten_typeÚ	base_typeÚ_Úatypes                  r<   rG   rG   T   s}  € õ
 �#•xÑ Ô ð o
ØŒ8Õ*Ð*Ð*ØŒx�6œ=Ò(Ð(¨XÐ(ð "MÀTÐ!LÐ!LÐ!LÐ M��õ 2°#´(Ô;ðÕ1°#´(Ô;ÐEÐE¸dÐEÐEÐEÐEàð!�õ % S¤XÔ.Ð/Ø�Ý'¨¬Ô1Ð2Øð	ð ð ŒX�œÒ&Ð&à˜IÐ&Ø�t˜iÑ'Ð(Ø�àvÀÐvÐvÐgkÐvÐvÐvðð	ð õ &Ð&SÍÈSÉ	Ì	Ð&SÐ&SÑTÔTÐTÝ	�C�Ñ	&Ô	&ñ P
Ý5NØŒH�dñ6
ô 6
Ñ2ˆ�˜
 Nð ˆØˆØÐØ#ð 	ñ 	ˆIà  œ cÑ)ˆG�A‰JØ×#Ò#Ð$4Ñ5Ô5ð à×%Ò%Ð&E¸Ð&EÐ&EÐ&EÑFÔFÐFØ%¥cÐ*:Ñ&;Ô&;¸bÐ&@ÔA�	Ø"×)Ò)ØX°	ÐXÐX¸UÀ1¼XÐXÐXÈÈqÐSTÉuÌÐXÐXÐXñô ð ð �Q‘��Ø˜mÒ+Ð+à×%Ò%Ð&DÑEÔEÐEØ"×)Ò)ØM°%¸´(ÐMÐM¸eÀAÈÁE¼lÐMÐMÐMñô ð ð �Q‘��Ø˜lÒ*Ð*Ø×%Ò%Ð&E¸Ð&EÐ&EÐ&EÑFÔFÐFØ"×)Ò)Ð*VÈ5ÐQRÌ8Ð*VÐ*VÐ*VÑWÔWÐWØ�Q‘�‘à×%Ò%Ð&E¸Ð&EÐ&EÐ&EÑFÔFÐFØ"×)Ò)ØC¨9ÐCÐC¸¸a¼ÐCÐCÐCñô ð ð �Q‘�‘ð ØØØð	
ð 	
õ 
�C�Ñ	"Ô	"ñ &
å(AÀ#Ä(ÈDÑ(QÔ(QÑ%ˆ�˜
 AÝˆw‰<Œ<˜1ÒÐÝ Ð!VÍ4ÐPSÉ9Ì9Ð!VÐ!VÑWÔWÐWð ,˜g aœjÐ+Ð+Ð+ˆ�‰
Ø�Š�yÑ!Ô!Ð!Ø�QŒxˆØ�Š�T˜G‘^Ñ$Ô$Ð$à˜1”ˆØˆØ�FŠ?ˆ?ð ŒxÐÝ$Ð%EÑFÔFÐFØ×!Ò!Ð"H°S´XÐ"HÐ"HÀÐ"HÐ"HÐ"HÑIÔIÐIÐIØ�lÒ"Ð"¨8Ð"Ø×!Ò!ØJ°dÐJÐJ¸dÐJÐJÐJñô ð ð ð Ð3Ò3Ð3à×!Ò!Øv˜UÐvÐv°EÐvÐvÐ`dÐvÐvÐhlÐvÐvÐvñô ð ð ð ×!Ò!Ð"R°UÐ"RÐ"R¸dÐ"RÐ"RÀdÐ"RÐ"RÐ"RÑSÔSÐSà@Ð@°ZÐ@Ñ@Ô@ˆ
àØØØð	
ð 	
õ ÐI­t°C©y¬yÐIÐIÐIÑ
JÔ
JÐJr>   Útypesú	list[str]rP   c                ó6   — d„ t          | |¦  «        D ¦   «         S )Nc                ó$   — g | ]\  }}|d z   |z   ‘ŒS )ú r9   )r:   r&   r'   s      r<   r=   z%zip_type_and_name.<locals>.<listcomp>Í   s%   € Ð@Ð@Ð@¡  dˆC�#‰I˜ÑÐ@Ð@Ð@r>   )Úzip)rZ   rP   s     r<   Úzip_type_and_namer`   Ì   s    € Ø@Ð@­c°%¸Ñ.?Ô.?Ð@Ñ@Ô@Ð@r>   Úflat_argumentsúSequence[Argument]Úskipped_argsúset[str]útuple[list[str], list[str]]c                ó´  — g }g }g }| D ]¾}|j         |v rO|j        �2ddlm} |                      ||j        |j        d¬¦  «        ¦  «         n|                     d¦  «         ŒZt          |j        |j         |j        ¦  «        \  }}}	}
|                     |¦  «         |                     |¦  «         |                     |
¦  «         Œ¿t          ||¦  «        |fS )Nr   )Údefault_exprF)Úsymintzstd::nullopt)
r'   ÚdefaultÚtorchgen.api.cpprg   rJ   ÚtyperG   r)   Úextendr`   )ra   rc   rZ   Ú	new_namesrR   Úargrg   Ú	new_typesrP   rX   rU   s              r<   Úgen_argumentsrp   Ñ   s
  € ð €EØ€IØ "€NØð 2ð 2ˆØŒ8�|Ð#Ð#ð
 Œ{Ð&Ø9Ð9Ð9Ð9Ð9Ð9à×%Ò% l l°3´;ÀÄÐQVÐ&WÑ&WÔ&WÑXÔXÐXÐXà×%Ò% nÑ5Ô5Ð5ØÝ2KØŒH�c”h ¤ñ3
ô 3
Ñ/ˆ	�5˜!Ð/ð 	�Š�YÑÔÐØ×Ò˜ÑÔÐØ×ÒÐ0Ñ1Ô1Ð1Ð1Ý˜U IÑ.Ô.°Ð>Ð>r>   Úschemar   c           
     ó’  — g }g }t          | j        ¦  «        D ]›\  }}|                     d|› �¦  «         t          |j        t
          ¦  «        rA|j        j        t          v r.|                     t          |j        j                 dz   ¦  «         Œxt          dt          |j        ¦  «        › �¦  «        ‚dd	„}d
}| j         
                    ¦   «         }dD ]
}||v rd} nŒg }	t          | j        ¦  «        D ]¿\  }}t          |¦  «        dk    rdnd|› d�}
t          |j        t
          ¦  «        s$t          dt	          |j        ¦  «        › �¦  «        ‚ ||j        |
¦  «        }|r,|	                     d||         › d||         › d|› d�¦  «         Œ�|	                     d||         › d|› d�¦  «         ŒÀt          ||¦  «        |	fS )NÚretr0   z"TODO: add support for return type r&   r   Úvalr(   r*   c                ó¤   — | j         t          j        k    rd|› d�S | j         t          j        k    r|› d�S | j         t          j        k    r|› d�S |S )Nznew_tensor_handle(std::move(z))z.expect_int()z.toDouble())r'   r   rA   ÚSymIntÚScalar)r&   rt   s     r<   Úconvert_returnz#gen_returns.<locals>.convert_returnü   sc   € ØŒ8•v”}Ò$Ð$Ø9°#Ð9Ð9Ð9Ð9ØŒX�œÒ&Ð&ØÐ(Ð(Ð(Ð(ØŒX�œÒ&Ð&ØÐ&Ð&Ð&Ð&àˆJr>   F)Ú_functional_sym_constrain_rangeÚ#_scaled_dot_product_cudnn_attentionÚ0_scaled_dot_product_efficient_attention_backwardÚ'_scaled_dot_product_efficient_attentionÚ#_scaled_dot_product_flash_attentionÚ0_scaled_dot_product_fused_attention_overrideableÚ#_thhn_fused_lstm_cell_backward_implÚconvolution_backwardÚgrid_sampler_2d_backwardÚgrid_sampler_3d_backwardÚlinear_backwardTr5   Ú
tmp_resultz	std::get<z>(tmp_result)z"Expected BaseType for return, got zif (z) { *z = z; }ú;)r&   r   rt   r(   r*   r(   )Ú	enumerateÚreturnsrJ   r?   rk   r   r'   r@   rE   rF   Úunambiguous_namerK   rL   r`   )rq   rZ   rP   Úidxrs   rx   Úret_pointer_can_be_nullrˆ   r'   rR   ÚtmpÚrvals               r<   Úgen_returnsr�   ð   s!  € Ø€EØ€EÝ˜fœnÑ-Ô-ð ð ‰ˆˆSØ�Š�[˜3�[�[Ñ!Ô!Ð!Ý�c”h¥Ñ)Ô)ð 	¨c¬h¬mÕ?RÐ.RÐ.RØ�LŠLÕ,¨S¬X¬]Ô;¸cÑAÑBÔBÐBÐBå%ØEµT¸#¼(±^´^ÐEÐEñô ð ðð ð ð ð $ÐØ”{×3Ò3Ñ5Ô5Ððð ð ˆð Ð#Ð#Ð#Ø&*Ð#ØˆEð $ð !#€NÝ˜fœnÑ-Ô-ð >ð >‰ˆˆSÝ! %™jœj¨Ašo˜oˆlˆlÐ3Q¸sÐ3QÐ3QÐ3QˆÝ˜#œ(¥HÑ-Ô-ð 	XÝ Ð!VÅdÈ3Ì8ÁnÄnÐ!VÐ!VÑWÔWÐWØˆ~˜cœh¨Ñ,Ô,ˆØ"ð 	>Ø×!Ò!Ð"T¨¨s¬Ð"TÐ"T¸5À¼:Ð"TÐ"TÈ$Ð"TÐ"TÐ"TÑUÔUÐUÐUà×!Ò!Ð"< e¨C¤jÐ"<Ð"<°TÐ"<Ð"<Ð"<Ñ=Ô=Ð=Ð=å˜U EÑ*Ô*¨NÐ:Ð:r>   z+dict[tuple[str, str, str], tuple[str, str]]Údeclaration_definition_cachez^TORCH_VERSION_\d+_\d+_\d+$Úop_metadataú+dict[str, str | dict[str, list[str] | str]]Ú
op_versionÚintú
str | Nonec                óR  — |dk    r|                       d¦  «        }nD|                       d|› �¦  «        }t          |t          ¦  «        r|                      d¦  «        nd}|€dS t          |t          ¦  «        rt                               |¦  «        st          d|›d�¦  «        ‚|S )a  
    Return the TORCH_VERSION_X_Y_Z macro string at which the given op variant became
    available, or None if the variant is ungated.

    op_metadata contains the entry for an op in a dictionary like aten_shimified_ops
    in torchgen/aoti/fallback_ops.py

    op_version is the integer extracted from a "vN" key in `op_metadata`. The base op
    has op_version == 1 and reads from a top-level "since" key; later variants read
    "since" from their own dict-form entry {"new_args": [...], "since": "..."}.
    r5   ÚsinceÚvNz`since` value z' is not of the form TORCH_VERSION_X_Y_Z)Úgetr?   Údictr(   Ú_TORCH_VERSION_PATTERNÚmatchrL   )r�   r‘   r•   Úvariants       r<   Ú*_get_earliest_torch_version_for_op_variantrœ   .  s¸   € ð �Q‚€Ø—’ Ñ(Ô(ˆˆà—/’/Ð"2 jÐ"2Ð"2Ñ3Ô3ˆÝ(2°7½DÑ(AÔ(AÐK�—’˜GÑ$Ô$Ð$ÀtˆØ€}ØˆtÝ�e�SÑ!Ô!ð 
Õ)?×)EÒ)EÀeÑ)LÔ)Lð 
ÝØM˜UÐMÐMÐMñ
ô 
ð 	
ð €Lr>   ÚdeviceÚbackend_callútuple[str, str]c                ó2  ‡— | j                              ¦   «         }|||ft          v rt          |||f         S dg i}t          |                     ¦   «         ¦  «        D �]\  }}|dk    rŒ|                     d¦  «        st          d|› d|› d�¦  «        ‚	 t          |dd …         ¦  «        }n)# t          $ r}	t          d|› d|› d�¦  «        |	‚d }	~	ww xY w||v rt          |› d|› d	�¦  «        ‚t          |t          ¦  «        st          d
|› d|› d�¦  «        ‚|                     dg ¦  «        }
t          |
t          ¦  «        st          d
|› d|› d�¦  «        ‚|
||<   �Œg }g }t          ¦   «         }t          |                     ¦   «         d¬¦  «        D �]»\  }}
|dk    r|n|› d|› �}|                      ¦   «         r.t          g | j        j        ¢| j        j        ¢|¦  «        \  }}g }nYt          | j        j        |¦  «        \  }}| j         j         j        rg g fnt+          | ¦  «        \  }}|                     |¦  «         t/          j        d|› d|› dd                     |¦  «        › d�¦  «        }|rdnd}dŠ|r!d                     ˆfd„|D ¦   «         ¦  «        nd}t/          j        d|› d|› |› dd                     |¦  «        › d�¦  «        |z   t/          j        d¦  «        z   }|                     |
¦  «         d |› d!�}t7          ||¦  «        }|�d"|› d|› d#|› �}|                     |¦  «         |                     |¦  «         �Œ½d                     |¦  «        d                     |¦  «        ft          |||f<   t          |||f         S )$Nr5   r•   r–   zVersion number for z is z, not starting with 'v'z, not a valid integer after 'v'z for z has already been definedzVariant zO must be a dict of the form {'new_args': [...], 'since': 'TORCH_VERSION_X_Y_Z'}Únew_argsza has non-list 'new_args' field when a list of arg names differing from prev versions is expected.T)ÚreverseÚ_vzAOTITorchError aoti_torch_rX   r.   r4   r-   zauto tmp_result = r%   z		ú
c              3  ó"   •K  — | ]	}‰|z   V — Œ
d S ©Nr9   )r:   ÚrÚindents     €r<   ú	<genexpr>z1gen_declaration_and_definition.<locals>.<genexpr>™  s'   øè è € Ð:Ð: Q�f˜q‘jÐ:Ð:Ð:Ð:Ð:Ð:r>   z	
        zL {
            AOTI_TORCH_CONVERT_EXCEPTION_TO_ERROR_CODE({
                z(
                    z
                );
        z#
            });
        }
        zAOTI_TORCH_EXPORT r…   z#if TORCH_FEATURE_VERSION >= z$
#endif // TORCH_FEATURE_VERSION >= )r'   rˆ   rŽ   ÚsortedÚitemsrI   rL   r’   Ú
ValueErrorr?   r˜   r—   ÚlistÚsetÚ	is_out_fnrp   Ú	argumentsÚoutÚflat_non_outÚflat_allÚinplacer�   rl   ÚtextwrapÚdedentÚjoinÚupdaterœ   rJ   )rq   r�   rž   r�   Ú	base_nameÚindexed_op_metadataÚver_strÚpayloadÚver_idÚer¡   ÚdeclarationsÚdefinitionsrc   Ú	func_nameÚargsrR   Úret_assignmentsÚret_declarationsÚdeclarationr„   Úret_assignments_strÚ
definitionÚdeclr•   r¨   s                            @r<   Úgen_declaration_and_definitionrÉ   K  s
  ø€ ð ”×,Ò,Ñ.Ô.€Ið 	�6˜<Ð(Õ,HÐHÐHÝ+¨Y¸ÀÐ,MÔNÐNð
 23°B°ÐÝ" ;×#4Ò#4Ñ#6Ô#6Ñ7Ô7ð /ñ /Ñˆ�à�gÒÐØØ×!Ò! #Ñ&Ô&ð 	Ý ØU iÐUÐU°WÐUÐUÐUñô ð ð	Ý˜   œÑ%Ô%ˆFˆFøÝð 	ð 	ð 	Ý Ø] iÐ]Ð]°WÐ]Ð]Ð]ñô àðøøøøð	øøøð Ð(Ð(Ð(Ý  GÐ!VÐ!V°)Ð!VÐ!VÐ!VÑWÔWÐWÝ˜'¥4Ñ(Ô(ð 	Ý ðF˜7ð Fð F¨ð Fð Fð Fñô ð ð —;’;˜z¨2Ñ.Ô.ˆÝ˜(¥DÑ)Ô)ð 	Ý ðN˜7ð Nð N¨ð Nð Nð Nñô ð ð '/Ð˜FÑ#Ñ#à €LØ€KÝ ™UœU€Lå"Ð#6×#<Ò#<Ñ#>Ô#>ÈÐMÑMÔMð 7'ñ 7'Ñˆ�ð "(¨1¢ �I�I°YÐ2JÐ2JÀ&Ð2JÐ2Jˆ	Ø×ÒÑÔð 	*õ $1ØG�&Ô"Ô&ÐG¨Ô)9Ô)FÐGÈñ$ô $Ñ ˆD�.ð *,ˆOˆOå#0ØÔ Ô)¨<ñ$ô $Ñ ˆD�.ð
 #œKÔ,Ô4ÐM��R��½+ÀfÑ:MÔ:Mñ .Ð˜oð �KŠKÐ(Ñ)Ô)Ð)å”oØP¨ÐPÐP°)ÐPÐP¸d¿iºiÈ¹o¼oÐPÐPÐPñ
ô 
ˆð .=ÐDÐ)Ð)À"ˆ
Øˆà>MÐUˆD�IŠIÐ:Ð:Ð:Ð:¨/Ð:Ñ:Ô:Ñ:Ô:Ð:ÐSUð 	õ ŒOð Ø	ðð ð ðð *ðð ð —Y’Y˜~Ñ.Ô.ð	ð ð ñ ô ð "ñ"õ Œoð ñ ô ñð 	ð 	×Ò˜HÑ%Ô%Ð%Ø2 KÐ2Ð2Ð2ˆÝ:¸;ÈÑOÔOˆØÐð>°ð >ð >Øð>ð >à6;ð>ð >ð ð
 	×Ò˜DÑ!Ô!Ð!Ø×Ò˜:Ñ&Ô&Ð&Ñ&ð 	�	Š	�,ÑÔØ�	Š	�+ÑÔðGÕ  )¨V°\Ð!BÑCõ (¨°F¸LÐ(IÔJÐJs   ÂB-Â-
CÂ7CÃCÚfr   r	   c                ó   — t          j        | j        ¦  «        }t          j        | dd¬¦  «        }|j        r!| j                             ¦   «         r|j        }n|j        }|€t          d| j        j
        › �¦  «        ‚|S )NF)ÚmethodÚfallback_bindingzNo cpp signature found for )r   Úfrom_schemaÚfuncr
   Úfrom_native_functionrh   Ú
has_symintÚsymint_signatureÚ	signaturerL   r'   )rÊ   ÚsigÚcpp_sigsÚcpp_sigs       r<   Ú*gen_static_dispatch_backend_call_signaturer×   ¼  sŠ   € Ý
Ô
)¨!¬&Ñ
1Ô
1€CÝ Ô5Ø	�%¨%ðñ ô €Hð „zð %�a”f×'Ò'Ñ)Ô)ð %ØÔ+ˆˆàÔ$ˆØ€ÝÐH¸1¼6¼;ÐHÐHÑIÔIÐIØ€Nr>   Úbackend_indexúBackendIndex | Nonec                ó®  — t          j        | j        ¦  «        }t          | ¦  «        }|€{|j        r]| j                             ¦   «         rDt          j        | j        v }|s/| 	                    ¦   «         }| 
                    d¦  «        }d|› d�S d| 	                    ¦   «         › �S d|j                             ¦   «         › d| 	                    ¦   «         › �S )NÚ_symintzat::symint::z<c10::SymInt>zat::z::)r   rÎ   rÏ   r×   rh   rÑ   r   ÚfunctionÚvariantsr'   ÚremovesuffixÚdispatch_keyÚlower)rÊ   rØ   rÔ   rÖ   Úhas_function_variantr¹   s         r<   Ú gen_static_dispatch_backend_callrâ   Ê  sÖ   € õ Ô
)¨!¬&Ñ
1Ô
1€CÝ8¸Ñ;Ô;€GàÐàŒ:ð 	?˜!œ&×+Ò+Ñ-Ô-ð 	?Ý#*Ô#3°q´zÐ#AÐ à'ð ?ð $ŸLšL™NœN�	Ø%×2Ò2°9Ñ=Ô=�	Ø> iÐ>Ð>Ð>Ð>à&�g—l’l‘n”nÐ&Ð&Ð&àL�mÔ0×6Ò6Ñ8Ô8ÐLÐL¸G¿LºL¹N¼NÐLÐLÐLr>   rÏ   Úfunc_group_mappingú(dict[OperatorName, NativeFunctionsGroup]rß   úDispatchKey | NoneÚbackend_indicesúdict[DispatchKey, BackendIndex]Úextend_aoti_c_shimc                ó  — d }|€|S ||                               | ¦  «        s6| j        �8| j        |v r/||                               || j                 ¦  «        r	||         }n«|r|S |t          j                                       | ¦  «        r|t          j                 }no|t          j                                       | ¦  «        r|t          j                 }n7|t          j                                       | ¦  «        r|t          j                 }|S r¦   )Ú
has_kernelÚstructured_delegater   ÚCompositeExplicitAutogradÚ&CompositeExplicitAutogradNonFunctionalÚCompositeImplicitAutograd©rÏ   rã   rß   ræ   rè   rØ   s         r<   Úget_backend_index_for_aotirð   å  s'  € ð €MàÐØÐà�|Ô$×/Ò/°Ñ5Ô5ð SØÔ Ð,ØÔ$Ð(:Ð:Ð:Ø˜LÔ)×4Ò4Ø˜tÔ7Ô8ñ
ô 
ð ;ð
 (¨Ô5ˆˆð ð 	SØ Ð à�[ÔBÔC×NÒNÈtÑTÔTð 	Sà+­KÔ,QÔRˆMˆMØÝÔ>ô
ç
Š*�TÑ
Ô
ð	Sð ,ÝÔBôˆMˆMð �[ÔBÔC×NÒNÈtÑTÔTð 	SØ+­KÔ,QÔRˆMàÐr>   c                ó”   — t          | ||||¦  «        }|€|€d| j        › d�S d S d| j        › d|j                             ¦   «         › d�S )Nz#include <ATen/ops/z.h>rX   z_dispatch.h>)rð   Ú	root_namerß   rà   rï   s         r<   Úget_header_for_aotiró     sp   € õ /ØÐ  ,°ÐASñô €Mð ÐØÐØ<¨¬Ð<Ð<Ð<Ð<Øˆtàb ¤ÐbÐb°-Ô2L×2RÒ2RÑ2TÔ2TÐbÐbÐbÐbr>   c                ó¶   — | j         j        j        r-| j        › d| j         j        j        › d| j         j        j        › �n| j        › d| j         j        j        › d�S )Nú.z.default)rÏ   r'   Úoverload_nameÚ	namespace)rÏ   s    r<   Úget_fallback_op_namerø   !  s`   € ð Œ9Œ>Ô'ð	?ˆ4Œ>ÐPÐP˜DœIœNÔ/ÐPÐP°$´)´.Ô2NÐPÐPÐPà”Ð>Ð> ¤¤Ô!4Ð>Ð>Ð>ðr>   Úversion_infoÚheaderc                ó  — t          | ||||¦  «        }|€|�d S | j        }|€dn|                     ¦   «         }	t          | |¦  «        }
	 |rt	          ||	|
|¦  «        \  }}|S t	          ||	|
|¦  «        \  }}|S # t
          $ r Y d S w xY w)NÚaten)rð   rÏ   rà   râ   rÉ   rE   )rÏ   rù   rã   rß   ræ   rú   rè   rØ   rq   r�   rž   rÅ   rX   rÇ   s                 r<   Ú
gen_c_shimrý   )  sß   € õ /ØÐ  ,°ÐASñô €Mð Ð Ð!9ØˆtàŒY€FØ#Ð+ˆVˆV°×1CÒ1CÑ1EÔ1E€FÝ3ØØñô €Lð
Øð 		Ý;Ø˜ ¨lñô ‰NˆK˜ð Ðå:Ø˜ ¨lñô ‰MˆAˆzð Ðøåð ð ð Øˆtˆtðøøøs   Á
A: Á#A: Á:
BÂBT)Úfrozenc                  ód   — e Zd ZU ded<   ded<   ded<   ded<   d	ed
<   d	ed<   edd„¦   «         ZdS )ÚShimGeneratorú6dict[str, dict[str, str | dict[str, list[str] | str]]]r   rä   rã   rå   rß   rç   ræ   r#   rú   rè   rÏ   r   r*   r“   c           	     ó–   — | j         t          |¦  «                 }t          ||| j        | j        | j        | j        | j        ¦  «        }|S r¦   )r   rø   rý   rã   rß   ræ   rú   rè   )ÚselfrÏ   rù   Úresults       r<   Ú__call__zShimGenerator.__call__X  sS   € ð
 Ô1Õ2FÀtÑ2LÔ2LÔMˆÝØØØÔ#ØÔØÔ ØŒKØÔ#ñ
ô 
ˆð ˆr>   N)rÏ   r   r*   r“   )Ú__name__Ú
__module__Ú__qualname__Ú__annotations__r   r  r9   r>   r<   r   r   O  sz   € € € € € € àQÐQÐQÑQØ@Ð@Ð@Ñ@Ø$Ð$Ð$Ñ$Ø4Ð4Ð4Ñ4Ø€L€L�LØÐÐÑà ðð ð ñ !Ô ðð ð r>   r   Únative_functionsúSequence[NativeFunction]r   r  Úincludesc                óâ  — d                      t          t          t          ||||||¦  «        | ¦  «        ¦  «        ¦  «        }|€dn|                     ¦   «         }	|€dndt          |¦  «        › d�}
|€dnd}d}|r2||z   t          j        d	¦  «        z   |z   t          j        d
¦  «        z   S ||z   t          j        d|rdnd› d|	› d|
› d�¦  «        z   |z   t          j        d¦  «        z   |z   S )Nr¤   rü   z#include <ATen/Functions.h>z#include <ATen/zFunctions.h>z[

// This file corresponds to the aten_shimified_ops list in torchgen/aoti/fallback_ops.py
r%   zÌ

// WARNING: THIS FILE IS AUTOGENERATED BY torchgen. DO NOT MODIFY BY HAND.
// See https://github.com/pytorch/pytorch/blob/7e86a7c0155295539996e0cf422883571126073e/torchgen/gen.py#L2424-L2436 for detailsz´

            #pragma once

            #include <torch/csrc/inductor/aoti_torch/c/shim.h>

            #ifdef __cplusplus
            extern "C" {
            #endif

            z\

            #ifdef __cplusplus
            } // extern "C"
            #endif
            zA

            #include <torch/csrc/inductor/aoti_torch/generated/zextend/Úc_shim_z{.h>
            #include <torch/csrc/inductor/aoti_torch/utils.h>

            #ifndef AT_PER_OPERATOR_HEADERS
            zï
            #include <ATen/CompositeExplicitAutogradFunctions.h>
            #include <ATen/CompositeExplicitAutogradNonFunctionalFunctions.h>
            #include <ATen/CompositeImplicitAutogradFunctions.h>
            #else
            zn
            #endif // AT_PER_OPERATOR_HEADERS

            using namespace torch::aot_inductor;

            )r·   r­   r   r   rà   r(   rµ   r¶   )r
  r   rã   rß   ræ   rú   rè   r  Úbodyr�   Úinclude_device_functionsÚaten_warningÚwarnings                r<   Úgen_aoti_c_shimr  j  s©  € ð �9Š9ÝÝÝØ)Ø&Ø Ø#ØØ&ñô ð !ñ
ô 
ñ	
ô 	
ñô €Dð $Ð+ˆVˆV°×1CÒ1CÑ1EÔ1E€Fð Ðð 	&Ð%à>�s <Ñ0Ô0Ð>Ð>Ð>ð ð Ðð mÐlð ð ðC€Gð
 ð /
àØñåŒoð 
ñ 
ô 
ñð ñõ Œoð ñ ô ñð	
ð0 ØñåŒoð àM_Ð@gÀ	À	Ðegðð àpvðð ð &ðð ð ñ ô ñð ñõ Œoð ñ ô ñð* ñ+ð	
r>   Úaoti_fmr   Úaoti_backendsúset[DispatchKey | None]Ústructured_native_functionsúSequence[NativeFunctionsGroup]Úextra_cuda_headersÚupdate_aoti_c_shimÚNonec                óž  ‡‡‡‡‡‡‡‡‡— i Š|D ],}|                      ¦   «         D ]}	|	j        �|‰|	j        <    nŒŒ-|D �]Š‰€t          nt          Ši }
|D ]}	t	          |	¦  «        }|‰v r|	|
|<   Œt          d„ t          |
                     ¦   «         ¦  «        D ¦   «         ¦  «        Š‰€dn‰                     ¦   «         }d|› d�}t          ‰‰‰‰‰d‰d¬¦  «        Š|r|  
                    |ˆfd„¦  «         �n	 t          t          j                             | j        |¦  «        ¦  «        5 }|                     ¦   «         }|‰k    rcd	                     t#          j        |                     ¦   «         ‰                     ¦   «         d
dd¬¦  «        ¦  «        }t)          d|› d�¦  «        ‚	 d d d ¦  «         n# 1 swxY w Y   nE# t*          $ r8 t-          t          j                             | j        |¦  «        › d�¦  «         Y nw xY wdˆˆˆˆˆfd„Š‰�t/          ‰¦  «        r|ndŠ|  
                    d|› d�ˆˆˆˆˆˆˆˆfd„¦  «         �Œd S )Nc              3  ó    K  — | ]	\  }}|V — Œ
d S r¦   r9   )r:   rX   Úvalues      r<   r©   z(gen_aoti_c_shim_files.<locals>.<genexpr>â  s7   è è € ð *
ð *
Ù�a˜ˆEð*
ð *
ð *
ð *
ð *
ð *
r>   rü   r  z.hTr%   ©rú   rè   r  c                 ó   •— ‰ S r¦   r9   )Ú
new_headers   €r<   ú<lambda>z'gen_aoti_c_shim_files.<locals>.<lambda>ø  s   ø€ ˜
€ r>   r¤   ÚexpectedÚactual)ÚfromfileÚtofileÚlinetermaV  
The generated AOTInductor C shim header files have unexpectedly changed. This
indicates an AOTInductor fallback operator ABI backward compatibility breakage!!!
Only in a limited number of situations, this is allowed:

1. You added a fallback op to the inductor_fallback_ops list in torchgen/aoti/fallback_ops.py.
If that's the case, run `python torchgen/gen.py --update-aoti-c-shim` to add a new entry to
existing C shim header files.

2. You added a new default argument to an existing fallback op. This is clearly a BC breaking
change in the AOTInductor land. You need to annotate the new default argument in
torchgen/aoti/fallback_ops.py, and then run `python torchgen/gen.py --update-aoti-c-shim` to
update the C shim header files by creating different versions of the fallback op. See
https://github.com/pytorch/pytorch/pull/154848 as an example.

z
                    z
 not foundr*   r(   c                 óÆ   •— g } ‰D ]-}t          |‰‰‰‰¬¦  «        }|�|                      |¦  «         Œ.d                     t          t	          | ¦  «        ¦  «        ¦  «        S )N)rè   r¤   )ró   rJ   r·   rª   r®   )ÚheadersrÏ   rú   ræ   rß   rè   Úfallback_native_functionsÚstructured_func_group_dicts      €€€€€r<   Úheaders_for_aotiz/gen_aoti_c_shim_files.<locals>.headers_for_aoti#  su   ø€ ØˆGØ1ð 	+ð 	+�Ý,ØØ.Ø Ø#Ø'9ðñ ô �ð Ð%Ø—N’N 6Ñ*Ô*Ð*øØ—9’9�V¥C¨¡L¤LÑ1Ô1Ñ2Ô2Ð2r>   z.cppc                 óN   •— t          ‰‰‰‰‰ d‰ ‰¦   «         dz   ‰z   ¬¦  «        S )NFr¤   r  )r  )ræ   rß   rè   Úextra_headersr*  Úfallback_ops_dictr,  r+  s   €€€€€€€€r<   r"  z'gen_aoti_c_shim_files.<locals>.<lambda>9  sA   ø€ •OØ)Ø!Ø*ØØØØ#5Ø)Ð)Ñ+Ô+¨dÑ2°]ÑBð	ñ 	ô 	€ r>   )r*   r(   )Ú	functionsrë   r   r   rø   Útuplerª   r«   rà   r  ÚwriteÚopenÚosÚpathr·   Úinstall_dirÚreadÚdifflibÚunified_diffÚ
splitlinesÚRuntimeErrorÚFileNotFoundErrorÚprintr   )r  r  r
  ræ   r  r  rè   r  Ú
func_grouprÏ   Ú	fallbacksÚop_nameÚdevice_nameÚheader_file_nameÚold_fileÚ
old_headerÚdiffrß   r.  r*  r/  r,  r!  r+  s      `  `          @@@@@@@r<   Úgen_aoti_c_shim_filesrF  Ç  sÉ  øøøøøøøøø€ ð "$ÐØ1ð ð ˆ
Ø×(Ò(Ñ*Ô*ð 	ð 	ˆDØÔ'Ð3ØGQÐ*¨4Ô+CÑDØ�ð 4øð &ð k
ñ k
ˆð #/Ð"6ÕÐÕ<Qð 	ð ˆ	Ø$ð 	*ð 	*ˆDÝ*¨4Ñ0Ô0ˆGØÐ+Ð+Ð+Ø%)�	˜'Ñ"øÝ$)ð *
ð *
Ý"(¨¯ªÑ):Ô):Ñ";Ô";ð*
ñ *
ô *
ñ %
ô %
Ð!ð
 !-Ð 4�f�f¸,×:LÒ:LÑ:NÔ:Nˆð 5 [Ð4Ð4Ð4ÐÝ$Ø%ØØ&ØØØØ1Øð	
ñ 	
ô 	
ˆ
ð ð +	Ø�MŠMØ Ø"Ð"Ð"Ð"ñô ð ñ ð
%ÝÝ”G—L’L Ô!4Ð6FÑGÔGñô ð  àØ!)§¢¡¤�Jà! ZÒ/Ð/Ø#ŸyšyÝ#Ô0Ø *× 5Ò 5Ñ 7Ô 7Ø *× 5Ò 5Ñ 7Ô 7Ø)3Ø'/Ø)+ðñ ô ñ ô  ˜õ +ð ,ð ð,ð ,ð ,ñ ô ð ð 0ð ð  ð  ñ  ô  ð  ð  ð  ð  ð  ð  øøøð  ð  ð  ð  øøõB %ð ð ð ÝÝ”w—|’| GÔ$7Ð9IÑJÔJÐVÐVÐVñô ð ð ð ðøøøð	3ð 	3ð 	3ð 	3ð 	3ð 	3ð 	3ð 	3ð 	3ð 	3ð  Ð'Õ,@ÀÑ,NÔ,NÐ'ð Ðàð 	ð 	�ŠØ'�kÐ'Ð'Ð'ð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ñ	
ô 	
ð 	
ñ 	
ðk
ð k
s7   Ã:2GÄ,A>F7Æ+GÆ7F;	Æ;GÆ>F;	Æ?GÇ?HÈH)F)r&   r   r'   r(   r)   r#   r*   r+   )rZ   r[   rP   r[   r*   r[   )ra   rb   rc   rd   r*   re   )rq   r   r*   re   )r�   r�   r‘   r’   r*   r“   )
rq   r   r�   r(   rž   r(   r�   r�   r*   rŸ   )rÊ   r   r*   r	   r¦   )rÊ   r   rØ   rÙ   r*   r(   )rÏ   r   rã   rä   rß   rå   ræ   rç   rè   r#   r*   rÙ   )rÏ   r   rã   rä   rß   rå   ræ   rç   rè   r#   r*   r“   )rÏ   r   r*   r(   )rÏ   r   rù   r�   rã   rä   rß   rå   ræ   rç   rú   r#   rè   r#   r*   r“   )r%   )r
  r  r   r  rã   rä   rß   rå   ræ   rç   rú   r#   rè   r#   r  r(   r*   r(   )r  r   r  r  r
  r  ræ   rç   r  r  r  r(   rè   r#   r  r#   r*   r  )JÚ
__future__r   r8  r4  Úrerµ   Údataclassesr   Útypingr   Útorchgen.aoti.fallback_opsr   r   Útorchgen.api.typesr   Útorchgen.api.types.signaturesr	   r
   Útorchgen.contextr   Útorchgen.modelr   r   r   r   r   r   r   r   r   r   r   r   r   r   Útorchgen.utilsr   r   Úcollections.abcr   rA   r#   r’   rv   rw   Úfloatr(   ÚDeviceIndexÚLayoutÚMemoryFormatÚ
ScalarTypeÚ	Generatorr@   rC   rB   rG   r`   rp   r�   rŽ   r	  Úcompiler™   rœ   rÉ   r×   râ   rð   ró   rø   rý   r   r  rF  r9   r>   r<   ú<module>rY     sœ  ðØ "Ð "Ð "Ð "Ð "Ð "Ð "à €€€Ø 	€	€	€	Ø 	€	€	€	Ø €€€Ø !Ð !Ð !Ð !Ð !Ð !Ø  Ð  Ð  Ð  Ð  Ð  à PÐ PÐ PÐ PÐ PÐ PÐ PÐ PØ 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø IÐ IÐ IÐ IÐ IÐ IÐ IÐ IØ 8Ð 8Ð 8Ð 8Ð 8Ð 8ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð  1Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0ð ð )Ø(Ð(Ð(Ð(Ð(Ð(ð „MÐ%Ø
„K�Ø
„J�	Ø
„M�9Ø
„M�8Ø
„L�(Ø
„J�Ø
Ô˜	Ø
„M�9Ø
Ô˜Ø
Ô�yØ
ÔÐ+ðÐ ð  „M�<Ø
„K�Ø
„J�	Ø
„M�=Ø
„M�=Ø
„L�(Ø
„JÐ$Ø
ÔÐ*Ø
„M�=Ø
ÔÐ,Ø
ÔÐ(Ø
Ô�oðÐ ð  „MÐ2Ø
„K�Ø
„J�Ø
„M�2Ø
„M�2Ø
„L�"Ø
„J�Ø
ÔÐ7Ø
„MÐ-Ø
ÔÐ9Ø
ÔÐ5Ø
ÔÐ>ðÐ ð( ðuKð uKð uKð uKð uKðpAð Að Að Að
?ð ?ð ?ð ?ð>4;ð 4;ð 4;ð 4;ðp MOÐ Ð NÐ NÐ NÑ Nð $˜œÐ$BÑCÔCÐ ðð ð ð ð:nKð nKð nKð nKðbð ð ð ð  *.ðMð Mð Mð Mð Mð6'ð 'ð 'ð 'ðTcð cð cð cð$ð ð ð ð#ð #ð #ð #ðL €�$ÐÑÔðð ð ð ð ñ ô ñ ÔððD ðZ
ð Z
ð Z
ð Z
ð Z
ðz|
ð |
ð |
ð |
ð |
ð |
r>   