o
    
j                     @   sX   d dl Z ddlmZmZmZ ddlmZ ddlmZ G dd deZ	G d	d
 d
eZ
dS )    N   )QuantizedValueQuantizedValueTypeattribute_to_kwarg   )QuantOperatorBase)QDQOperatorBasec                       s(   e Zd Z fddZ fddZ  ZS )QSplitc                    s   t  || d S )N)super__init__)selfonnx_quantizer	onnx_node	__class__ [/home/kuhnn/.local/lib/python3.10/site-packages/onnxruntime/quantization/operators/split.pyr   	   s   zQSplit.__init__c                    s  | j }| j|dg\}}}}|d u rt  S d}|jr"|jd }i }|jD ]	}|t| q'g }	|j	D ]}
|
d }|	
| t|
||d |d tj}|| jj|
< q6t|jdkrf||jdd   tjj|j||	|fi |}|
| | j j|7  _d S )Nr    _quant	quantizedr   )node	quantizerquantize_activationr
   quantizename	attributeupdater   outputappendr   r   Inputquantized_value_mapleninputextendonnxhelper	make_nodeop_type	new_nodes)r   r   quantized_input_nameszero_point_namesscale_namesnodesquantized_node_namekwargsr   quantized_output_namesoutput_namequantized_output_nameq_outputquantized_noder   r   r   r      sH   






zQSplit.quantize)__name__
__module____qualname__r   r   __classcell__r   r   r   r   r	      s    r	   c                   @   s   e Zd Zdd ZdS )QDQSplitc                 C   sj   | j }|jdks
J | j|jd s| j|jd  | js1|jD ]}| j||jd |j	 q"d S d S )NSplitr   )
r   r'   r   is_tensor_quantizedr"   quantize_activation_tensordisable_qdq_for_node_outputr   quantize_output_same_as_inputr   )r   r   r   r   r   r   r   7   s   
zQDQSplit.quantizeN)r4   r5   r6   r   r   r   r   r   r8   6   s    r8   )r$   quant_utilsr   r   r   base_operatorr   qdq_base_operatorr   r	   r8   r   r   r   r   <module>   s    .