+
    "Ý³j�?  ã                  ó°  € ^ RI Ht ^ RIt^ RIt^ RIt^ RIHtHtHtH	t	 ^ RI
t
^ RIHt ^ RIHu Ht ^ RIHt ^ RIHtHtHtHtHtHtHtHt ^ RIHtHtH t  ^ RI!H"t"H#t#H$t$H%t%H&t&H't' ]'       d   ^ RI(H)t) ^ R	IH*t* R
R.t+R R lt,R R lt-R R lt.R R lt/]P`                  RR R ll4       t1R R lt2R R lt3R R lt4]! RR7       ! R R
]4      4       t5R# ) é    )ÚannotationsN)ÚTYPE_CHECKINGÚAnyÚCallableÚOptional)Úcompatibility)ÚFakeQuantizeÚFusedMovingAvgObsFakeQuantizeÚHistogramObserverÚMinMaxObserverÚMovingAverageMinMaxObserverÚ%MovingAveragePerChannelMinMaxObserverÚPerChannelMinMaxObserverÚPlaceholderObserver)ÚQuantizationSpecÚ	QuantizerÚget_module_name_filter)ÚOP_TO_ANNOTATORÚOperatorConfigÚOperatorPatternTypeÚQuantizationConfigÚ_convert_scalars_to_attrsÚpropagate_annotation)ÚNode)Ú"_ObserverOrFakeQuantizeConstructorÚXNNPACKQuantizerÚ!get_symmetric_quantization_configc               ó    € V ^8„  d   QhRRRR/# )é   Úfunctionr   Úreturnztorch.fx.Graph© )Úformats   "Úh/home/luca/screen-checking/.venv/lib/python3.14/site-packages/torchao/testing/pt2e/_xnnpack_quantizer.pyÚ__annotate__r%   8   s   € ÷ ñ  ð °^ñ ó    c                óŠ   € \         P                  ! V R R7      ! V!  w  r#VP                  P                  4        VP                  # )T)Ú
aten_graph)ÚtorchdynamoÚexportÚgraphÚeliminate_dead_code)r    ÚinputsÚgmÚ_s   &&  r$   Ú_get_dynamo_graphr0   8   s4   € Ü×Ò˜x°DÕ9¸6ÑB�E€BØ‡H�H× Ñ Ô"Ø�8‰8€Or&   c               ó   € V ^8„  d   QhRR/# )r   Ú
input_sizez	list[int]r"   )r#   s   "r$   r%   r%   >   s   € ÷ -ñ - Yñ -r&   c                óä   € V R,          p^p\         P                  ! W!34      p\         P                  ! V34      p\         P                  ! V 4      pRR lp\        WeW434      p\        WeV34      pWx.# )é   c                ó0   € \         P                  ! WV4      # ©N)ÚFÚlinear)ÚactÚweightÚbiass   &&&r$   Ú	linear_opÚ'_get_linear_patterns.<locals>.linear_opE   s   € Ü�xŠx˜ TÓ*Ð*r&   éÿÿÿÿr6   )ÚtorchÚonesr0   )	r2   Úin_channelsÚout_channelsr:   r;   r9   r<   Úpattern_w_biasÚpattern_wo_biass	   &        r$   Ú_get_linear_patternsrE   >   sl   € Ø˜R•.€KØ€LÜ�ZŠZ˜Ð3Ó4€FÜ�:Š:�|�oÓ&€DÜ
�*Š*�ZÓ
 €Cô+ô ' y¸Ð2EÓF€NÜ'¨	¸°=ÓA€OØÐ,Ð,r&   c               ó   € V ^8„  d   QhRR/# )r   r!   z$dict[str, list[OperatorPatternType]]r"   )r#   s   "r$   r%   r%   M   s   € ÷ .ñ .Ð2Vñ .r&   c            	     óR  € R \         P                  P                  \         P                  P                  .\         P                  P                  \        P
                  .\        P                  \         P                  P                  .\        P                  \        P
                  ..R\         P                  P                  .\        P                  ..R\         P                  ..R\         P                  P                  .\        P                  ../p \        P                  ! V 4      # )Úconv2dr8   ÚaddÚadaptive_avg_pool2d)r?   ÚnnÚConv2dÚReLUr7   ÚrelurH   ÚLinearr8   rI   ÚAdaptiveAvgPool2drJ   ÚcopyÚdeepcopy)Úsupported_operatorss    r$   Ú(_supported_symmetric_quantized_operatorsrT   M   sÅ   € ð 	Ü�X‰X�_‰_œeŸh™hŸm™mÐ,Ü�X‰X�_‰_œaŸf™fÐ%Ü�X‰X”u—x‘x—}‘}Ð%Ü�X‰X”q—v‘vÐð	
ð 	”E—H‘H—O‘OÐ$¤q§x¡x jÐ1Ø”—‘�ˆ}ØÜ�X‰X×'Ñ'Ð(Ü×"Ñ"Ð#ð 
ðAÐô  �=Š=Ð,Ó-Ð-r&   c               ó   € V ^8„  d   QhRR/# ©r   r!   zlist[OperatorConfig]r"   )r#   s   "r$   r%   r%   a   s   € ÷ 9ñ 9Ð7Kñ 9r&   c                 ó  a€ . p \        4       \        R R7      \        R R7      \        R R R7      3 F6  o\        4       pV P                  V3R lVP                  4        4       4       K8  	  \        P
                  ! V 4      # )T)Úis_qat)Úis_per_channel)rY   rX   c              3  ó<   <"  € T F  p\        SV4      x € K  	  R # 5ir6   )r   )Ú.0Úpattern_listÚquantization_configs   & €r$   Ú	<genexpr>Ú@_get_supported_symmetric_config_and_operators.<locals>.<genexpr>j   s#   øé € ð .
á ,�ô Ð.°×=Ð=Û ,ùs   ƒ)r   rT   ÚextendÚvaluesrQ   rR   )Úsupported_config_and_operatorsÚopsr]   s     @r$   Ú-_get_supported_symmetric_config_and_operatorsrd   a   ss   ø€ Ø;=Ð"ä)Ó+Ü)°Ô6Ü)¸Ô>Ü)¸ÀdÔKó	 Ðô 7Ó8ˆØ&×-Ñ-ô .
à #§
¡
¤ó.
ö 	
ñ ô �=Š=Ð7Ó8Ð8r&   Fc               ó4   € V ^8„  d   QhRRRRRRRRRRRRR	R/# )
r   rY   ÚboolrX   Ú
is_dynamicÚact_qminÚintÚact_qmaxÚweight_qminÚweight_qmaxr"   )r#   s   "r$   r%   r%   r   sW   € ÷ Rñ RØðRàðRð ðRð ð	Rð
 ðRð ðRð ñRr&   c                óÖ  € R R/pV'       d2   V'       d#   \         p\        P                  ! ^R7      p	W—R&   M\        pMV'       d   \        pM\
        p\        \        P                  VV\        P                  VVP                  ! R/ VB R7      p
V '       d   \        P                  M\        P                  p\        pV'       d   \        pMV '       d   \        pR R/pV'       d)   V\        P                  8X  d   \        VR&   M	\        VR&   \        \        P                  VVV^ RVP                  ! R/ VB R7      pRpV'       d   \        V
RVVV4      pV# \        V
V
VVV4      pV# )	Úeps)Úaveraging_constantÚobserver)ÚdtypeÚ	quant_minÚ	quant_maxÚqschemerg   Úobserver_or_fake_quant_ctrF)rq   rr   rs   rt   Úch_axisrg   ru   Ng      0?r"   )r	   r   Ú	with_argsr
   r   r   r   r?   Úint8Úper_tensor_affineÚper_channel_symmetricÚper_tensor_symmetricr   r   r   r   )rY   rX   rg   rh   rj   rk   rl   Ú
extra_argsÚact_observer_or_fake_quant_ctrÚdynamic_quant_observerÚact_quantization_specÚweight_qschemeÚ!weight_observer_or_fake_quant_ctrÚweight_quantization_specÚbias_quantization_specr]   s   &&&&&&&         r$   r   r   q   st  € ð #(¨ €JßßÜ-9Ð*Ü%@×%JÒ%JØ#$ô&Ð"ð &<�zÒ"ä-JÑ*çÜ-@Ñ*ä->Ð*ä,Ü�j‰jØØÜ×'Ñ'ØØ#A×#KÒ#Kñ $
Øñ$
ô	Ð÷ (6Œ×#Ò#¼5×;UÑ;Uð ô 	ð &÷ ä,IÑ)ß	Ü,DÐ)à"'¨ €JßØœU×7Ñ7Ô7Ü%@ˆJ�zÒ"ä%JˆJ�zÑ"Ü/Ü�j‰jØØØØØØ#D×#NÒ#Nñ $
Øñ$
ô
 Ðð "ÐßÜ0Ø!ØØ$Ø"Øó
Ðð Ðô 1Ø!Ø!Ø$Ø"Øó
Ðð Ðr&   c               ó   € V ^8„  d   QhRR/# rV   r"   )r#   s   "r$   r%   r%   Ç   s   € ÷ ;ñ ;Ð-Añ ;r&   c                 ó   € \        4       # r6   )rd   r"   r&   r$   Ú#_get_supported_config_and_operatorsr†   Ç   s   € Ü8Ó:Ð:r&   c               ó   € V ^8„  d   QhRR/# )r   Útpr   r"   )r#   s   "r$   r%   r%   Ë   s   € ÷ ñ  ñ r&   c                ób   a€ V P                   R,           V P                  ,           oR V3R llpV# )aü  Get the module_type_filter function for a given module type, the filter accepts
a node and checks if the node comes from a module that has certain module type

For example:
    node: linear_op = call_function[...](...)  # comes from a module with type Block -> Sub -> Linear


>> module_type_filter = _get_module_type_filter(Sub)  # submodule with type `Sub`, under the `Block` submodule
>> print(module_type_filter(node))
True  # the node is from the submodule `Sub` (same for `Block` and `Linear` as well)
Ú.c               ó    € V ^8„  d   QhRRRR/# ©r   Únr   r!   rf   r"   )r#   s   "r$   r%   Ú-_get_module_type_filter.<locals>.__annotate__Ú   s   € ÷ ñ ˜dð  tñ r&   c                ó  <€ V P                   P                  R / 4      p. pVP                  4        FP  w  r4\        V\        4      '       d%   VP
                  R,           VP                  ,           pVP                  V4       KR  	  SV9   # )Únn_module_stackrŠ   )ÚmetaÚgetra   Ú
isinstanceÚtypeÚ
__module__Ú__qualname__Úappend)r�   r�   Útypesr/   ÚtÚtp_strs   &    €r$   Úmodule_type_filterÚ3_get_module_type_filter.<locals>.module_type_filterÚ   sq   ø€ ð
 Ÿ&™&Ÿ*™*Ð%6¸Ó;ˆØˆØ#×*Ñ*Ö,‰DˆAô ˜!œT×"Ò"Ø—L‘L 3Õ&¨¯©Õ7�Ø�L‰L˜ŽOñ -ð ˜‰Ðr&   )r•   r–   )rˆ   r›   rš   s   & @r$   Ú_get_module_type_filterr�   Ë   s.   ø€ ð �]‰]˜SÕ  2§?¡?Õ2€F÷ð ð Ðr&   c               ó$   € V ^8„  d   QhRRRRRR/# )r   Útp_listzlist[Callable]Úmodule_name_listz	list[str]r!   zCallable[[Node], bool]r"   )r#   s   "r$   r%   r%   ì   s$   € ÷ 	*ñ 	*Øð	*Ø/8ð	*àñ	*r&   c                óž   aa€ V  Uu. uF  p\        V4      NK  	  upoV Uu. uF  p\        V4      NK  	  upoR  VV3R llpV# u upi u upi )c               ó    € V ^8„  d   QhRRRR/# rŒ   r"   )r#   s   "r$   r%   Ú9_get_not_module_type_or_name_filter.<locals>.__annotate__ò   s   € ÷ Uñ U¨$ð U°4ñ Ur&   c                ó´   <a € \         ;QJ d0    V 3R  lSS,            4       F  '       g   K   R'       * # 	  R'       * # ! V 3R  lSS,            4       4      '       * # )c              3  ó2   <"  € T F  q! S4      x € K  	  R # 5ir6   r"   )r[   Úfr�   s   & €r$   r^   Ú^_get_not_module_type_or_name_filter.<locals>.not_module_type_or_name_filter.<locals>.<genexpr>ó   s   øé € ÐTÑ%S �q˜—t�tÓ%Sùs   ƒTF)Úany)r�   Úmodule_name_list_filtersÚmodule_type_filterss   f€€r$   Únot_module_type_or_name_filterÚK_get_not_module_type_or_name_filter.<locals>.not_module_type_or_name_filterò   sC   ù€ ß“3ÔTÐ%8Ð;SÖ%SÓT—3”3ÔTÐT’3ÔTÐT�3ÔTÐ%8Ð;SÖ%SÓTÓTÔTÐTr&   )r�   r   )rŸ   r    rˆ   Úmr«   r©   rª   s   &&   @@r$   Ú#_get_not_module_type_or_name_filterr®   ì   s\   ù€ ñ BIÓIÁ¸2Ô2°2Ö6ÁÑIÐÙCSÓTÑCS¸aÔ 6°qÖ 9ÑCSÑTÐ÷Uñ Uð *Ð)ùò JùÚTs
   ‡A¢A
)Úis_backward_compatiblec                  ó$  a € ] tR t^øtRt]! 4       t. R"Ot. R#OtR.t	R V 3R llt
]R R l4       t]R R l4       tR	 R
 ltR R ltR R ltR R ltR R ltR R ltR$R R lltR$R R lltR R ltR R ltR R lt]R R  l4       tR!tV ;t# )%r   zæ
!!! DEPRECATED !!!
XNNPACKQuantizer is a marked as deprected. It will be removed in the future.
It has been moved to executorch.backends.xnnpack.quantizer.xnnpack_quantizer.XNNPACKQuantizer.
Please use the new quantizer instead.
r8   c               ó   € V ^8„  d   QhRR/# )r   r!   ÚNoner"   )r#   s   "r$   r%   ÚXNNPACKQuantizer.__annotate__  s   € ÷ Nñ N˜$ñ Nr&   c                	ó¶   <€ \         SV `  4        \        P                  ! V P                  P
                   R 24       RV n        / V n        / V n        / V n	        R# )z is deprecated!N)
