
    g	                     V    d dl Z d dl mZ ddlmZmZmZmZmZ ddl	m
Z
  G d de
      Zy)	    N)onnx_pb   )TENSOR_NAME_QUANT_SUFFIXQuantizedValueQuantizedValueTypeattribute_to_kwarg	ms_domain   )QuantOperatorBasec                   (     e Zd Z fdZ fdZ xZS )QLinearBinaryOpc                 &    t         |   ||       y )N)super__init__)selfonnx_quantizer	onnx_node	__class__s      a/var/www/openai/venv/lib/python3.12/site-packages/onnxruntime/quantization/operators/binary_op.pyr   zQLinearBinaryOp.__init__	   s    3    c                 P   | j                   }| j                  j                  |j                  d         \  }}}}}| j                  j	                  |ddg      \  }}}}	|r|t
        |          S |j                  d   t        z   }
|j                  r|j                  dz   nd}i }|j                  D ]  }|j                  t        |              t        |d<   g }|j                  |d          |j                  |d          |j                  |d          |j                  |d          |j                  |d          |j                  |d          |j                  |       |j                  |       t        j                  j                   d|j"                  z   ||
g|fi |}|	j                  |       t%        |j                  d   |
||t&        j(                        }|| j                  j*                  |j                  d   <   | j                  xj,                  |	z  c_        y )Nr   r
   _quant domainQLinear)node	quantizer_get_quantization_paramsoutputquantize_activationr   quantizer   name	attributeupdater   r	   appendonnxhelper	make_nodeop_typer   r   Inputquantized_value_map	new_nodes)r   r   
data_foundoutput_scale_nameoutput_zp_name_quantized_input_nameszero_point_namesscale_namesnodesqlinear_binary_math_outputqlinear_binary_math_namekwargsr#   qlinear_binary_math_inputsqlinear_binary_math_nodeq_outputr   s                    r   r!   zQLinearBinaryOp.quantize   s   yy NN33DKKNC	
 NN..taV<	
!2:7#%%%)[[^6N%N";?99499x#7" IMM,Y78 ($x%'""))*?*BC"))+a.9"))*:1*=>"))*?*BC"))+a.9"))*:1*=> 	#))*;<")).9#';;#8#8$&'($	$

 $
  	-. "KKN&$$
 >F**4;;q>:  E) r   )__name__
__module____qualname__r   r!   __classcell__)r   s   @r   r   r      s    4<* <*r   r   )r&   r   
onnx_protoquant_utilsr   r   r   r   r	   base_operatorr   r    r   r   <module>rC      s#     & u u ,@*' @*r   