§
    �Štjt  ã                  ó.  — d dl mZ d dlZd dlmZ d dlmZ d dlmZ d dl	m
c mZ d dlmZmZmZmZ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 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(m)Z)m*Z*m+Z+ d-d„Z,d.d„Z-d/d„Z.d.d„Z/d0d„Z0 ed¬¦  «         G d„ de¦  «        ¦   «         Z1 ed¬¦  «         G d „ d!e1¦  «        ¦   «         Z2 ed¬¦  «         G d"„ d#¦  «        ¦   «         Z3 G d$„ d%¦  «        Z4 ed¬¦  «         G d&„ d'¦  «        ¦   «         Z5d1d,„Z6dS )2é    )ÚannotationsN)ÚABC)Ú	dataclass)ÚAny)Ú	getValueTÚisValueTypeÚLazyArgumentÚLazyIrPropertiesÚLazyIrSchemaÚtensorListValueT)Ú	translate)Ú	BaseCTypeÚBindingÚdeviceTÚDispatcherSignatureÚkernel_signatureÚNativeSignatureÚOptionalCTypeÚVectorCType)Úmethod_with_native_function)Úts_lowering_body)	ÚArgumentÚBackendIndexÚBackendMetadataÚBaseTyÚBaseTypeÚFunctionSchemaÚListTypeÚNativeFunctionÚNativeFunctionsGroupÚargr	   ÚreturnÚstrc                ój  — t          | j        ¦  «        rÕt          | j        t          ¦  «        rL| j        r
d| j        › �S | j        j        t          u rd| j        › d�S | j        rd| j        › d�S d| j        › d�S t          | j        t          ¦  «        r=| j        r| j        › d| j        › d�S | j        r
d| j        › �S d| j        › d	| j        › d
�S t          d| j        › d�¦  «        ‚t          | j        t          ¦  «        rL| j        j        t          t          j        ¦  «        k    r%| j        rd| j        › d�S d| j        › d| j        › d�S t          | j        t$          ¦  «        rDt          | j        j        t          ¦  «        r%d| j        j        j        › d| j        › d| j        › d�S t          | j        t          ¦  «        ret          | j        j        t$          ¦  «        rFt          | j        j        j        t          ¦  «        r"d| j        j        j        j        › d| j        › d�S | j        › S )z�
    Given a LazyArgument,
    generate a c++ string for materializing an rvalue of that arg for passing into
    a lazy Node constructor.
    Únode_Úlazy_Ú_tensorlistzGetSymIntValue(ú)z->GetIrValue()z& ? std::make_optional(GetSymIntValue(*z)) : ::std::nulloptz ? std::make_optional(lazy_z ->GetIrValue()) : ::std::nulloptú=TODO not sure if there are other valid types to handle here (zGetSymIntArrayRefValue(zstd::vector<int64_t>(z
.begin(), z.end())ústd::vector<ú>(ztorch::lazy::ToOptionalVector<)r   Ú	lazy_typeÚ
isinstancer   Úis_wrapped_scalarÚnameÚtyper   Úis_symint_or_listr   ÚAssertionErrorÚ	orig_typer   Úelemr   r   ÚSymIntÚsymintr   )r!   s    úS/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/torchgen/dest/lazy_ir.pyÚnode_ctor_arg_rvalue_stringr8   +   s—  € õ �3”=Ñ!Ô!ð 0!Ý�c”m¥YÑ/Ô/ð 	ØÔ$ð 5Ø)˜sœxÐ)Ð)Ð)Ø”Ô#Õ'7Ð7Ð7Ø4˜sœxÐ4Ð4Ð4Ð4ØÔ&ð 5Ø4¨¬Ð4Ð4Ð4Ð4Ø3˜3œ8Ð3Ð3Ð3Ð3Ý˜œ¥}Ñ5Ô5ð 	ØÔ$ð *ð œ(ÐgÐgÈ#Ì(ÐgÐgÐgÐgØÔ&ð *Ø)˜sœxÐ)Ð)Ð)ð!˜œð !ð !Ø+.¬8ð!ð !ð !ðõ !Ø`ÐPSÔP]Ð`Ð`Ð`ñô ð õ �c”m¥XÑ.Ô.ð 	!°3´=Ô3EÍÝŒMñJ
ô J
ò 4
ð 4
ð Œzð UØ<°´Ð<Ð<Ð<Ð<àT¨s¬xÐTÐTÀ3Ä8ÐTÐTÐTÐTÝ˜œ¥{Ñ3Ô3ð 	!½
ØŒMÔ¥	ñ9
ô 9
ð 	!ð c #¤-Ô"4Ô"9ÐbÐb¸S¼XÐbÐbÐQTÔQYÐbÐbÐbÐbå�s”}¥mÑ4Ô4ð	!å˜3œ=Ô-­{Ñ;Ô;ð	!õ ˜3œ=Ô-Ô2µIÑ>Ô>ð	!ð
 `°C´MÔ4FÔ4KÔ4PÐ_Ð_ÐTWÔT\Ð_Ð_Ð_Ð_à”h�=Ð ó    Úschemar   c                óh   — d„ |                       ¦   «         D ¦   «         }d                     |¦  «        S )zg
    Produce a formatted string with the arguments as passed into the constructor of a node class.
    c                ó,   — g | ]}t          |¦  «        ‘ŒS © )r8   ©Ú.0r!   s     r7   ú
<listcomp>z$node_ctor_inputs.<locals>.<listcomp>j   s.   € ð ð ð Ø-0Õ# CÑ(Ô(ðð ð r9   ú, )Úfiltered_argsÚjoin)r:   Únode_ctor_valuess     r7   Únode_ctor_inputsrE   f   sB   € ðð Ø4:×4HÒ4HÑ4JÔ4Jðñ ô Ðð �9Š9Ð%Ñ&Ô&Ð&r9   Úsigú%DispatcherSignature | NativeSignatureÚoverload_namec                ó^  — t          j        | j        ¦  «        }t          |                     ¦   «         |                     ¦   «         ¦  «        }d                     d„ |D ¦   «         ¦  «        }t          |¦  «        rd| j        › d|› d�}nd| j        › d�}dt          | ¦  «        › d|› d	|› d
�S )zK
    Generate code that falls back to eager conditioned on a predicate
    z,
                c                ó   — g | ]	}|j         ‘Œ
S r=   ©Úexpr©r?   Úas     r7   r@   z%gen_fallback_code.<locals>.<listcomp>z   s   € Ð/FÐ/FÐ/F¸1°´Ð/FÐ/FÐ/Fr9   z	ATEN_OP2(rA   r(   zATEN_OP(z"
        if (force_eager_fallback(zQ)) {
            return at::native::call_fallback_fn_symint<&ltc_eager_fallback, z>::call(
                z
            );
        }
)	r   Úfrom_schemaÚfuncr   Ú	argumentsrC   ÚlenÚ	aten_nameÚaten_symbol)r:   rF   rH   Údispatcher_sigÚexprsÚfallback_argsÚaten_op_strs          r7   Úgen_fallback_coderY   p   sÛ   € õ )Ô4°V´[ÑAÔA€NÝ�c—m’m‘o”o ~×'?Ò'?Ñ'AÔ'AÑBÔB€EØ)×.Ò.Ð/FÐ/FÀÐ/FÑ/FÔ/FÑGÔG€MÝ
ˆ=ÑÔð 5ØF &Ô"2ÐFÐF°mÐFÐFÐFˆˆà4 Ô!1Ð4Ð4Ð4ˆðÝ"-¨fÑ"5Ô"5ðð àMXðð ð ðð ð ð r9   c                ó†   — dh}| j         |v rd| j         › d�S | j                              d¦  «        s
d| j         › �S | j         S )NÚsigmoid_backwardz#c10::Symbol::fromQualString("aten::z")zat::z
at::aten::)rS   Ú
startswith)r:   Úmissing_interned_stringss     r7   rT   rT   ˆ   se   € àð Ðð ÔÐ3Ð3Ð3ØI°VÔ5EÐIÐIÐIÐIàÔ×&Ò& vÑ.Ô.ð  Ø.˜FÔ,Ð.Ð.Ð.àÔÐr9   r   útuple[str, list[Binding]]c                ó¬  — g }g }|                       ¦   «         D ]£}t          |j        t          ¦  «        rr|j        j                             ¦   «         rT|j        › d�}|                     d|› d|j        › d�¦  «         |                     |                     |¦  «        ¦  «         ŒŽ|                     |¦  «         Œ¤d 	                    |¦  «        }||fS )NÚ_metazauto z = to_meta(ú);ú	
        )
rQ   r-   Úargumentr   r0   Úis_tensor_liker/   ÚappendÚ	with_namerC   )rF   ÚcontextÚunwrapped_tensor_argsr!   Úunwrapped_nameÚunwrap_tensor_args_strs         r7   Úconvert_to_meta_tensorsrk   ˜   sè   € Ø€GØ')ÐØ�}Š}‰Œð  ð  ˆÝ�c”l¥HÑ-Ô-ð 	 °#´,Ô2C×2RÒ2RÑ2TÔ2Tð 	 Ø #¤Ð/Ð/Ð/ˆNØ!×(Ò(Ø?˜Ð?Ð?°3´8Ð?Ð?Ð?ñô ð ð �NŠN˜3Ÿ=š=¨Ñ8Ô8Ñ9Ô9Ð9Ð9à�NŠN˜3ÑÔÐÐØ)×.Ò.Ð/DÑEÔEÐØ! 7Ð*Ð*r9   T)Úfrozenc                  óx   — e Zd ZU ded<   ded<   ded<   ded<   edd„¦   «         Zdd„Zdd„Zdd„Zdd„Z	dd„Z
dS )Ú	GenLazyIRr   Úbackend_indexr#   Úbackend_nameÚ	node_baseÚboolÚuse_lazy_shapeÚfú%NativeFunctionsGroup | NativeFunctionr"   ú	list[str]c                ó6  — t          |t          ¦  «        r|j        j        n|j        }| j                             t          |t          ¦  «        r|j        n|¦  «        }t          ||d uo|                     ¦   «         ¬¦  «        }|                      |¦  «        S )N©r6   )	r-   r    Ú
functionalrP   ro   Ú
get_kernelr   Úsupports_symintÚgen)Úselfrt   rP   Úmetadatar:   s        r7   Ú__call__zGenLazyIR.__call__¯   s™   € å$.¨qÕ2FÑ$GÔ$GÐSˆqŒ|Ô Ð ÈQÌVˆØÔ%×0Ò0Ý& qÕ*>Ñ?Ô?ÐFˆAŒLˆLÀQñ
ô 
ˆõ Ø˜¨Ð-ÐL°(×2JÒ2JÑ2LÔ2Lð
ñ 
ô 
ˆð �xŠx˜ÑÔÐr9   r:   r   c                ó   — dS ©NÚ r=   )r}   r:   s     r7   Úlowering_functionzGenLazyIR.lowering_function¼   ó   € Øˆrr9   Únode_ctor_argsc                ó   — dS r�   r=   ©r}   r:   r…   s      r7   Úcreate_functionzGenLazyIR.create_function¿   r„   r9   c                ó   — d|› d�S )Núbool CanBeReused(z!) const {
    return false;
    }r=   r‡   s      r7   Úcan_be_reused_functionz GenLazyIR.can_be_reused_functionÂ   s   € ð
 ^ð 
ð 
ð 
ð 	
r9   c                ó  — |                      dd¬¦  «        }g }|D ]Ž}t          |j        t          t          f¦  «        r|                     |j        › ¦  «         Œ?t          |j        t          ¦  «        r|                     |j        › d�¦  «         Œwt          d|j        › d�¦  «        ‚d 	                    |¦  «        }|                      dd¬¦  «        }|j
        j        rd}nÎ|j
        j        rMd	„ |D ¦   «         }|                     d
„ |D ¦   «         ¦  «         d|j        › dd 	                    |¦  «        › d�}nu|j
        j        rgd„ t          t!          |¦  «        ¦  «        D ¦   «         }|                     d„ |D ¦   «         ¦  «         d|j        › dd 	                    |¦  «        › d�}nd}d 	                    d„ |D ¦   «         ¦  «        }	| j        › d|j        › d|› d|› dt!          |j        ¦  «        › d|	› d�S )NTF©ÚvaluesÚscalarsú.value_or(kNullValue)zUnsupported type (z) - add support if necessaryrA   zstd::move(shapes),c                ó   — g | ]	}|j         ‘Œ
S r=   ©r/   rM   s     r7   r@   z1GenLazyIR.node_base_ctor_call.<locals>.<listcomp>Þ   s   € Ð5Ð5Ð5 Q˜!œ&Ð5Ð5Ð5r9   c              3  ó$   K  — | ]}|j         V — Œd S ©Nr’   rM   s     r7   ú	<genexpr>z0GenLazyIR.node_base_ctor_call.<locals>.<genexpr>ß   ó$   è è € Ð:Ð:¨˜aœfÐ:Ð:Ð:Ð:Ð:Ð:r9   Úcompute_shape_ú(z),c                ó   — g | ]}d |› d�‘Œ	S )zoperand(r(   r=   ©r?   Úis     r7   r@   z1GenLazyIR.node_base_ctor_call.<locals>.<listcomp>â   s    € ÐJÐJÐJ¨a˜/ Q˜/˜/˜/ÐJÐJÐJr9   c              3  ó$   K  — | ]}|j         V — Œd S r”   r’   rM   s     r7   r•   z0GenLazyIR.node_base_ctor_call.<locals>.<genexpr>ã   r–   r9   z[&](){ return compute_shape_z)[0]; },r‚   c              3  ó&   K  — | ]}|j         › V — Œd S r”   r’   rM   s     r7   r•   z0GenLazyIR.node_base_ctor_call.<locals>.<genexpr>è   s&   è è € Ð!CÐ!C°! Q¤V +Ð!CÐ!CÐ!CÐ!CÐ!CÐ!Cr9   z(
              z&::ClassOpKind(),
              OpList{z},
              z!
              /* num_outputs */ z#,
              torch::lazy::MHash(ú)))rB   r-   r,   r   r   re   r/   r   r2   rC   Ú
propertiesÚShapePrecomputeÚShapeComputeÚextendÚ
ShapeCacheÚrangerR   rq   Ú	node_nameÚreturns)
r}   r:   Ú
value_argsÚbase_ctor_value_args_listr!   Úbase_ctor_value_argsÚscalar_argsÚshape_ctor_argÚ
shape_argsÚscalar_hashess
             r7   Únode_base_ctor_callzGenLazyIR.node_base_ctor_callÇ   sz  € Ø×)Ò)°¸uÐ)ÑEÔEˆ
ð %'Ð!Øð 	ð 	ˆCÝ˜#œ-­)µ[Ð)AÑBÔBð Ø)×0Ò0°C´H°Ñ?Ô?Ð?Ð?Ý˜CœM­=Ñ9Ô9ð Ø)×0Ò0°C´HÐ1SÐ1SÐ1SÑTÔTÐTÐTå$ØT¨¬ÐTÐTÐTñô ð ð  $ŸyšyÐ)BÑCÔCÐà×*Ò*°%ÀÐ*ÑFÔFˆð ÔÔ,ð 	 Ø1ˆNˆNØÔÔ+ð 		 Ø5Ð5¨*Ð5Ñ5Ô5ˆJØ×ÒÐ:Ð:¨kÐ:Ñ:Ô:Ñ:Ô:Ð:ØU¨f¬kÐUÐU¸D¿IºIÀjÑ<QÔ<QÐUÐUÐUˆNˆNØÔÔ)ð 	 ØJÐJµ5½¸Z¹¼Ñ3IÔ3IÐJÑJÔJˆJØ×ÒÐ:Ð:¨kÐ:Ñ:Ô:Ñ:Ô:Ð:Øk¸V¼[ÐkÐkÈ4Ï9Ê9ÐU_ÑK`ÔK`ÐkÐkÐkˆNˆNàˆNàŸ	š	Ð!CÐ!C°{Ð!CÑ!CÔ!CÑCÔCˆà”Nð 6ð 6ØÔð6ð 6à+ð6ð 6ð ð6ð 6õ "% V¤^Ñ!4Ô!4ð	6ð 6ð
 #0ð6ð 6ð 6ð 	6r9   c                ó  — |j         pt          |¦  «        }|                     ¦   «         }|                     dd¬¦  «        }d„ |D ¦   «         }d                     |¦  «        }| j        r!|j        j        r|                     d¦  «         d                     |¦  «        }d                     d„ |D ¦   «         ¦  «        }t          |¦  «        rd|› �}d	                     d
„ |D ¦   «         ¦  «        }	d„ |                     dd¬¦  «        D ¦   «         }
d	                     d„ |
D ¦   «         ¦  «        }d                     d„ |
D ¦   «         ¦  «        }g }|D ]‡}t          |j
        t          ¦  «        rE|j        › d�}|j        rd}|                     d|j        › d|j        › d|› d|j        › d�	¦  «         Œa|                     d|j        › d|j        › d�¦  «         Œˆd                     |¦  «        }d|j        › d| j        › d|› d|j        › d|› d|                      |¦  «        › |› d|› d| j        › d |› d!|                      ||¦  «        › d"|                      ||¦  «        › d"|                      |¦  «        › d"|	› d	|› d#�gS )$NFTr�   c                óV   — g | ]&}d |j                              ¦   «         › d|j        › �‘Œ'S )zconst z& ©r,   Úcpp_typer/   rš   s     r7   r@   z!GenLazyIR.gen.<locals>.<listcomp>ù   s9   € ÐSÐSÐSÀQÐ@˜aœk×2Ò2Ñ4Ô4Ð@Ð@¸¼Ð@Ð@ÐSÐSÐSr9   rA   z(std::vector<torch::lazy::Shape>&& shapesz
,
        c                ó    — g | ]K}|j                              ¦   «         d k    r|j        › d|j        › d|j        › d�n|j        › d|j        › d�‘ŒLS )ú!::std::optional<c10::string_view>r˜   z1.has_value() ? ::std::make_optional(std::string(*z)) : ::std::nullopt)r(   r±   rM   s     r7   r@   z!GenLazyIR.gen.<locals>.<listcomp>   s‚   € ð ð ð ð
 ð ”;×'Ò'Ñ)Ô)Ð-PÒPÐPð ”6ÐqÐq˜AœFÐqÐqÐUVÔU[ÐqÐqÐqÐqàœÐ*Ð* ¤Ð*Ð*Ð*ð	ð ð r9   z
  c                óö   — g | ]v}|j                              ¦   «         d k    rd|j        › d�nK|j                              ¦   «         dk    rd|j        › d�n#|j                              ¦   «         › d|j        › d�‘ŒwS )zc10::string_viewzstd::string ú;r´   z::std::optional<std::string> ú r±   rM   s     r7   r@   z!GenLazyIR.gen.<locals>.<listcomp>  s«   € ð ð ð ð ð	 ”;×'Ò'Ñ)Ô)Ð-?Ò?Ð?ð )˜qœvÐ(Ð(Ð(Ð(ð ”;×'Ò'Ñ)Ô)Ð-PÒPÐPð ?°Q´VÐ>Ð>Ð>Ð>àœ×,Ò,Ñ.Ô.Ð:Ð:°´Ð:Ð:Ð:ðð ð r9   c                óP   — g | ]#}t          |j        t          ¦  «        ¯|j        ‘Œ$S r=   )r-   r,   r   r/   r>   s     r7   r@   z!GenLazyIR.gen.<locals>.<listcomp>  s<   € ð 
ð 
ð 
àÝ˜#œ-­Ñ7Ô7ð
ØŒHð
ð 
ð 
r9   c                ó   — g | ]}d |› d�‘Œ	S )z	bool has_z: 1;r=   ©r?   Úvalues     r7   r@   z!GenLazyIR.gen.<locals>.<listcomp>  s$   € ÐBÐBÐB¨Ð$˜Ð$Ð$Ð$ÐBÐBÐBr9   z
    c                ó    — g | ]}d |› d|› d�‘ŒS )Úhas_z = !!r¶   r=   rº   s     r7   r@   z!GenLazyIR.gen.<locals>.<listcomp>  s,   € ÐFÐFÐF¨UÐ(�EÐ(Ð( Ð(Ð(Ð(ÐFÐFÐFr9   z.value()z"torch.Generator()"zif (z.has_value()) {
      ss << ", z=" << z;
    } else {
      ss << ", z=null";
    }z	ss << ", r¶   zclass z
 : public zX {
 public:
  static torch::lazy::OpKind ClassOpKind() {
    return torch::lazy::OpKind(z
);
  }

  r˜   z
)
      : z	
  {
    zT
  }

  std::string ToString() const override {
    std::stringstream ss;
    ss << z::ToString();
    z(
    return std::move(ss).str();
  }

  z

  z

};

)ÚopkindrT   rB   rC   rs   rŸ   r    re   rR   r-   r,   r   r/   Úis_generatorr¥   rq   r®   rˆ   r‹   rƒ   )r}   r:   r¾   Úall_argsrª   Ú	ctor_argsÚreuse_ctor_argsr…   Úscalar_initializersÚscalar_declsÚoptional_valuesÚhas_optional_declsÚhas_optional_defsÚmembers_to_stringr!   r»   Úmembers_to_string_strs                    r7   r|   zGenLazyIR.genñ   sÒ  € Ø”Ð5¥+¨fÑ"5Ô"5ˆð ×'Ò'Ñ)Ô)ˆØ×*Ò*°%ÀÐ*ÑFÔFˆàSÐSÈ(ÐSÑSÔSˆ	ØŸ)š) IÑ.Ô.ˆØÔð 	I 6Ô#4Ô#Dð 	IØ×ÒÐGÑHÔHÐHØŸš 9Ñ-Ô-ˆà+×0Ò0ðð ð
 %ðñ ô ñ
ô 
Ðõ Ð"Ñ#Ô#ð 	FØ"EÐ0CÐ"EÐ"EÐØ—{’{ðð ð %ðñ ô ñ	
ô 	
ˆð
ð 
à×+Ò+°4ÀÐ+ÑGÔGð
ñ 
ô 
ˆð
 $Ÿ[š[ØBÐB°/ÐBÑBÔBñ
ô 
Ðð %ŸMšMØFÐF°oÐFÑFÔFñ
ô 
Ðð ÐØð 	Rð 	RˆCÝ˜#œ-­Ñ7Ô7ð RØœ8Ð-Ð-Ð-�ØÔ#ð 2Ø1�EØ!×(Ò(ð
˜SœXð 
ð 
Ø”ð
ð 
Ø %ð
ð 
ð ”ð
ð 
ð 
ñô ð ð ð "×(Ò(Ð)P°S´XÐ)PÐ)PÀSÄXÐ)PÐ)PÐ)PÑQÔQÐQÐQØ (§¢Ð.?Ñ @Ô @ÐðØÔðð Ø#'¤>ðð ð !'ð	ð ð 
Ôðð ð %ðð ð 
×	!Ò	! &Ñ	)Ô	)ðð ,?ðð ð ðð ð Œ>ðð ð  ð!ð ð( ×Ò˜ Ñ0Ô0ð)ð ð, ×Ò˜v Ñ7Ô7ð-ð ð0 ×Ò˜&Ñ!Ô!ð1ð ð4 ð5ð ð6 ð7ð ð ð!
ð !	
r9   N)rt   ru   r"   rv   ©r:   r   r"   r#   ©r:   r   r…   r#   r"   r#   )r:   r   r"   rv   )Ú__name__Ú
__module__Ú__qualname__Ú__annotations__r   r   rƒ   rˆ   r‹   r®   r|   r=   r9   r7   rn   rn   ¨   sÍ   € € € € € € àÐÐÑØÐÐÑØ€N€N�NØÐÐÑà ð ð  ð  ñ !Ô ð ðð ð ð ðð ð ð ð
ð 
ð 
ð 
ð
(6ð (6ð (6ð (6ðT`
ð `
ð `
ð `
ð `
ð `
r9   rn   c                  ó&   — e Zd Zd
d„Zdd„Zdd„Zd	S )ÚGenTSLazyIRr:   r   r"   r#   c                ón   — d}|j         j        r|› d�S |j         j        r|› dt          |¦  «        › d�S dS )Nz˜
  torch::lazy::TSOpVector Lower(
      std::shared_ptr<torch::jit::GraphFunction> function,
      torch::lazy::TSLoweringContext* loctx) const overrider¶   z {
    z
  }
            r‚   )rŸ   ÚLowerDeclOnlyÚLowerr   )r}   r:   Ú	signatures      r7   rƒ   zGenTSLazyIR.lowering_functionV  sf   € ð?ˆ	ð
 ÔÔ*ð 	Ø�?�?�?Ð"ØÔÔ$ð 	Ø!ð ð Ý�fÑÔðð ð ð ð
 �2r9   r…   c                óf   — d|› d�}|j         j        r|› d�S |j         j        sdS |› d|j        › d�S )Nzstatic NodePtr Create(r(   r¶   r‚   z {
    return ReuseOrMakeNode<z>(data);
  })rŸ   ÚCreateFnDeclOnlyÚCreateFnr¥   )r}   r:   r…   rÕ   s       r7   rˆ   zGenTSLazyIR.create_functionf  sf   € Ø>¨^Ð>Ð>Ð>ˆ	ØÔÔ-ð 	Ø�?�?�?Ð"ØÔ"Ô+ð 	Ø�2Øð ð Ø"Ô,ðð ð ð 	r9   c                óÊ  — d|› d�}|j         j        r|› d�S |j         j        sdS g }t          j        |j        |j        ¦  «        D ]X}t          |j        t          ¦  «        r| 
                    d|j        › d�¦  «         Œ;| 
                    d|j        › �¦  «         ŒYt          j        |j        |j        ¦  «        D ]ˆ}t          |j        t          ¦  «        rG| 
                    d|j        › d	|j        › d
|j        › d|j        › d|j        › d|j        › d�¦  «         Œc| 
                    d|j        › d|j        › �¦  «         Œ‰d                     |¦  «        }|› d|› d�S )NrŠ   z) constr¶   r‚   znullable_operand(i++) == r�   zoperand(i++) == z	((!this->z&&!z) || (this->z&&z && *(this->z) == *rž   zthis->z == z &&
        z! {
    size_t i = 0;
    return (z);
  })rŸ   ÚCanBeReusedDeclOnlyÚCanBeReusedÚ	itertoolsÚchainÚpositional_valuesÚkeyword_valuesr-   r,   r   re   r/   Úpositional_scalarsÚkeyword_scalarsrC   )r}   r:   r…   rÕ   Úvalue_comparisonr!   Úvalue_comparison_strs          r7   r‹   z"GenTSLazyIR.can_be_reused_functionp  sú  € Ø?¨Ð?Ð?Ð?ˆ	ØÔÔ0ð 	Ø�?�?�?Ð"ØÔ"Ô.ð 	Ø�2ØÐÝ”? 6Ô#;¸VÔ=RÑSÔSð 	Gð 	GˆCÝ˜#œ-­Ñ7Ô7ð GØ ×'Ò'ØO°´ÐOÐOÐOñô ð ð ð !×'Ò'Ð(E¸3¼8Ð(EÐ(EÑFÔFÐFÐFÝ”? 6Ô#<¸fÔ>TÑUÔUð 	Kð 	KˆCÝ˜#œ-­Ñ7Ô7ð KØ ×'Ò'ð B ¤ð  Bð  B¨S¬Xð  Bð  BÀ3Ä8ð  Bð  BÈsÌxð  Bð  BÐehÔemð  Bð  BÐuxÔu}ð  Bð  Bð  Bñô ð ð ð !×'Ò'Ð(I°´Ð(IÐ(I¸s¼xÐ(IÐ(IÑJÔJÐJÐJØ.×3Ò3Ð4DÑEÔEÐàð ð à!ðð ð ð 	r9   NrÊ   rË   )rÌ   rÍ   rÎ   rƒ   rˆ   r‹   r=   r9   r7   rÑ   rÑ   T  sP   € € € € € ðð ð ð ð ð ð ð ðð ð ð ð ð r9   rÑ   c                  ó   — e Zd ZU ded<   ded<   ded<   ded<   ded<   ded	<   ded
<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   d)d„Zd*d„Zd)d„Zd)d„Zd)d „Zd)d!„Z	d+d,d%„Z
d)d&„Zed-d(„¦   «         Zd"S ).ÚGenLazyNativeFuncDefinitionr#   Úclass_method_namer   ro   Útensor_classrr   Úgen_forced_fallback_codeÚbackend_namespaceÚget_tensorlistÚget_tensor_or_wrap_numberÚtry_get_tensorÚmetrics_counterÚcreate_tensorÚcreate_from_first_tensorÚcreate_aten_from_ltc_tensorÚtuple_aten_from_ltc_tensorsÚlazy_tensor_ptrÚget_device_fnrP   r   r:   r   r"   c                óP  — |                      dd¬¦  «        }g }|D �]õ}|j        rpt          |j        t          ¦  «        r/|                     d|j        › d|j        › d|j        › d�¦  «         ŒS|                     d|j        › d|j        › d	�¦  «         Œz|j        rŒ‚t          |j        t          ¦  «        r‰|j        j	        t          u r7|                     d
|j        › d| j        › d| j        › d|j        › d�	¦  «         Œæ|                     | j        › d|j        › d| j        › d| j        › d|j        › d	�
¦  «         �Œ%t          |j        t          ¦  «        r |j        j        t          t!          ¦   «         ¦  «        k    r8t#          dt          t!          ¦   «         ¦  «        › d|j        j        › �¦  «        ‚|                     | j        › d|j        › d| j        › d| j        › d|j        › d�
¦  «         �Œßt#          d|j        › d�¦  «        ‚d                     |¦  «        S )NTFr�   z
auto node_z = z‚ ?
                std::make_optional(torch::lazy::LazyGraphExecutor::Get()->
                    GetIrValueForScalarFromCodegen(*z3, *common_device)):
                ::std::nullopt;zf = torch::lazy::LazyGraphExecutor::Get()->
                            GetIrValueForScalarFromCodegen(z, *common_device);z
auto lazy_z_tensorlist = ú::r˜   ra   z lazy_z"Expected OptionalCType elem to be z, got z.value_or(at::Tensor()));r)   r(   rb   )rB   r.   r-   r,   r   re   r/   r1   r   r0   r   ré   rê   rò   rë   r4   r   r2   rì   rC   )r}   rP   r:   r§   Úlazy_tensor_declsr!   s         r7   rö   z-GenLazyNativeFuncDefinition.lazy_tensor_declsŸ  s8  € Ø×)Ò)°¸uÐ)ÑEÔEˆ
à')ÐØð *	ñ *	ˆCØÔ$ð )Ý˜cœm­]Ñ;Ô;ð Ø%×,Ò,ð# s¤xð #ð #°C´Hð #ð #à58´Xð#ð #ð #ñô ð ð ð &×,Ò,ð[ s¤xð [ð [Ø<?¼Hð[ð [ð [ñô ð ð ð Ô&ð ØÝ˜CœM­9Ñ5Ô5ð Ø”=Ô%Õ)9Ð9Ð9Ø%×,Ò,ðX S¤Xð Xð XØÔ1ðXð XØ59Ô5HðXð XØKNÌ8ðXð Xð Xñô ð ð ð
 &×,Ò,ØÔ/ð sð s°s´xð sð sØÔ1ðsð sØ59Ô5Sðsð sØVYÔV^ðsð sð sñô ð ñ õ ˜CœM­=Ñ9Ô9ð Ø”=Ô%­µ9±;´;Ñ)?Ô)?Ò?Ð?Ý(ð4½YÅyÁ{Ä{Ñ=SÔ=Sð 4ð 4Ø"œ}Ô1ð4ð 4ñô ð ð "×(Ò(ØÔ+ð kð k°3´8ð kð kØÔ-ðkð kØ15Ô1Dðkð kØGJÄxðkð kð kñô ð ñ õ
 %ØdÐTWÔTaÐdÐdÐdñô ð ð ×"Ò"Ð#4Ñ5Ô5Ð5r9   r~   r   rF   rG   c                óV   — | j         r!t          |||j        j        j        ¬¦  «        S dS )N)rH   r‚   )rè   rY   rP   r/   rH   )r}   rP   r:   r~   rF   s        r7   Úforce_eager_fallbackz0GenLazyNativeFuncDefinition.force_eager_fallbackÐ  s;   € ð Ô(ð 	Ý$Ø˜¨4¬9¬>Ô+Gðñ ô ð ð ˆrr9   c                ó   — | j         › d�S )Nr¶   )rí   )r}   rP   r:   s      r7   Úmetricsz#GenLazyNativeFuncDefinition.metricsÝ  s   € ØÔ&Ð)Ð)Ð)Ð)r9   c                ó’  ‡— |                      dd¬¦  «        }|                      dd¬¦  «        }d„ |D ¦   «         }t          t          t          ¦  «        ¦  «        Šˆfd„|D ¦   «         }t	          |¦  «        dk    r"t	          |¦  «        dk    rt          d¦  «        ‚| j        › dd	                     ||z   ¦  «        › d
�}d|› d�S )NTFr�   c                ó,   — g | ]}|j         °	|j        › ‘ŒS r=   ©r.   r/   rM   s     r7   r@   z:GenLazyNativeFuncDefinition.get_device.<locals>.<listcomp>ã  ó$   € ÐXÐXÐX¨QÀAÔDWÐX ¤˜[ÐXÐXÐXr9   c                ó4   •— g | ]}|j         ‰k    ¯|j        ‘ŒS r=   )r,   r/   )r?   rN   Úoptional_devices     €r7   r@   z:GenLazyNativeFuncDefinition.get_device.<locals>.<listcomp>å  s.   ø€ ð 
ð 
ð 
Ø¨1¬;¸/Ò+IÐ+IˆAŒFÐ+IÐ+IÐ+Ir9   r   z*Expected at least one Value or Device typer˜   rA   r(   zauto common_device = z8;
        TORCH_INTERNAL_ASSERT(common_device);
        )rB   r   r   r   rR   r2   ró   rC   )	r}   rP   r:   r§   rª   Úvalue_types_namesÚoptional_devicesÚget_device_strr   s	           @r7   Ú
get_devicez&GenLazyNativeFuncDefinition.get_deviceà  s  ø€ Ø×)Ò)°¸uÐ)ÑEÔEˆ
Ø×*Ò*°%ÀÐ*ÑFÔFˆØXÐX°*ÐXÑXÔXÐÝ'­	µ'Ñ(:Ô(:Ñ;Ô;ˆð
ð 
ð 
ð 
Ø'ð
ñ 
ô 
Ðõ Ð Ñ!Ô! QÒ&Ð&­3Ð/?Ñ+@Ô+@ÀAÒ+EÐ+EÝ Ð!MÑNÔNÐNàÔ!ÐVÐV D§I¢IÐ.?ÐBRÑ.RÑ$SÔ$SÐVÐVÐVð 	ð¨ð ð ð ð 	r9   c           
     óF  ‡— | j                              |¦  «        }|€t          d|j        j        › �¦  «        ‚|                     ¦   «         }t          |j        ¦  «        }d|j        v }|j	        p|j
        d u}|s|�r$d}|dk    r:d&d	„Šd
                     ˆfd„t          |¦  «        D ¦   «         ¦  «        }	d|	z   dz   }t          j        |j        ¦  «        }
t          |
¦  «        \  }}d„ t!          ||
                     ¦   «         d¬¦  «        D ¦   «         }|r'|j        st          d|j        j        › d�¦  «        ‚d}nd}|j        }|j                             ¦   «         r|                     ¦   «         r|dz  }d|› d|› d|› dd                     |¦  «        › d|› �
}n4t-          |j        ||                     ¦   «         ¬¦  «        }d|j        › d�}|d|› d �z  }d!t3          |j        ¦  «        z   }|d"d                     d#„ |D ¦   «         ¦  «        › d$|› d%�z  }|S )'NúNo kernel metadata found for Ú	view_copyzl
std::vector<torch::lazy::Shape> shapes{torch::lazy::Shape(out_meta.scalar_type(), out_meta.sizes().vec())};é   r›   Úintr"   r#   c                ó   — d| › d| › d�S )Nztorch::lazy::Shape(std::get<z$>(out_meta).scalar_type(), std::get<z>(out_meta).sizes().vec())r=   )r›   s    r7   Ú
this_shapez?GenLazyNativeFuncDefinition.shape_inference.<locals>.this_shape  s   € Ø~¸!Ð~Ð~ÐabÐ~Ð~Ð~Ð~r9   ú,c                ó&   •— g | ]} ‰|¦  «        ‘ŒS r=   r=   )r?   r›   r  s     €r7   r@   z?GenLazyNativeFuncDefinition.shape_inference.<locals>.<listcomp>  s!   ø€ Ð&TÐ&TÐ&T¸ z z°!¡}¤}Ð&TÐ&TÐ&Tr9   z'std::vector<torch::lazy::Shape> shapes{z};c                ó   — g | ]	}|j         ‘Œ
S r=   rK   )r?   Úes     r7   r@   z?GenLazyNativeFuncDefinition.shape_inference.<locals>.<listcomp>  s*   € ð ð ð àð ”ðð ð r9   F)Úmethodzview_copy op z8 must have CompositeExplicitAutogradNonFunctional kernelÚ&compositeexplicitautogradnonfunctionalÚmetaÚ_symintz        z
        auto out_meta = at::rõ   r˜   rA   z);
        rx   z
            auto shapes = r¶   z4
            TORCH_INTERNAL_ASSERT(shapes.size() == ra   zaten::zq
            if(torch::lazy::symbolicShapeEnabled()){
                std::vector<torch::jit::IValue> inputs = { c              3  ó>   K  — | ]}t          |j        ¦  «        V — Œd S r”   )r#   r/   rM   s     r7   r•   z>GenLazyNativeFuncDefinition.shape_inference.<locals>.<genexpr>:  s+   è è € ÐFeÐFeÐWXÅsÈ1Ì6Á{Ä{ÐFeÐFeÐFeÐFeÐFeÐFer9   z. };
                const char* schema_str = "z^";
                applySymbolicShapesOnLT(schema_str, inputs, shapes);
            }
        )r›   r	  r"   r#   )ro   rz   r2   rP   r/   rB   rR   r¦   ÚtagsÚ
structuredÚstructured_delegaterC   r¤   r   rO   rk   r   rQ   Ú5has_composite_explicit_autograd_non_functional_kernelrS   Ú
has_symintr{   ÚComputeShapeSignatureÚkernelÚ
shape_callr#   )r}   rP   r:   r~   rÀ   Úreturns_lengthÚis_view_copy_opÚis_structuredÚmeta_outÚ
shapes_strrU   Úmeta_conversion_strÚmeta_call_ctxÚmeta_call_argsÚdispatch_nsrS   Ú	shape_strÚ	shape_sigÚfunc_schema_strr  s                      @r7   Úshape_inferencez+GenLazyNativeFuncDefinition.shape_inferenceñ  s  ø€ ØÔ%×0Ò0°Ñ6Ô6ˆØÐÝ Ð!QÀÄÄÐ!QÐ!QÑRÔRÐRØ×'Ò'Ñ)Ô)ˆÝ˜Vœ^Ñ,Ô,ˆð &¨¬Ð2ˆØœÐO¨4Ô+CÈ4Ð+OˆØð .	5˜Oñ .	5ðoˆHà Ò!Ð!ðð ð ð ð !ŸXšXÐ&TÐ&TÐ&TÐ&T½eÀNÑ>SÔ>SÐ&TÑ&TÔ&TÑUÔU�
ØDÀzÑQÐTXÑX�õ 1Ô<¸T¼YÑGÔGˆNÝ1HÈÑ1XÔ1XÑ.Ð ðð å"Ø! >×#;Ò#;Ñ#=Ô#=Àeðñ ô ðñ ô ˆNð ð 	%àÔQð Ý(ðH¨¬	¬ð Hð Hð Hñô ð ð G��à$�ØÔ(ˆIàŒy×#Ò#Ñ%Ô%ð '¨(×*BÒ*BÑ*DÔ*Dð 'Ø˜YÑ&�	ðØ	ðð à(ðð à,5ðð à8<¿	º	À.Ñ8QÔ8Qðð ð 
ðð ˆIˆIõ
 .Ø” ¨h×.FÒ.FÑ.HÔ.Hðñ ô ˆIð5Ø$Ô/ð5ð 5ð 5ˆIð 	ð IØ4BðIð Ið Iñ 	Iˆ	ð #¥S¨¬¡^¤^Ñ3ˆØð à=A¿YºYÐFeÐFeÐ\dÐFeÑFeÔFeÑ=eÔ=eðð ð ,;ðð ð ñ 	ˆ	ð Ðr9   c                ó€   — t          |¦  «        }d|j        › d|› d|                      ||¦  «        › d|j        › d|› d�S )Nz3torch::lazy::NodePtr node = torch::lazy::ReuseNode<r+   z$);
        if (!node) {
            z*
            node = torch::lazy::MakeNode<zE, std::move(shapes));
            CacheNode(node);
        }
        )rE   r¥   r)  )r}   rP   r:   Únode_ctor_input_strs       r7   Úbuild_ir_nodez)GenLazyNativeFuncDefinition.build_ir_nodeA  sz   € Ý.¨vÑ6Ô6ÐðÀvÔGWð ð Ð[nð ð à×!Ò! $¨Ñ/Ô/ðð ð +1Ô*:ðð ð ?Rðð ð ð 	r9   NÚfirst_tensor_nameú
str | Nonec                ól   — | j         r|€t          d¦  «        ‚|› d| j        › �S | j        › d| j        › �S )Nz+Requires first tensor to create lazy tensorú.rõ   )rï   r2   rî   ré   )r}   r-  s     r7   Úcreate_lazy_tensorz.GenLazyNativeFuncDefinition.create_lazy_tensorK  sS   € àÔ(ð 	?à Ð(Ý$Ð%RÑSÔSÐSØ'Ð>Ð>¨$Ô*<Ð>Ð>Ð>ØÔ(Ð@Ð@¨DÔ,>Ð@Ð@Ð@r9   c                ó^  — t          |j        ¦  «        }|                     dd¬¦  «        }d„ |D ¦   «         }t          |¦  «        dk    r|d         nd }d| j        › d|                      |¦  «        › d�}|d	k    r`t          |¦  «        dk    rt          d
¦  «        ‚d| j        › d|› d|                      |¦  «        › dt          ¦   «         › d| j        › d|› d�}|j	        j	        j
        s|j                             ¦   «         r"|d	k    rt          d|› d�¦  «        ‚d|› d|› d�}|dz  }|S )NTFr�   c                ó,   — g | ]}|j         °	|j        › ‘ŒS r=   rý   rM   s     r7   r@   zBGenLazyNativeFuncDefinition.return_aten_tensor.<locals>.<listcomp>W  rþ   r9   r   zauto result = z(
                z#(std::move(node), *common_device));r  z3Code below assumes there is at least one tensor argr*   z,> lazy_tensors;
        for (int i = 0; i < z,; i++) {
            lazy_tensors.push_back(r˜   z=(node, i), *common_device));
        }
        auto result = ú<z>(lazy_tensors);zqWe assumed there was no such case where an op is an in-place variant and has tuple outputs, but got tuple of len r0  r&   z2->SetInPlaceIrValue(node);
        auto& result = r¶   z
        return result;)rR   r¦   rB   rð   r1  r2   rò   r   rñ   r/   ÚinplacerP   Ú	is_out_fn)r}   rP   r:   r  r§   r  r-  Ú