ÚsuperÚ__init__ÚwarningsÚwarnÚ	__class__Ú__name__Úglobal_configÚoperator_type_configÚmodule_type_configÚmodule_name_config)Úselfr¹   s   &€r$   r¶   ÚXNNPACKQuantizer.__init__  sU   ø€ Ü‰ÑÔÜ�Š˜Ÿ™×0Ñ0Ð1°ÐAÔBØ;?ˆÔð ð 	Ô!ð QSˆÔØKMˆÖr&   c               ó   € V ^8„  d   QhRR/# )r   r!   zlist[QuantizationConfig]r"   )r#   s   "r$   r%   r³   *  s   € ÷  ñ  Ð3Kñ  r&   c                	ób   € V P                    UUu0 uF  w  rVkK	  	  ppp\        V4      # u uppi r6   )rb   Úlist)ÚclsÚspecr/   Ú
op_configss   &   r$   Ú"get_supported_quantization_configsÚ3XNNPACKQuantizer.get_supported_quantization_configs)  s;   € ð !$× BÒ Bô/
Ù B‘W�T‹DÑ Bð 	ñ /
ô �JÓÐùó/
s   �+c               ó    € V ^8„  d   QhRRRR/# )r   r]   úOptional[QuantizationConfig]r!   zlist[OperatorPatternType]r"   )r#   s   "r$   r%   r³   1  s   € ÷ ñ Ø">ðà	"ñr&   c                	ó    € Vf+   . pV P                    F  w  r4VP                  V4       K  	  V# V P                    F  w  rTWQ8X  g   K  Vu # 	  . # r6   )rb   r`   )rÄ   r]   Úall_opsr/   rc   Úconfigs   &&    r$   Ú.get_supported_operator_for_quantization_configÚ?XNNPACKQuantizer.get_supported_operator_for_quantization_config0  sX   € ð Ò&ØˆGØ×<Ô<‘�Ø—‘˜sÖ#ñ =àˆNà×=Ô=‰KˆFð Ö,Ø’
ñ >ð ˆ	r&   c               ó    € V ^8„  d   QhRRRR/# )r   r]   r   r!   r   r"   )r#   s   "r$   r%   r³   D  s   € ÷ ñ Ð.@ð ÐEUñ r&   c                	ó   € Wn         V # r6   )r»   )r¿   r]   s   &&r$   Ú
set_globalÚXNNPACKQuantizer.set_globalD  s   € Ø0ÔØˆr&   c               ó$   € V ^8„  d   QhRRRRRR/# )r   Úoperator_typeztorch._ops.OpOverloadPacketr]   r   r!   r   r"   )r#   s   "r$   r%   r³   H  s(   € ÷ ñ à2ðð 0ðð 
ñ	r&   c                	ó"   € W P                   V&   V # r6   )r¼   )r¿   rÕ   r]   s   &&&r$   Úset_operator_typeÚ"XNNPACKQuantizer.set_operator_typeH  s   € ð
 4G×!Ñ! -Ñ0Øˆr&   c               ó    € V ^8„  d   QhRRRR/# )r   Úmodule_typer   r]   r   r"   )r#   s   "r$   r%   r³   P  s   € ÷ ñ Ø#ðØ:Lñr&   c                ó"   € W P                   V&   V # )a  Set quantization_config for a submodule with type: `module_type`, for example:
