Ë
    ÝÍ:jv  ã                   ó^   — d dl 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	y	)
é   )ÚTENSOR_NAME_QUANT_SUFFIXÚQuantizedValueÚQuantizedValueTypeé   )ÚQuantOperatorBase)ÚQDQOperatorBasec                   ó.   ‡ — e Zd Zˆ fd„Zd„ Zˆ fd„Zˆ xZS )ÚGatherQuantc                 ó&   •— t         ‰| �  ||«       y ©N©ÚsuperÚ__init__©ÚselfÚonnx_quantizerÚ	onnx_nodeÚ	__class__s      €ú~/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/onnxruntime/quantization/operators/gather.pyr   zGatherQuant.__init__   ó   ø€ Ü‰Ñ˜¨Õ3ó    c                 ó²   — | j                   j                  | j                  «      sy| j                   j                  | j                  j                  d   «      S )NFé    )Ú	quantizerÚshould_quantize_nodeÚnodeÚis_valid_quantize_weightÚinput)r   s    r   Úshould_quantizezGatherQuant.should_quantize   s=   € Ø�~‰~×2Ñ2°4·9±9Ô=Øà�~‰~×6Ñ6°t·y±y·±ÀqÑ7IÓJÐJr   c                 ó  •— | j                   }|j                  dk(  sJ ‚| j                  j                  |dg«      \  }}}}|€t        ‰| �  «       S |j                  d   t        z   }t        |j                  d   ||d   |d   t        j                  «      }|| j                  j                  |j                  d   <   ||j                  d<   |d   |j                  d<   |j                  |«       | j                  xj                  |z  c_        y )NÚGatherr   )r   Úop_typer   Úquantize_activationr   ÚquantizeÚoutputr   r   r   ÚInputÚquantized_value_mapr   ÚappendÚ	new_nodes)	r   r   Úquantized_input_namesÚzero_point_namesÚscale_namesÚnodesÚgather_new_outputÚq_outputr   s	           €r   r$   zGatherQuant.quantize   s   ø€ Ø�y‰yˆØ�|‰|˜xÒ'Ð'Ð'ð �N‰N×.Ñ.¨t°a°SÓ9ñ	
Ø!ØØØà Ð(Ü‘7Ñ#Ó%Ð%à ŸK™K¨™NÔ-EÑEÐô "Ø�K‰K˜‰NØØ˜‰NØ˜QÑÜ×$Ñ$ó
ˆð >Fˆ�‰×*Ñ*¨4¯;©;°q©>Ñ:à*ˆ�‰�A‰Ø-¨aÑ0ˆ�
‰
�1‰Ø�‰�TÔà�‰× Ò  EÑ)Ö r   )Ú__name__Ú
__module__Ú__qualname__r   r   r$   Ú__classcell__©r   s   @r   r
   r
   
   s   ø„ ô4òK÷*ð *r   r
   c                   ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )Ú	QDQGatherc                 ó&   •— t         ‰| �  ||«       y r   r   r   s      €r   r   zQDQGather.__init__5   r   r   c                 ó€  — | j                   }|j                  dk(  s|j                  dk(  sJ ‚| j                  j                  |j                  d   «      s| j                  j
                  rj| j                  j                  |j                  d   «       | j                  j                  |j                  d   |j                  d   |j                  «       y | j                  j                  |j                  d   «      rB| j                  j                  |j                  d   |j                  d   |j                  «       y y )Nr!   ÚGatherElementsr   )r   r"   r   r   r   Úforce_quantize_no_input_checkÚquantize_activation_tensorÚquantize_output_same_as_inputr%   ÚnameÚis_tensor_quantized)r   r   s     r   r$   zQDQGather.quantize8   sä   € Ø�y‰yˆØ�|‰|˜xÒ'¨4¯<©<Ð;KÒ+KÐKÐKà�>‰>×2Ñ2°4·:±:¸a±=ÔAÀTÇ^Á^×EqÒEqØ�N‰N×5Ñ5°d·j±jÀ±mÔDØ�N‰N×8Ñ8¸¿¹ÀQ¹ÈÏÉÐTUÉÐX\×XaÑXaÕbØ�^‰^×/Ñ/°·
±
¸1±Ô>Ø�N‰N×8Ñ8¸¿¹ÀQ¹ÈÏÉÐTUÉÐX\×XaÑXaÕbð ?r   )r0   r1   r2   r   r$   r3   r4   s   @r   r6   r6   4   s   ø„ ô4öcr   r6   N)
Úquant_utilsr   r   r   Úbase_operatorr   Úqdq_base_operatorr   r
   r6   © r   r   ú<module>rC      s2   ðß VÑ VÝ ,Ý .ðô
'*Ð#ô '*ôTc�õ cr   