
    i(                     /   % S SK r S SKJrJrJrJrJrJrJr  S SK	r
S SKJs  Js  Jr  S SKrS SKJr  S SKJr  S\R*                  R,                  S\4S jr " S S	5      r\\\R6                  R8                  \4   r0 r\\\4   \S
'   S r \ " \ RB                  \R"                  RD                  RF                  RH                  \ RJ                  \ RL                  \ RN                  \ RP                  \ RR                  \ RT                  \ RV                  \R"                  RD                  RX                  RZ                  \R"                  RD                  R\                  RZ                  \R^                  RD                  R`                  RZ                  /5      S 5       r1\ " \R^                  RD                  Rd                  RZ                  \R^                  RD                  Rf                  RZ                  \R^                  RD                  Rh                  RZ                  \R^                  RD                  Rj                  RZ                  \R^                  RD                  Rl                  RZ                  \R^                  RD                  Rn                  RZ                  \R^                  RD                  Rp                  RZ                  \R^                  RD                  Rr                  RZ                  \R^                  RD                  Rt                  RZ                  \R^                  RD                  Rv                  RZ                  \R^                  RD                  Rx                  RZ                  \R^                  RD                  Rz                  RZ                  \R^                  RD                  R|                  RZ                  \R^                  RD                  R~                  RZ                  \R^                  RD                  R                  RZ                  /5      S 5       rA\ " \R^                  RD                  R                  RZ                  5      S 5       rC\ " \R^                  RD                  RJ                  R                  \R^                  RD                  RL                  R                  \R^                  RD                  R                  RZ                  \R^                  RD                  R                  R                  \R^                  RD                  R                  R                  \R^                  RD                  R                  R                  \R^                  RD                  R                  R                  /5      S 5       rK\ " \R^                  RD                  RV                  R                  \R^                  RD                  RN                  R                  \R^                  RD                  RT                  R                  \R^                  RD                  RP                  R                  \R^                  RD                  RR                  R                  /5      S 5       rL\ " \R^                  RD                  R                  R                  5      S 5       rN\ " \R^                  RD                  R                  R                  5      S 5       rP\ " \R^                  RD                  R                  RZ                  5      S 5       rR\ " \R^                  RD                  R                  RZ                  \R^                  RD                  R                  RZ                  /5      S 5       rU\ " \R^                  RD                  R                  RZ                  \R^                  RD                  R                  RZ                  /5      S 5       rX\ " \R^                  RD                  R                  RZ                  \R^                  RD                  R                  RZ                  /5      S 5       r[\ " \R^                  RD                  R                  RZ                  \R^                  R                  R                  RZ                  /5      S 5       r_\ " \R^                  R                  R                  RZ                  \R^                  R                  R                  RZ                  /5      S 5       rb\ " \R^                  R                  R                  RZ                  5      S 5       rd\ " \R^                  R                  R                  RZ                  \R^                  R                  R                  RZ                  \R^                  R                  R                  RZ                  \R^                  R                  R                  RZ                  /5      S 5       rj\ " \R^                  R                  R                  RZ                  \R^                  R                  R                  RZ                  /5      S 5       rn\ " \R^                  R                  R                  RZ                  \R^                  R                  R                  R                  /5      S 5       rq\ " \R^                  R                  R                  RZ                  \R^                  R                  R                  R                  /5      S 5       rs\ " \R^                  R                  R                  R                  \R^                  R                  R                  RZ                  /5      S 5       rv\ " \R^                  R                  R                  RZ                  5      S 5       rx\ " \R^                  R                  R                  RZ                  5      S  5       rz\ " \R^                  R                  R                  RZ                  5      S! 5       r|S\R*                  R,                  S\\$\\$   4   4S" jr}S\R*                  R,                  S\4S# jr~S\R*                  R,                  S\4S$ jrS\R*                  R,                  S\4S% jrS\R*                  R,                  S\4S& jrS\R*                  R,                  4S' jr\ " \R^                  RD                  GR                  GR                  \R^                  RD                  GR
                  GR                  \R^                  RD                  GR                  RZ                  \R^                  RD                  GR                  RZ                  /5      S( 5       r\ " \R^                  RD                  GR                  RZ                  \R^                  RD                  GR                  RZ                  /5      S) 5       r\ " \R^                  RD                  GR                  RZ                  \R^                  RD                  GR                  RZ                  /5      S* 5       r\ " \R^                  RD                  GR                   RZ                  5      S+ 5       r\ " \R^                  RD                  GR$                  RZ                  \R^                  R                  GR&                  RZ                  /5      S, 5       r\ " \R^                  R                  GR*                  RZ                  /5      S- 5       r\ " \R^                  R                  GR.                  RZ                  \R^                  R                  GR0                  RZ                  /5      S. 5       r\ " \R^                  R                  GR4                  RZ                  5      S/ 5       r\ " \R^                  R                  GR8                  RZ                  5      S0 5       r\ " S15      S2 5       r\ " S3S4/5      S5 5       r\ " \R^                  R                  GR@                  RZ                  5      S6 5       r\ " \R^                  RD                  GRD                  RZ                  5      S7 5       r\ " \R^                  RD                  GRH                  RZ                  5      S8 5       r\ " \R^                  RD                  GRL                  RZ                  5      S9 5       r\ " \R^                  GRP                  GRR                  RZ                  5      S: 5       r\ " \R^                  RD                  GRV                  GRX                  5      S; 5       r\ " \R^                  RD                  GR\                  RZ                  5      S< 5       r\ " \R^                  RD                  GR`                  RZ                  5      S= 5       r\ " \R^                  GRP                  GRd                  RZ                  5      S> 5       r\ " \R^                  RD                  GRh                  RZ                  5      S? 5       r\ " \R^                  RD                  GRl                  RZ                  5      S@ 5       r\ " \R^                  RD                  GRp                  RZ                  5      SA 5       r\ " \R^                  RD                  GRt                  RH                  5      SB 5       r\ " \R^                  RD                  GRx                  R                  5      SC 5       r\ " \R^                  RD                  GR|                  RZ                  5      SD 5       r\ " \R^                  RD                  GR                  RZ                  5      SE 5       r\ " \R^                  RD                  GR                  RZ                  5      SF 5       r\ " \R^                  RD                  GR                  RZ                  5      SG 5       r\ " \R^                  RD                  GR                  GR                  5      SH 5       r\ " \R^                  RD                  GR                  R                  5      SI 5       r\ " \R^                  RD                  GR                  GR                  5      SJ 5       r\ " \R^                  RD                  GR                  RZ                  5      SK 5       r\ " \R^                  RD                  GR                  RZ                  \R^                  RD                  GR                  RZ                  \R^                  RD                  GR                  RZ                  \R^                  RD                  GR                  RZ                  \R^                  RD                  GR                  RZ                  \R^                  RD                  GR                  RZ                  /5      SL 5       r\ " \R^                  RD                  GR                  RZ                  5      SM 5       r\ " \R^                  RD                  GR                  GR                  \R^                  RD                  GR                  GR                  /5      SN 5       r\ " \R^                  R                  GR                  RZ                  5      SO 5       r\ " \R^                  RD                  GR                  RZ                  5      SP 5       r\ " \R^                  RD                  GR                  RZ                  5      SQ 5       r\ " \R^                  RD                  GR                  RZ                  5      SR 5       r\ " \R^                  RD                  GR                  RZ                  5      SS 5       r\ " \R^                  RD                  GR                  RZ                  5      ST 5       rSU\S\4SV jrSU\S\4SW jrSU\S\4SX jrg)Y    N)AnyCallableDictListOptionalTupleUnion)ops)EdgeOpOverloadnodereturnc                     g)NT r   s    e/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/executorch/backends/vulkan/op_registry.py
allow_noder      s        c                   (   \ rS rSr/ SQrSSSSSSS\S4	S\\\R                  \
\R                     4      S\\\R                  \
\R                     4      S\\\R                  \
\R                     4      S\\\R                  \
\R                     4      S	\S
\S\S\\   S\\   4S jjrS\R                   R"                  S\\\4   4S jr\R*                  4S\R                   R"                  S\R,                  S\R.                  4S jjrSrg)
OpFeatures   )	inputs_dtypesoutputs_dtypesinputs_storageoutputs_storagesupports_resizesupports_highdimsupports_prepackingare_node_inputs_supported_fnpick_io_storage_fnNFr   r   r   r   r   r   r   r   r   c
                    [         R                  " Ub  UO[         R                  5      U l        [         R                  " Ub  UOU R                  S   5      U l        [         R
                  " Ub  UO/ 5      U l        [         R
                  " Ub  UO/ 5      U l        U R                  R                  5       (       a(  [         R
                  " U R                  S   5      U l        XPl	        X`l
        Xpl        Xl        Xl        g )Nr   )utilsDtypeSetListALL_Tr   r   TensorRepSetListr   r   any_is_emptyr   r   r   r   r   )