quantizer.set_module_name(Sub) or quantizer.set_module_name(nn.Linear), it will quantize all supported operator/operator
patterns in the submodule with this module type with the given `quantization_config`
)r½   )r¿   rÚ   r]   s   &&&r$   Úset_module_typeÚ XNNPACKQuantizer.set_module_typeP  s   € ð 0C×Ñ Ñ,Øˆr&   c               ó    € V ^8„  d   QhRRRR/# )r   Úmodule_nameÚstrr]   rÊ   r"   )r#   s   "r$   r%   r³   Z  s   € ÷ ñ ØðØ5Qñr&   c                ó8   € Vf   Q R4       hW P                   V&   V # )zþSet quantization_config for a submodule with name: `module_name`, for example:
quantizer.set_module_name("blocks.sub"), it will quantize all supported operator/operator
patterns in the submodule with this module name with the given `quantization_config`
z1 quantization_config == None is not supported yet)r¾   )r¿   rß   r]   s   &&&r$   Úset_module_nameÚ XNNPACKQuantizer.set_module_nameZ  s0   € ð #Ò.ð 	
Ø?ó	
Ð.ð 0C×Ñ Ñ,Øˆr&   c               ó    € V ^8„  d   QhRRRR/# ©r   Úmodelútorch.fx.GraphModuler!   r"   )r#   s   "r$   r%   r³   g  s   € ÷ 0ñ 0Ø)ð0à	ñ0r&   c                ó   € \        V4      # )z-Transforms scalar values to tensor attributes)r   ©r¿   ræ   s   &&r$   Útransform_for_annotationÚ)XNNPACKQuantizer.transform_for_annotationg  s   € ô )¨Ó/Ð/r&   c               ó    € V ^8„  d   QhRRRR/# rå   r"   )r#   s   "r$   r%   r³   m  s   € ÷ ñ Ð2ð Ð7Kñ r&   c                óÒ   € V P                   '       d9   V P                   P                  P                  '       d   V P                  V4      pMV P	                  V4      p\        V4       V# )z!just handling global spec for now)r»   Úinput_activationrg   Ú)_annotate_for_dynamic_quantization_configÚ(_annotate_for_static_quantization_configr   ré   s   &&r$   ÚannotateÚXNNPACKQuantizer.annotatem  sT   € ð ××Ð $×"4Ñ"4×"EÑ"E×"P×"PÐ"PØ×BÑBÀ5ÓI‰Eà×AÑAÀ%ÓHˆEÜ˜UÔ#Øˆr&   c               ó(   € V ^8„  d   QhRRRRRRRR/# ©r   ræ   rç   r]   rÊ   Ú	filter_fnz Optional[Callable[[Node], bool]]r!   r"   )r#   s   "r$   r%   r³   w  s2   € ÷ ñ à#ðð :ðð 4ð	ð
 
