
     Ng                     z    d dl Z ddlmZmZmZmZmZ ddlmZ ddl	m
Z
  G d de          Z G d	 d
e
          ZdS )    N   )TENSOR_NAME_QUANT_SUFFIXQuantizedValueQuantizedValueTypeattribute_to_kwarg	ms_domain   )QuantOperatorBase)QDQOperatorBasec                   $     e Zd Zd Z fdZ xZS )QLinearWherec                     dS )NT )selfs    d/var/www/html/ai-engine/env/lib/python3.11/site-packages/onnxruntime/quantization/operators/where.pyshould_quantizezQLinearWhere.should_quantize	   s    t    c           	         | j         }|j        dk    sJ | j        j        s| j        xj        |gz  c_        d S | j                            |j        d                   \  }}}}}| j                            |ddg          \  }}}}	|r| t                      	                                S |j        d         t          z   }
|j        r
|j        dz   nd}t          |j        d         |
||t          j                  }|| j        j        |j        d         <   i }|j        D ]$}|                    t%          |                     %t&          |d<   |j        d         |d         |d         |d         |d         |d         |d         ||g	}t+          j        j        d||
g|fi |}| j        xj        |	z  c_        | j        xj        |gz  c_        d S )	NWherer   r	   r   _quant domainr   )nodeop_type	quantizerforce_quantize_no_input_check	new_nodes_get_quantization_paramsoutputquantize_activationsuperquantizer   namer   r   Inputquantized_value_map	attributeupdater   r   inputonnxhelper	make_node)r   r   
data_foundoutput_scale_nameoutput_zp_name_q_input_nameszero_point_namesscale_namesnodesqlinear_outputqlinear_output_nameq_outputkwargsr&   qlwhere_inputsqlwhere_node	__class__s                    r   r"   zQLinearWhere.quantize   s   y|w&&&&~; 	N$$.$$F N33DKNCC	
 N..taV<<	
 	&]277##%%%Q*BB6:iGdi(22R!KN$
 
 >F*4;q>: 	9 	9IMM,Y778888$x JqM!NQ!NQ

 {,N^,<>Q
 
U[
 
 	  E)    \N2    r   )__name__
__module____qualname__r   r"   __classcell__)r:   s   @r   r   r      sG          63 63 63 63 63 63 63 63 63r   r   c                       e Zd Zd ZdS )QDQWherec                    | j         }|j        dk    sJ | j        j        r| j                            |j        d                   s%| j                            |j        d                    | j                            |j        d                   s%| j                            |j        d                    | j        s$|j        D ]}| j                            |           d S d S | j                            |j        d                   rP| j                            |j        d                   r-| j        s(|j        D ]"}| j                            |           d S d S d S d S )Nr   r	   r   )	r   r   r   r   is_tensor_quantizedr(   quantize_activation_tensordisable_qdq_for_node_outputr   )r   r   r   s      r   r"   zQDQWhere.quantizeF   s   y|w&&&&>7 	B>55djmDD I99$*Q-HHH>55djmDD I99$*Q-HHH3 F"k F FFN==fEEEEF FF F N..tz!}==	B224:a=AA	B 4	B
 + B B99&AAAA	B 	B 	B 	B 	B 	B
B Br   N)r;   r<   r=   r"   r   r   r   r@   r@   E   s(        B B B B Br   r@   )r)   quant_utilsr   r   r   r   r   base_operatorr
   qdq_base_operatorr   r   r@   r   r   r   <module>rH      s     u u u u u u u u u u u u u u , , , , , , . . . . . .:3 :3 :3 :3 :3$ :3 :3 :3zB B B B B B B B B Br   