bridge_strs           r7   Úreturn_aten_tensorz.GenLazyNativeFuncDefinition.return_aten_tensorT  sø  € Ý˜Vœ^Ñ,Ô,ˆØ×)Ò)°¸uÐ)ÑEÔEˆ
ØXÐX°*ÐXÑXÔXÐÝ47Ð8IÑ4JÔ4JÈQÒ4NÐ4NÐ-¨aÔ0Ð0ÐTXÐðc¨Ô(Hð cð cØ×(Ò(Ð):Ñ;Ô;ðcð cð cˆ
ð ˜AÒÐÝÐ$Ñ%Ô%¨Ò*Ð*Ý$ØIñô ð ð]¨$Ô*>ð ]ð ]Ø+ð]ð ]à$(×$;Ò$;Ð<MÑ$NÔ$Nð]ð ]åQZÑQ\ÔQ\ð]ð ]ð Ô7ð	]ð ]ð ;Ið	]ð ]ð ]ˆJð Œ;ÔÔ#ð 	/ t¤y×':Ò':Ñ'<Ô'<ð 	/Ø Ò"Ð"Ý$ðUØCQðUð Uð Uñô ð ð/Ð#4ð /ð /Ø)ð/ð /ð /ˆJð 	ð ñ 	ˆ
àÐr9   rv   c                óX  — t          || j        ¦  «        }| j                             |¦  «        }|€t          d|j        j        › �¦  «        ‚t          |j        |                     ¦   «         ¬¦  «        }d|                     | j	        › d|j
        › �¬¦  «        › d|                      ||||¦  «        › d|                      ||¦  «        › d|                      ||¦  «        › d|                      ||¦  «        › d|                      ||¦  «        › d|                      ||¦  «        › d�gS )	Nr  rx   z    rõ   r’   z {
        rb   z
    }

    )r   ro   rz   r2   rP   r/   r   r{   Údeclræ   r  rø   rú   r  rö   r,  r8  )r}   rP   rF   r~   r:   s        r7   r   z$GenLazyNativeFuncDefinition.__call__t  se  € å˜t TÔ%7Ñ8Ô8ˆØÔ%×0Ò0°Ñ6Ô6ˆØÐÝ Ð!QÀÄÄÐ!QÐ!QÑRÔRÐRÝ˜dœi°×0HÒ0HÑ0JÔ0JÐKÑKÔKˆð	Ø‡X‚X�dÔ,ÐAÐA°´ÐAÐA€XÑBÔBð	ð 	à	×	"Ò	" 4¨°¸3Ñ	?Ô	?ð	ð 	ð 
