
    Vh2                     >   d dl Z d dlZd dlZd dlmZmZ d dlmZ d dlm	Z	m
Z
  e j                  e      Zej                  e j                         dgZej"                  j$                  j&                  j(                  ej"                  j$                  j&                  j*                  ej"                  j$                  j,                  j(                  gZej"                  j$                  j0                  j(                  ej"                  j$                  j0                  j*                  ej"                  j$                  j2                  j(                  gZdej6                  j8                  dej6                  j:                  dej6                  j:                  fd	Z G d
 de	      Zy)    N)_filter_sym_size_users_is_valid_annotation)map_arg)PassBase
PassResultDuplicateDQPassgmdq_nodeuserc                    |j                   j                  dd       }t        |      sy | j                  j	                        5  | j                  j                        dt        j                  j                  dt        j                  j                  ffd}t        |j                  |      }t        |j                  |      }||_
        ||_        d d d        y # 1 sw Y   y xY w)Nquantization_annotationnreturnc                     | k(  rS | S )N )r   r
   new_nodes    \/home/dcms/DCMS/lib/python3.12/site-packages/torch/ao/quantization/pt2e/duplicate_dq_pass.pymaybe_replace_nodez/_maybe_duplicate_dq.<locals>.maybe_replace_node)   s    G|    )metagetr   graphinserting_after	node_copytorchfxNoder   argskwargs)r	   r
   r   
annotationr   new_args
new_kwargsr   s    `     @r   _maybe_duplicate_dqr#       s     8$?J
+		!	!'	* !88%%g.	%((-- 	EHHMM 	 499&89T[[*<=
	 ! ! !s   BC  C)c                   D    e Zd Zdej                  j
                  defdZy)r   graph_moduler   c                    |j                   j                  D ]w  }|j                  dk(  s|j                  t        v s't        |      }t        |      dk  rA|j                  d   }|j                  dk(  r|j                  t        v r|j                  d   }t        |t        j                  j                  j                        r|j                  dk(  r|j                  t        j                  k(  r|j                  d   }t        |t        j                  j                  j                        rL|j                  dk(  r=|j                  t        j                   j"                  j$                  j&                  k(  rd|D ]  }t)        |||        z |j                   j+                          |j-                          t/        |d      S )Ncall_function   r   T)r   nodesoptarget_DEQUANTIZE_OPSr   lenr   _QUANTIZE_OPS
isinstancer   r   noder   operatorgetitemopsquantized_decomposedchoose_qparamstensorr#   eliminate_dead_code	recompiler   )selfr%   r0   dq_usersq_nodegetitem_nodechoose_qparam_noder   s           r   callzDuplicateDQPass.call6   si    &&,, 	BDww/)dkk_.L1$7x=A% 199/FMM]4R#);;q>L"<1C1CD(OO>(//83C3CC-9->->q-A*&'9588==;M;MN 2 5 5 H 2 9 9$yy==LLSS!T %$ BD'dDAB/	B2 	..0 ,--r   N)__name__
__module____qualname__r   r   GraphModuler   r>   r   r   r   r   r   5   s    .!5!5 .* .r   ) loggingr1   r    torch.ao.quantization.pt2e.utilsr   r   torch.fx.noder   torch.fx.passes.infra.pass_baser   r   	getLoggerr?   loggersetLevelWARNING__all__r3   r4   quantize_per_tensordefaultr6   quantize_per_channelr.   dequantize_per_tensordequantize_per_channelr,   r   rB   r   r#   r   r   r   r   <module>rQ      s2      " @ 
		8	$   
 
II""66>>	II""66==	II""77?? 
II""88@@	II""88??	II""99AA!!',xx}}!<AHHMM!*.h .r   