selfr   r   r   r   r   r   r   r   r   s
             r   __init__OpFeatures.__init__6   s    " 271C1C*6MEKK2
 382D2D,8Nd>P>PQR>S3

 7<6L6L,8Nb7
 8=7M7M.:O8

 ,,..#(#9#9$:M:Ma:P#QD . 0#6 ,H)"4r   r   r   c                 Z    [         R                  " UU R                  U R                  5      $ )zo
Check if all tensor inputs/outputs have dtypes supported by this operator.
Returns (is_valid, reason_string).
)r!   check_node_dtypesr   r   )r&   r   s     r   check_dtypesOpFeatures.check_dtypesa   s,    
 &&
 	
r   op_nodetexture_limitsc                     U R                   nU R                  nU R                  b?  U R                  U5      u  pV[        R                  " U5      n[        R                  " U5      n[        R
                  " X4X5      $ N)r   r   r   r!   r$   	OpRepSets)r&   r-   r.   r   r   	i_storage	o_storages          r   make_op_repsetsOpFeatures.make_op_repsetsl   sj    
 ,,.."".#'#:#:7#C I"33I>N#44Y?O~XXr   )	r   r   r   r   r   r   r   r   r   )__name__
__module____qualname____firstlineno__	__slots__r   r   r	   r!   DtypeSetr   TensorRepSetboolr   r'   torchfxNoder   strr+   DEFAULT_TEXTURE_LIMITSImageExtentsr1   r4   __static_attributes__r   r   r   r   r      s~   I8 PTPT   %!&$);E15)5ennd5>>6J&J KL)5 !u~~tENN7K'K!LM)5 !%$$d5+=+=&>>?
	)5 "%$$d5+=+=&>>?
)5 )5 )5 ")5 '/x&8)5 %X.)5V	
 	
