
    i                        S SK JrJr  S SKrS SKJrJrJrJrJ	r	J
r
  S\R                  R                  S\R                  R                  S\4S jrS\R                  R                  S\R                  R                  S\R"                  4S jrS	\R"                  S\R                  R                  S\R                  R                  4S
 jrS\R                  R                  S\R                  R                  S\4S jrS\R                  R                  S\R                  R                  S\4S jrS\R                  R                  S\4S jrS\R                  R                  S\R                  R                  S\4S jrS\R                  R                  S\R                  R                  S\4S jr SS\R"                  S\\   S\R2                  4S jjrg)    )DictOptionalN)
get_bufferget_lifted_tensor_constant	get_param	is_bufferis_lifted_tensor_constantis_paramnodeedge_programreturnc                 `    [        X5      =(       d    [        X5      =(       d    [        X5      $ N)r
   r   r	   )r   r   s     j/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/executorch/backends/qualcomm/builders/utils.pyis_parameterr      s+     	$ 	9\(	9$\8    c                 N   S n[        X5      (       a  [        X5      n[        X5      (       a  [        X5      n[	        X5      (       a  [        X5      nUbN  [        U[        R                  5      (       d   S5       eUR                  U R                  S   R                  5      nU$ )NzExpect parameter to be tensorval)r
   r   r   r   r	   r   
isinstancetorchTensortypemetadtype)r   r   params      r   get_parameterr      s     E##,-$$<. 44*<>%..O0OO.

499U+112Lr   r   c                 ~   Sn[        X!5      (       a2  U UR                  UR                  R                  UR                     '   Sn[        X!5      (       a[  UR                  R                  UR                     nXBR                  R                  ;   a  XR                  U'   OXR                  U'   SnU(       d   S5       eg )NFTzFailed to set parameter)	r
   
state_dictgraph_signatureinputs_to_parametersnamer   inputs_to_buffersnon_persistent_buffers	constants)r   r   r   statusbuffer_names        r   set_parameterr'   /   s     F##  	((==diiH	
 $$"22DDTYYO66MMM27"";/38##K0,,,6r   tensorc                 N    U R                   S:H  =(       a    [        X5      (       + $ )zs
Check if the given tensor is a graph input

Args:
    tensor: EdgeIR Tensor that is being checked for graph input
placeholder)opr   r(   r   s     r   is_graph_inputr-   B   s      99%Pl6.P*PPr   c                     U R                   S:X  aZ  [        X5      (       aI  UR                  R                  U R                     nX!R                  R
                  R                  5       ;   $ gg)z
Check if the given tensor is a mutable buffer input
Args:
    tensor: EdgeIR Tensor that is being checked for mutable buffer input
r*   N)r+   r   r   r"   targetbuffers_to_mutatevalues)r(   r   fqns      r   is_mutable_buffer_inputr3   N   s[     yyM!i&E&E**<<V]]K22DDKKMMM 'F!r   c                     U R                   R                  5        HA  nUR                  S:X  d.  UR                  R                  S:X  d  M/  [        U5      (       d  MA    g   g)z|
Check if the given tensor is used as a graph output

Args:
    tensor: EdgeIR Tensor that is being checked for graph input
outputgetitemTF)userskeysr+   r/   __name__is_graph_output)r   users     r   r:   r:   \   sI     

!77hKK  I-/$2G2G " r   c                     [        S U R                  R                  5        5       5      =(       a1    U R                  UR                  R
                  R                  5       ;   $ )z
Check if the given tensor is a mutable buffer output
Args:
    tensor: EdgeIR Tensor that is being checked for mutable buffer output
c              3      #    U  HF  nUR                   S :H  =(       d+    UR                  R                  S:H  =(       a    [        U5      v   MH     g7f)r5   r6   N)r+   r/   r9   r:   ).0r;   s     r   	<genexpr>+is_mutable_buffer_output.<locals>.<genexpr>u   sM      
 , GGx &{{##y0 &%& ,s   AA)anyr7   r8   r!   r   r0   r,   s     r   is_mutable_buffer_outputrB   l   sV     	 
 ))+	
 	
 	Q KK<77IINNPPr   c                 Z    [        X5      (       a  U R                  S   R                  SL$ g)zp
Check if the given tensor is a constant

Args:
    tensor: EdgeIR Tensor that is being checked for graph input
r   NF)r   r   constantr,   s     r   is_constantrE      s,     F)){{5!**$66r   quant_infosc                 z   U(       Ga(  US   US   -
  nUS   S:  nU[         R                  " [         R                  5      R                  [         R                  " [         R                  5      R                  -
  ::  a'  U(       a  [         R
                  $ [         R                  $ U[         R                  " [         R                  5      R                  [         R                  " [         R                  5      R                  -
  ::  a'  U(       a  [         R                  $ [         R                  $ US   $ U R                  $ )N	quant_max	quant_minr   r   )	r   iinfoint8maxminuint8int16uint16r   )r(   rF   quant_rangeunsigneds       r   deduce_dtyperS      s     !+.[1II{+q0%++ejj155EJJ8O8S8SSS"*5;;:

:EKK4885;;u{{;S;W;WWW#+5<<<<7##<<r   r   )typingr   r   r   torch._export.utilsr   r   r   r   r	   r
   fxNodeexportExportedProgramboolr   r   r   r'   r-   r3   r:   rB   rE   r   rS    r   r   <module>r\      s   "  
((--',||'C'C	
((--',||'C'C
\\"-<<-$xx}}-<ALL<X<X-&	QHHMM	Q).)E)E	Q		QNHHMMN).)E)EN	N%((-- D  HHMM).)E)E	&HHMM).)E)E	( 9=LL'/~
[[r   