o
    
j	                     @   sP   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 de
ZdS )	    N)onnx_pb   )TENSOR_NAME_QUANT_SUFFIXQuantizedValueQuantizedValueTypeattribute_to_kwarg	ms_domain   )QuantOperatorBasec                       s(   e Zd Z fddZ fddZ  ZS )QLinearBinaryOpc                    s   t  || d S )N)super__init__)selfonnx_quantizer	onnx_node	__class__ _/home/kuhnn/.local/lib/python3.10/site-packages/onnxruntime/quantization/operators/binary_op.pyr   	   s   zQLinearBinaryOp.__init__c                    sp  | j }| j|jd \}}}}}| j|ddg\}}}}	|r$|d u r)t  S |jd t }
|jr8|jd nd}i }|j	D ]	}|
t| q?t|d< g }||d  ||d  ||d  ||d  ||d  ||d  || || tjjd|j ||
g|fi |}|	| t|jd |
||tj}|| jj|jd < | j j|	7  _d S )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   r   r   r      sb   




zQLinearBinaryOp.quantize)__name__
__module____qualname__r   r   __classcell__r   r   r   r   r      s    r   )r#   r   
onnx_protoquant_utilsr   r   r   r   r   base_operatorr
   r   r   r   r   r   <module>   s
    