5s3C 	
 .3-I-IYY **Y 
	Y Yr   r   vulkan_supported_opsc                 $   ^  S[         4U 4S jjnU$ )Nfnc                    >^  S[         4U 4S jjn[        T[        5      (       a  T H  nU" U5        M     T $ U" T5        T $ )Nopc                 T   > U [         ;   a  [        SU  S35      eT" 5       [         U '   g )Nz,[Vulkan delegate] duplicate registration of !)rE   RuntimeError)rI   rG   s    r   update_features_implIupdate_features.<locals>.features_decorator.<locals>.update_features_impl   s1    ))"%QRTQUUV#WXX')t $r   )OpKey
isinstancelist)rG   rM   rI   aten_ops   `  r   features_decorator+update_features.<locals>.features_decorator   sF    	,U 	,
 gt$$$R( 
 	 !)	r   )r   )rR   rS   s   ` r   update_featuresrU      s    x  r   c                  2    [        [        R                  SS9$ NTr   r   )r   r!   ANY_STORAGEr   r   r   register_ephemeral_opsrZ      s    * (( r   c                  P    [        [        R                  [        R                  SS9$ NT)r   r   r   r   r!   rY   FP_Tr   r   r   register_unaryop_cpp_opsr_      s$    ( ((jj r   c                  P    [        [        R                  [        R                  SS9$ r\   r   r!   rY   FP_INT_Tr   r   r   register_clamprc      "    ((nn r   c                  R    [        [        R                  [        R                  SSS9$ NTr   r   r   r   ra   r   r   r   register_binaryop_cpp_opsrh      s'     ((nn	 r   c                  p    [        [        R                  [        R                  [        R                  SSS9$ )NT)r   r   r   r   r   )r   r!   rY   rb   BOOL_Tr   r   r   register_comparison_opsrk      s.     ((nn|| r   c                  R    [        [        R                  [        R                  SSS9$ rf   )r   r!   rY   rj   r   r   r   register_bitwise_andrm     s%    ((ll	 r   c                  R    [        [        R                  [        R                  SSS9$ rf   r]   r   r   r   register_pow_tensor_scalarro     s%    ((jj	 r   c                      S[         R                  R                  S[        4S jn [	        [
        R                  [
        R                  [
        R                  SU S9$ )Nr   r   c                 2    [        U R                  5      S:H  $ )N   )lenargsr   s    r   check_to_copy_node,register_to_copy.<locals>.check_to_copy_node0  s    499~""r   T)r   r   r   r   r   r>   r?   r@   r=   r   r!   rY   rb   )ru   s    r   register_to_copyrx   .  sI    # #4 # ((nn~~%7 r   c                  P    [        [        R                  [        R                  SS9$ r\   r   r!   ANY_TEXTUREr^   r   r   r   register_softmax_cpp_opsr|   B  s$     ((jj r   c                  R    [        [        R                  [        R                  SSS9$ NT)r   r   r   r   r   r!   CONTIGUOUS_ANYr^   r   r   r   register_matmul_cpp_opsr   U  '     ++jj 	 r   c                  R    [        [        R                  [        R                  SSS9$ r~   r   r   r   r   register_linear_cpp_opsr   i  r   r   c                  R    [        [        R                  [        R                  SSS9$ r~   r   r   r   r   %register_quantizedlinearqcsnw_cpp_opsr   }  r   r   c                  P    [        [        R                  [        R                  SS9$ NT)r   r   r   r   r   r   r    register_quantizedlinear_cpp_opsr     s$     ++jj  r   c            
      $   [        [        R                  [        R                  [        R                  [        R                  [        R                  [        R                  [        R                  [        R                  /[        R
                  SS9$ r   )r   r!   r   WIDTH_PACKED_TEXTURE
NO_STORAGEr^   r   r   r   register_linear_dq8ca_q4gswr     sh      &&&&	
 jj  r   c                  2    [        [        R                  SS9$ rW   r   r!   CONTIGUOUS_BUFFERr   r   r   #register_quantizedequantize_cpp_opsr     s     .. r   c                  2    [        [        R                  SS9$ rW   r   r   r   r   $register_torchao_quantize_dequantizer          .. r   c                  R    [        [        R                  /[        R                  /S9$ N)r   r   )r   r!   ,CHANNELS_PACKED_TEXTURE_OR_CONTIGUOUS_BUFFERPACKED_INT8_BUFFERr   r   r   register_quantize_per_tensorr     s/     >>
 $$
	 r   c                  R    [        [        R                  /[        R                  /S9$ r   )r   r!   r   r   r   r   r   register_dequantize_per_tensorr     s/     $$
 >>
	 r   c                  2    [        [        R                  SS9$ rW   r   r   r   r   register_chooseqparams_cpp_opsr     r   r   c                  p    [        [        R                  [        R                  [        R                  /SS9$ )NT)r   r   r   )r   r!   r   r   r   r   r   &register_torchao_choose_qparams_affiner     s4    ++&&&&
  r   c                  2    [        [        R                  SS9$ )NFrX   r   r!   r   r   r   r   register_q8ta_addr     s    // r   c                  2    [        [        R                  SS9$ rW   r   r   r   r   register_q8ta_relur   )  s    // r   c                    [         R                  " U R                  S   5      nUc   eS n[        U R                  5      S:  a  U R                  S   nUc7  [	        [        U5      5      n[         R                  " U 5      (       a  US:X  a  Sn[        U[        [        45      (       a  [        U5      S:X  a  US   n[        U[        [        [        45      (       d   e[         R                  " X!5      $ )Nr      rr   )r!   ndim_ofrt   rs   rQ   rangeis_unsqueezed_vectorrP   tupleintnormalize_dims)r   ndimdims_reduceds      r   get_dims_reducedr   5  s    ==1&DL
499~yy| E$K( %%d++	L,u..3|3D3I#AlS$$6777733r   c                 \    U R                    H  n[        U[        5      (       d  M  Us  $    g)NF)rt   rP   r=   )r   args     r   get_keepdim_settingr   L  s'    yyc4  J 
 r   c                 v    [         R                  " U R                  S   5      nUc   e[        U 5      nX!S-
  :H  $ )zm
Checks if a reduction node is supported by the Vulkan backend's reduce per row
special case implementation.
r   rr   )r!   r   rt   r   )r   
input_ndimr   s      r   (is_reduce_node_supported_by_per_row_implr   U  s=    
 tyy|,J!!!#D)L>))r   c                     [        U 5      n[        U[        [        45      (       a  [	        U5      S:  a  g[        U 5      n[        U[        5      (       a  U(       d  gg)Nr   FT)r   rP   rQ   r   rs   r   r=   )r   r   keepdims      r   (is_reduce_node_supported_by_general_implr   a  sK    #D)L,u..3|3Dq3H!$'G'4  r   c                 <    [        U 5      =(       d    [        U 5      $ r0   )r   r   r   s    r   is_reduce_node_supportedr   o  s    3 8	1$	78r   c                    [         R                  n[         R                  n[         R                  " U R                  S   5      n[	        U 5      n[        U 5      (       a!  UR                  [         R                  5      nUn[        U 5      (       a$  UR                  [         R                  5      nUnX4$ [        U[        [        45      (       a  [        U5      S:X  a  [         R                  " US   U5      n[         R                  " US   U5      n1 SknUR                  U5        UR                  U5        UR!                  5       nUS;   d   eUS:X  a#  [         R"                  n[         R"                  nX4$ US:X  a#  [         R$                  n[         R$                  nX4$ [         R&                  n[         R&                  nX4$ )Nr   r   rr   >   r   rr   r   )r   rr   r   )r!   r   r   rt   r   r   
make_unionr{   r   r   rP   rQ   r   rs   nchw_dim_to_whcn_dimdiscardpopr   HEIGHT_PACKED_TEXTURECHANNELS_PACKED_TEXTURE)	r   r   r   r   dim_listreduce_dim1_whcnreduce_dim2_whcnpossible_packed_dims
packed_dims	            r   pick_storage_for_reducer   u  s   %%N&&O==1&D%H/55'2253D3DE( 055'2253J3JK(.. (T5M**s8}/A 55hqk4H 55hqk4H($$%56$$%56)--/
Y&&&?"77N#88O ** 1_"88N#99O
 ** #::N#;;O**r   c            	      f    [        [        R                  [        R                  SS[        [
        S9$ )NT)r   r   r   r   r   r   )r   r!   r{   r^   r   r   r   r   r   register_reduce_cpp_opsr     s-     ((jj%=2 r   c            
          [        [        R                  [        R                  [        R                  SS[
        [        S9$ )NT)r   r   r   r   r   r   r   )r   r!   r{   r^   INT_Tr   r   r   r   r   register_argreduce_cpp_opsr     s4     ((jj{{%=2 r   c                  P    [        [        R                  [        R                  SS9$ r\   r   r!   r   r^   r   r   r   register_pool_cpp_opsr     s$     44jj r   c                      [        [        R                  [        R                  [        R                  [        R                  /SS9$ NT)r   r   r   r   r   r!   r   r^   r   r   r   r    register_max_pool2d_with_indicesr     s2    44jj

EKK0	 r   c                     S[         R                  R                  S[        4S jn [	        [
        R                  [
        R                  [
        R                  [
        R                  [
        R                  [
        R                  [
        R                  [
        R                  [
        R                  [
        R                  [
        R                  /[
        R                  SSU S9$ )Nr   r   c                 j   U R                   S   n[        U[        R                  R                  5      (       d   eUR
                  S   R                  5       n[        U5      S:X  a'  UR
                  S   R                  5       S   nUS:w  a  g[        U5      S:X  a  U R                   S   nU(       a  gg)	Nr   val   rr   F      T)rt   rP   r>   r?   r@   metasizers   )r   xx_shapebatches	transposes        r   check_conv_node5register_convolution_cpp_ops.<locals>.check_conv_node  s    IIaL!UXX]]++++&&-$$&w<1ffUm((*1-G!|w<1		!Ir   T)r   r   r   r   r   )	r>   r?   r@   r=   r   r!   r   r   r^   )r   s    r   register_convolution_cpp_opsr     s    ehhmm  $ ))
 jj %4# r   c                     [        [        R                  [        R                  [        R                  [        R                  [        R                  [        R                  [        R                  [        R                  [        R                  [        R                  [        R                  [        R                  [        R                  [        R                  [        R                  /[        R                  /SSS9$ NFT)r   r   r   r   )r   r!   PACKED_INT8_4W4C_BUFFERr   "PACKED_INT8_CHANNELS_PACKED_BUFFERr   r   r   register_q8ta_conv_pw_opr   !  s     ))
$ 44
  - r   c                     [        [        R                  [        R                  [        R                  [        R                  [        R                  [        R                  [        R                  [        R                  [        R                  [        R                  [        R                  [        R                  [        R                  [        R                  [        R                  /[        R                  /SSS9$ r   )r   r!   PACKED_INT8_CONV2D_BUFFERr   r   r   r   r   register_q8ta_conv2d_opsr   A  s     ++
$ 44
  - r   c                  d   [        [        R                  [        R                  [        R                  [        R                  [        R                  [        R                  [        R                  [        R                  [        R                  [        R                  /
[        R                  /SSS9$ r   )r   r!   PACKED_INT8_4H4W_BUFFERr   r   r   r   register_q8ta_linearr   g  s    ))
 ))
  # r   c                  d   [        [        R                  [        R                  [        R                  [        R                  [        R                  [        R                  [        R                  [        R                  [        R                  [        R                  /
[        R                  /SSS9$ r   )r   r!   PACKED_INT8_4W_BUFFERr   r   r   r   register_q8ta_linear_gemvr   ~  s    ''
 ''
  # r   zllama::sdpa_with_kv_cachec                  R    [        [        R                  [        R                  SSS9$ r~   r   r   r   r   register_sdpa_with_kv_cacher     s%    ++jj 	 r   zllama::update_cachezllama::custom_sdpac                  P    [        [        R                  [        R                  SS9$ r\   r   r   r   r   register_sdpa_cpp_opsr     s$     ++jj r   c                  R    [        [        R                  [        R                  SSS9$ rf   r   r   r   r   register_apply_rotary_embr     s%    ++jj	 r   c                  P    [        [        R                  [        R                  SS9$ r\   r   r!   r{   FP_INT_BOOL_Tr   r   r   register_permuter     s$    (()) r   c                  R    [        [        R                  [        R                  SSS9$ rf   r   r!   rY   r   r   r   r   register_permute_copyr     '    (())	 r   c                  R    [        [        R                  [        R                  SSS9$ rf   r   r   r   r   register_view_copyr     r   r   c                  R    [        [        R                  [        R                  SSS9$ rf   r   r!   
ANY_BUFFERr   r   r   r   register_to_dim_order_copyr    s'    ''))	 r   c                  R    [        [        R                  [        R                  SSS9$ rf   r   r   r   r   register_squeeze_copyr    r   r   c                  R    [        [        R                  [        R                  SSS9$ rf   r   r   r   r   register_unsqueeze_copyr    r   r   c                  R    [        [        R                  [        R                  SSS9$ rf   r   r   r   r   register_cloner
    r   r   c                  R    [        [        R                  [        R                  SSS9$ rf   r   r   r   r   register_clone_dim_orderr    r   r   c                  R    [        [        R                  [        R                  SSS9$ rf   r   r   r   r   register_gatherr  .  r   r   c                  R    [        [        R                  [        R                  SSS9$ )NFTrg   r  r   r   r   register_expand_copyr  =  s'    ''))	 r   c                  P    [        [        R                  [        R                  SS9$ r\   ra   r   r   r   register_catr  L  rd   r   c                  R    [        [        R                  [        R                  SSS9$ rf   r   r   r   r   register_select_copyr  Z  r   r   c                  R    [        [        R                  [        R                  SSS9$ rf   r   r   r   r   register_slice_copyr  i  r   r   c                  R    [        [        R                  [        R                  SSS9$ rf   r   r   r   r   register_split_with_sizes_copyr  x  r   r   c                  N    [        [        R                  [        R                  S9$ N)r   r   r   r!   r   r   r   r   r   register_t_copyr    !    44)) r   c                  N    [        [        R                  [        R                  S9$ r  r  r   r   r   register_flipr    r  r   c                  N    [        [        R                  [        R                  S9$ r  r  r   r   r   register_index_selectr!    r  r   c                      [        [        R                  [        R                  [        R                  [        R                  /[        R                  SS9$ r   )r   r!   rY   rj   r^   r   r   r   register_wherer#    s8    ((||UZZ<zz	 r   c                      S[         R                  R                  S[        4S jn [	        [
        R                  [
        R                  SU S9$ )Nr   r   c                    U R                   S   nU R                   S   n[        U[        R                  R                  5      (       d  gUR
                  R                  SS 5      nUc  g[        UR                  5       5      S:w  a  g[        U[        [        45      (       d  gU Vs/ s H	  oDc  M  UPM     nn[        U5      S:w  a  ggs  snf )Nr   rr   Fr   T)rt   rP   r>   r?   r@   r   getrs   r   rQ   r   )r   self_argindicesself_validxnon_nones         r   check_index_tensor_node6register_index_tensor.<locals>.check_index_tensor_node  s    99Q<))A, (EHHMM22==$$UD1x}}1$ 'D%=11#*>7CC7>x=A	 ?s   'C
1C
T)r   r   r   r   rw   )r,  s    r   register_index_tensorr.    sB    ehhmm  , ((nn%<	 r   c                  N    [        [        R                  [        R                  S9$ r  r   r!   r   rb   r   r   r   register_aranger1        44nn r   c                  N    [        [        R                  [        R                  S9$ r  r  r   r   r   register_constant_pad_ndr4    r  r   c                  N    [        [        R                  [        R                  S9$ r  r  r   r   r   register_full_cpp_opsr6    s#     44)) r   c                  N    [        [        R                  [        R                  S9$ r  r0  r   r   r   register_scalar_tensorr8    r2  r   c                  N    [        [        R                  [        R                  S9$ r  r   r   r   r   register_upsample_cpp_opsr:    s!     44jj r   c                  N    [        [        R                  [        R                  S9$ r  r   r   r   r   register_grid_priorsr<  1  s    44jj r   c                  N    [        [        R                  [        R                  S9$ r  r   r   r   r   register_repeatr>  >  s!    (()) r   c                  r    [        [        R                  [        R                  [        R                  /SSS9$ NT)r   r   r   r   r   r   r   r   register_embeddingrA  K  s.    44zz5;;/ 	 r   c                  R    [        [        R                  [        R                  SSS9$ r@  r   r   r   r   ,register_native_batch_norm_legit_no_trainingrC  Z  s%    44jj 	 r   c                      [        [        R                  [        R                  [        R                  [        R                  [        R                  /SS9$ )NT)r   r   r   r   )r   r!   r   r^   r   r   r   r   register_native_group_normrE  i  sD    44jj))####

 !	 	r   c                  R    [        [        R                  [        R                  SSS9$ r@  rz   r   r   r   register_native_layer_normrG  |  s%    ((jj 	 r   targetc                     [        U [        5      (       d*  U [        ;  a  U R                  5       [        ;   $ U [        ;   $ U [        ;   $ r0   rP   rA   rE   namerH  s    r   has_implrM    sB    fc""--;;=$888------r   c                     [        U [        5      (       d*  U [        ;  a  [        U R                  5          $ [        U    $ [        U    $ r0   rJ  rL  s    r   get_op_featuresrO    s?    fc""--'66#F++#F++r   c                 ,    [        U 5      R                  $ r0   )rO  r   rL  s    r   handles_own_prepackingrQ    s    6"666r   )operatortypingr   r   r   r   r   r   r	   )executorch.backends.vulkan.custom_ops_lib
executorch executorch.backends.vulkan.utilsbackendsvulkanr!   r>   executorch.exir.dialects._opsr
   exir_ops"executorch.exir.dialects.edge._opsr   r?   r@   r=   r   r   rA   _ops
OpOverloadrO   rE   __annotations__rU   getitematensym_sizer   addsubltgtgeleeq_assert_scalardefaultsym_constrain_range_for_sizeedgecopyrZ   abscosexpgelu
hardshrinkhardtanhnegrelusigmoidsinsqrtrsqrttanhround
leaky_relur_   clamprc   TensorminimummuldivTensor_modepowTensor_Tensorrh   rk   bitwise_andrm   Tensor_Scalarro   _to_copyrx   _log_softmax_softmaxr|   bmmmmr   addmmlinearr   _weight_int8pack_mmet_vklinear_qcs4wr   linear_q8ta_q8cswlinear_q4gswr   linear_dq8ca_q4gswr   quantized_decomposedquantize_per_channelquantize_per_tokendequantize_per_channeldequantize_per_tokenr   torchaoquantize_affinedequantize_affiner   quantize_per_tensortensorr   dequantize_per_tensorr   choose_qparams#choose_qparams_per_token_asymmetricr   choose_qparams_affiner   q8ta_addr   	q8ta_relur   r   r   r   r   r   r   meandimsumdim_IntListamaxaminr   argmaxargminr   
avg_pool2d
max_pool2dr   max_pool2d_with_indicesr   convolutionconv_with_clampr   q8ta_conv2d_pwr   q8ta_conv2dq8ta_conv2d_dwr   q8ta_linearr   q8ta_linear_gemvr   r   r   apply_rotary_embr   permuter   permute_copyr   	view_copyr   dim_order_ops_to_dim_order_copyr  squeeze_copydimsr  unsqueeze_copyr  cloner
  _clone_dim_orderr  gatherr  expand_copyr  catr  select_copyr  
slice_copyr  split_with_sizes_copyr  t_copyr  flipr  index_selectr!  wherer&   r#  indexr.  arange
start_stepr1  constant_pad_ndr4  full	full_likeones	ones_likezeros
zeros_liker6  scalar_tensorr8  upsample_nearest2dvecupsample_bilinear2dr:  grid_priorsr<  repeatr>  	embeddingrA  $_native_batch_norm_legit_no_trainingrC  native_group_normrE  native_layer_normrG  rM  rO  rQ  r   r   r   <module>r     s    D D D 0 0 0  9 =UXX]] t ]Y ]YH 	c5::((.8902 d5*,- 2. 		##		%%--		33;; 	''!()( &&&&&&''%%--##++&&''""**&&''  ((''  ((%%--&'& ##))112 3 %%%%""**%%%%**,,

 $$$$$$$$$$ ##//667 8 ##''556 7 ##,,445 6& ''//##++ &&%%   ((!!)) ..66((00 --55((00 $$77??@ A, **??GG**==EE**AAII**??GG	 --55//77 **>>FF**>>EE **@@HH**@@GG  **99@@**NNVV &&<<DDE F  $$--556 7 $$..667 84588== 4U3S	>-B 4.ehhmm  	*588== 	*T 	*588== T 8588== 8T 8*+%((-- *+Z ##**''''	  !!))!!))		" %%--%%-- ##;;CCD E &&..++33%%Z **22

6 ''//**22@ $$00889 :, $$55==> ?6 ,- .  $$55==> ? ##++334 5 ##00889 : ##--556 7 ,,??GGH I ##00556 7 ##22::; < ##))112 3 ,,==EEF G ##**223 4 ##//778 9 ##''//0 1 ##//334 5 ##..556 7 ##99AAB C ##**223 4 ##((001 2 ##00889 : ##))../ 0 ##))001 2H ##**556 7 ##33;;< = ''$$,,''$$,,  ((%%--		 ##1199: ; --11..22 $$00889 : ##**223 4 ##--556 7 ##HHPPQ R ##55==>
 ?
$ ##55==> ?.S .T .,C ,J ,75 7T 7r   