�Š�d˜FÑ	#Ô	#ð	ð 	ð 
�Š˜˜vÑ	&Ô	&ð		ð 	ð
 
×	Ò	  fÑ	-Ô	-ð	ð 	ð 
×	Ò	˜D &Ñ	)Ô	)ð	ð 	ð 
×	 Ò	   vÑ	.Ô	.ð	ð 	ð 	ð
ð 	
r9   )rP   r   r:   r   r"   r#   )
rP   r   r:   r   r~   r   rF   rG   r"   r#   r”   )r-  r.  r"   r#   )rP   r   r"   rv   )rÌ   rÍ   rÎ   rÏ   rö   rø   rú   r  r)  r,  r1  r8  r   r   r=   r9   r7   rå   rå   �  sœ  € € € € € € àÐÐÑØÐÐÑØÐÐÑØ"Ð"Ð"Ñ"ØÐÐÑØÐÐÑØ"Ð"Ð"Ñ"ØÐÐÑØÐÐÑØÐÐÑØ"Ð"Ð"Ñ"Ø$Ð$Ð$Ñ$Ø$Ð$Ð$Ñ$ØÐÐÑØÐÐÑð/6ð /6ð /6ð /6ðbð ð ð ð*ð *ð *ð *ðð ð ð ð"Nð Nð Nð Nð`ð ð ð ðAð Að Að Að Aðð ð ð ð@ !ð
ð 
ð 
ñ !Ô ð
ð 
ð 
r9   rå   c                  óZ   — e Zd ZdZdd
„Zdd„Zdd„Zedd„¦   «         Zedd„¦   «         Z	dS )r  zm
    Here we use the base name as the suffix of the signature to avoid generating for in-place variants.
    Úkernel_namer#   rt   r   r6   rr   r"   ÚNonec               ó>  — t          |j        |¬¦  «        | _        d                     d„ t	          j        |j        |¬¦  «        D ¦   «         ¦  «        | _        d                     d„ | j                             d¬¦  «        D ¦   «         ¦  «        | _        || _	        d S )Nrx   rA   c                ó6   — g | ]}|                      ¦   «         ‘ŒS r=   )r:  rM   s     r7   r@   z2ComputeShapeSignature.__init__.<locals>.<listcomp>‘  s    € ÐKÐKÐK˜!ˆQ�VŠV‰XŒXÐKÐKÐKr9   c                ó   — g | ]
}|j         › ‘ŒS r=   r’   r>   s     r7   r@   z2ComputeShapeSignature.__init__.<locals>.<listcomp>”  s   € ÐRÐRÐR˜s�”ˆ]ÐRÐRÐRr9   T)Ú	generator)
r   rP   Ú_ComputeShapeSignature__schemarC   Ú
dispatcherrQ   Ú%_ComputeShapeSignature__dispatch_argsrB   Ú!_ComputeShapeSignature__call_argsÚ#_ComputeShapeSignature__kernel_name)r}   r<  rt   r6   s       r7   Ú__init__zComputeShapeSignature.__init__Ž  s�   € Ý$ Q¤V°FÐ;Ñ;Ô;ˆŒØ#ŸyšyØKÐK�zÔ3°A´FÀ6ÐJÑJÔJÐKÑKÔKñ 
ô  
ˆÔð  Ÿ9š9ØRÐR d¤m×&AÒ&AÈDÐ&AÑ&QÔ&QÐRÑRÔRñ
ô 
ˆÔð )ˆÔÐÐr9   c                ó&   — | j         › d| j        › d�S ©Nr˜   r(   )rF  rD  ©r}   s    r7   Ú__decl_suffixz#ComputeShapeSignature.__decl_suffix˜  s   € ØÔ$Ð>Ð> tÔ';Ð>Ð>Ð>Ð>r9   c                ó&   — | j         › d| j        › d�S rI  )rF  rE  rJ  s    r7   Ú__call_suffixz#ComputeShapeSignature.__call_suffix›  s   € ØÔ$Ð:Ð: tÔ'7Ð:Ð:Ð:Ð:r9   c                ó0   — d|                       ¦   «         › �S )Nz8TORCH_API std::vector<torch::lazy::Shape> compute_shape_)Ú#_ComputeShapeSignature__decl_suffixrJ  s    r7   Ú
shape_declz ComputeShapeSignature.shape_declž  s   € à`È$×J\ÒJ\ÑJ^ÔJ^Ð`Ð`Ð`r9   c                ó0   — d|                       ¦   «         › �S )Nztorch::lazy::compute_shape_)Ú#_ComputeShapeSignature__call_suffixrJ  s    r7   r  z ComputeShapeSignature.shape_call¢  s   € àC¨T×-?Ò-?Ñ-AÔ-AÐCÐCÐCr9   N)r<  r#   rt   r   r6   rr   r"   r=  )r"   r#   )
rÌ   rÍ   rÎ   Ú__doc__rG  rO  rR  ÚpropertyrP  r  r=   r9   r7   r  r  ‰  s¤   € € € € € ðð ð)ð )ð )ð )ð?ð ?ð ?ð ?ð;ð ;ð ;ð ;ð ðað að añ „Xðað ðDð Dð Dñ „XðDð Dð Dr9   r  c                  ó<   — e Zd ZU ded<   ded<   edd	„¦   «         Zd
S )ÚGenLazyShapeInferenceDefinitionr   ro   r#   rç   rt   r   r"   rv   c                ó@  — | j                              |¦  «        }|€t          d|j        j        › �¦  «        ‚d|j        v }|j        p|j        d u}|s|rg S t          |j	        || 
                    ¦   «         ¬¦  «        }d                     |j        › d�g¦  «        gS )Nr  r  rx   ú