ñr&   c                	óÒ   € Vf   V# VP                   '       d(   V P                   F  p\        V,          ! WV4       K  	  V P                   F  p\        V,          ! WV4       K  	  V# r6   )rX   ÚSTATIC_QAT_ONLY_OPSr   Ú
STATIC_OPS©r¿   ræ   r]   rõ   Úops   &&&& r$   Ú_annotate_all_static_patternsÚ.XNNPACKQuantizer._annotate_all_static_patternsw  s\   € ð Ò&ØˆLà×%×%Ð%Ø×.Ô.�Ü Ö# EÀ	ÖJñ /à—/”/ˆBÜ˜BÖ ¸IÖFñ "àˆr&   c               ó(   € V ^8„  d   QhRRRRRRRR/# rô   r"   )r#   s   "r$   r%   r³   ˆ  s2   € ÷ ñ à#ðð :ðð 4ð	ð
 
ñr&   c                	ó`   € Vf   V# V P                    F  p\        V,          ! WV4       K  	  V# r6   )ÚDYNAMIC_OPSr   rù   s   &&&& r$   Ú_annotate_all_dynamic_patternsÚ/XNNPACKQuantizer._annotate_all_dynamic_patternsˆ  s3   € ð Ò&ØˆLà×"Ô"ˆBÜ˜BÖ ¸IÖFñ #àˆr&   c               ó    € V ^8„  d   QhRRRR/# rå   r"   )r#   s   "r$   r%   r³   –  ó   € ÷ ñ Ø)ðà	ñr&   c                	óÖ  € \        V P                  P                  4       4      pV P                  P                  4        F   w  r4V P	                  W\        V4      4       K"  	  \        V P                  P                  4       4      pV P                  P                  4        F   w  rdV P	                  W\        V4      4       K"  	  V P	                  VV P                  \        WR4      4       V# r6   )
rÃ   r¾   ÚkeysÚitemsrû   r   r½   r�   r»   r®   ©r¿   ræ   r    rß   rÍ   rŸ   rÚ   s   &&     r$   rð   Ú9XNNPACKQuantizer._annotate_for_static_quantization_config–  sÐ   € ô   × 7Ñ 7× <Ñ <Ó >Ó?ÐØ#'×#:Ñ#:×#@Ñ#@Ö#BÑˆKØ×.Ñ.ØÔ5°kÓBöñ $Cô
 �t×.Ñ.×3Ñ3Ó5Ó6ˆØ#'×#:Ñ#:×#@Ñ#@Ö#BÑˆKØ×.Ñ.ØÔ6°{ÓCöñ $Cð
 	×*Ñ*ØØ×ÑÜ/°ÓJô	
ð
 ˆr&   c               ó    € V ^8„  d   QhRRRR/# rå   r"   )r#   s   "r$   r%   r³   ¬  r  r&   c                	óÖ  € \        V P                  P                  4       4      pV P                  P                  4        F   w  r4V P	                  W\        V4      4       K"  	  \        V P                  P                  4       4      pV P                  P                  4        F   w  rdV P	                  W\        V4      4       K"  	  V P	                  VV P                  \        WR4      4       V# r6   )
rÃ   r¾   r  r  r   r   r½   r�   r»   r®   r  s   &&     r$   rï   Ú:XNNPACKQuantizer._annotate_for_dynamic_quantization_config¬  sÐ   € ô   × 7Ñ 7× <Ñ <Ó >Ó?ÐØ#'×#:Ñ#:×#@Ñ#@Ö#BÑˆKØ×/Ñ/ØÔ5°kÓBöñ $Cô
 �t×.Ñ.×3Ñ3Ó5Ó6ˆØ#'×#:Ñ#:×#@Ñ#@Ö#BÑˆKØ×/Ñ/ØÔ6°{ÓCöñ $Cð
 	×+Ñ+ØØ×ÑÜ/°ÓJô	
ð
 ˆr&   c               ó    € V ^8„  d   QhRRRR/# )r   ræ   rç   r!   r²   r"   )r#   s   "r$   r%   r³   Â  s   € ÷ ñ Ð2ð °tñ r&   c                	ó   € R # r6   r"   ré   s   &&r$   ÚvalidateÚXNNPACKQuantizer.validateÂ  s   € Ùr&   c               ó   € V ^8„  d   QhRR/# rV   r"   )r#   s   "r$   r%   r³   Æ  s   € ÷ 2ñ 2Ð(<ñ 2r&   c                	ó   € V P                   # r6   )rb   )rÄ   s   &r$   Úget_supported_operatorsÚ(XNNPACKQuantizer.get_supported_operatorsÅ  s   € à×1Ñ1Ð1r&   )r»   r¾   r½   r¼   )Úconv_bn_reluÚconv_bnÚconv_transpose_bn_reluÚconv_transpose_bn)Úlinear_relur8   Ú	conv_reluÚconvÚconv_transpose_relurJ   Úgru_io_onlyÚadd_relurI   Úmul_reluÚmulÚcatr6   )rº   r•   r–   Ú__firstlineno__Ú__doc__r†   rb   r÷   rø   rÿ   r¶   ÚclassmethodrÇ   rÎ   rÒ   r×   rÜ   râ   rê   rñ   rû   r   rð   rï   r  r  Ú__static_attributes__Ú__classcell__)r¹   s   @r$   r   r   ø   s®   ø† ññ &IÓ%JÐ"òÐò€Jð" 	ð€K÷Nð Nð ô ó ð ð ôó ðõ&õõõõ0õ÷÷"õõ,õ,ð ô2ó ö2r&   )FFFi€ÿÿÿé   i�ÿÿÿr&  )6Ú
__future__r   rQ   Ú	functoolsr·   Útypingr   r   r   r   r?   Útorch._dynamoÚ_dynamor)   Útorch.nn.functionalrK   Ú
functionalr7   Útorch.fx._compatibilityr   Útorchao.quantization.pt2er	   r
   r   r   r   r   r   r   Ú#torchao.quantization.pt2e.quantizerr   r   r   Ú-torchao.testing.pt2e._xnnpack_quantizer_utilsr   r   r   r   r   r   Útorch.fxr   r   Ú__all__r0   rE   rT   rd   Ú	lru_cacher   r†   r�   r®   r   r"   r&   r$   Ú<module>r5     sÉ   ðõ #ã Û Û ß 9Ó 9ã Ý #ß Ð Ý 1÷	÷ 	ó 	÷ñ ÷
÷ ÷ ÝåLð Ø'ð€õõ-õ.õ(9ð  ×ÑöRó ðRõj;õõB	*ñ  eÔ,ôN2�yó N2ó -òN2r&   