r¶   )ro   rz   r2   rP   r/   r  r  r  r  r  r{   rC   rP  )r}   rt   r~   r  r  r'  s         r7   r   z(GenLazyShapeInferenceDefinition.__call__¬  s¾   € àÔ%×0Ò0°Ñ3Ô3ˆØÐÝ Ð!NÀÄÄÐ!NÐ!NÑOÔOÐOð &¨¬Ð/ˆØœÐI¨Ô(=ÀTÐ(IˆØð 	=˜Oð 	=ØˆIå-Ø” ¨8×+CÒ+CÑ+EÔ+Eðñ ô ˆIð —I’I )Ô"6Ð9Ð9Ð9Ð:Ñ;Ô;Ð<Ð<r9   N)rt   r   r"   rv   )rÌ   rÍ   rÎ   rÏ   r   r   r=   r9   r7   rV  rV  §  sM   € € € € € € àÐÐÑØÐÐÑà ð=ð =ð =ñ !Ô ð=ð =ð =r9   rV  Ú
non_nativeúlist[dict[str, Any]]Úgen_lazy_irrv   c                ón  — g }| D ]¯}t          ddd¦  «        }|                     dg ¦  «        D ]}t          ||d¦  «         Œt          t	          j        |d         ¦  «        |d¬¦  «        }|                     d¦  «        |_        |                     |                     |¦  «        d	         ¦  «         Œ°|S )
z,Generate the non-native lazy IR node classesr£   rÛ   rÓ   rŸ   TrP   rx   r¾   r   )	r
   ÚgetÚsetattrr   r   Úparser¾   re   r|   )rY  r[  ÚnodesÚoprŸ   Úpr:   s          r7   Ú!generate_non_native_lazy_ir_nodesrc  ¾  s¿   € ð €EØð 	1ð 	1ˆå% l°MÀ?ÑSÔSˆ
Ø—’˜ bÑ)Ô)ð 	)ð 	)ˆAÝ�J  4Ñ(Ô(Ð(Ð(õ �nÔ2°2°f´:Ñ>Ô>À
ÐSWÐXÑXÔXˆØŸš˜xÑ(Ô(ˆŒØ�Š�[—_’_ VÑ,Ô,¨QÔ/Ñ0Ô0Ð0Ð0à€Lr9   )r!   r	   r"   r#   rÊ   )r:   r   rF   rG   rH   r#   r"   r#   )rF   r   r"   r^   )rY  rZ  r[  rn   r"   rv   )7Ú
__future__r   rÜ   Úabcr   Údataclassesr   Útypingr   Útorchgen.api.dispatcherÚapirC  Útorchgen.api.lazyr   r   r	   r
   r   r   Útorchgen.api.translater   Útorchgen.api.typesr   r   r   r   r   r   r   r   Útorchgen.contextr   Útorchgen.dest.lazy_ts_loweringr   Útorchgen.modelr   r   r   r   r   r   r   r   r    r8   rE   rY   rT   rk   rn   rÑ   rå   r  rV  rc  r=   r9   r7   ú<module>rp     s¢  ðØ "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø !Ð !Ð !Ð !Ð !Ð !Ø Ð Ð Ð Ð Ð à ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð -Ð ,Ð ,Ð ,Ð ,Ð ,ð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 9Ð 8Ð 8Ð 8Ð 8Ð 8Ø ;Ð ;Ð ;Ð ;Ð ;Ð ;ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð8!ð 8!ð 8!ð 8!ðv'ð 'ð 'ð 'ðð ð ð ð0
 ð 
 ð 
 ð 
 ð +ð +ð +ð +ð  €�$ÐÑÔðh
ð h
ð h
ð h
ð h
�ñ h
ô h
ñ Ôðh
ðV €�$ÐÑÔð5ð 5ð 5ð 5ð 5�)ñ 5ô 5ñ Ôð5ðp €�$ÐÑÔðx
ð x
ð x
ð x
ð x
ñ x
ô x
ñ Ôðx
ðvDð Dð Dð Dð Dñ Dô Dð Dð< €�$ÐÑÔð=ð =ð =ð =ð =ñ =ô =ñ Ôð=ð,ð ð ð ð ð r9   