
    `i|G                        d dl Z d dlmZmZ d dlZd dlmc mc mZ	 d dl
mc mc mc mZ d dlmc mc mc mZ d dlmc mc mc mc mZ d dlmc mc mZ d dlmc mc mc mZ d dlmc mc mZ d dlmc mc mc mZ d dlmc mc mc mZ d dlmc mc m Z  d dl!mZ d dl"mc m#Z$ d dl%m&Z& ddl'm(Z( ej)        j        Z*de+e,e-e(         f         fdZ.de+e,e-e(         f         d	e(dee,         fd
Z/de+e,e-e(         f         d	e(dee(         ddfdZ0de+e,e-e(         f         fdZ1de+e,e-e(         f         fdZ2dS )    N)CallableOptional)get_native_backend_config   )NSNodeTargetTypereturnc                     g t           j        ht           j        ht           j        ht          j        ht          j        ht          j        ht           j        ht          j	        ht           j
        t          j        ht           j        t          j        j        j        ht           j        t          j        j        j        ht           j        t          j        ht           j        t          j        ht           j        t          j        ht           j        ht          j        t6          j        ht          j        ht          j        t6          j        ht          j        t           j        ddt          j        ht           j         t          j!        ht           j"        t          j#        ht           j$        t          j%        ht          j&        ddt           j'        t          j&        ht           j(        ht           j)        ht           j*        ht           j+        ht           j,        ht          j-        ht          j.        ht          j/        ht           j0        ht           j1        ht           j2        ht           j3        ht           j4        ht           j5        ht           j6        ht           j7        ht           j8        ht           j9        ht           j:        t          j;        ht          j<        ht          j=        ht          j>        ht          j?        ht          j@        ht          jA        ht           jB        t          jC        ht           jD        t          jE        ht           jF        t          jG        t          jG        ddhddt          jH        t           jI        ht           jJ        t          jK        t          jL        ht6          jM        ht          jN        ht          jO        ht          jP        ht          jQ        ht          jR        ht          jS        ht          jT        ht          jU        ht          jV        ht          jW        ht          jX        ht          jY        ht          j         jZ        j[        ht           j\        ht          j]        ht          j^        ht           j_        ht           j`        t          j`        ht          jb        t          jb        ht           jd        ht          je        ht           jf        ht          jg        ht          jh        h} t                      }t           j        t           jj        j	        jk        fg}|jl        m                                D ]\  }}|}t          |t          t          f          r$|d	         }t          |t          t          f          $|jq        |r                    ||jq        f           |js        |r                    ||js        f           |jt        |r                    ||jt        f           t          jv        t          jw        t          jx        t          jy        fD ]3}|m                                D ]\  }}|r                    ||f           4t          jz        t          j{        t          j|        fD ]M}	|	m                                D ]6\  }\  }
}|r                    ||
f           |r                    ||f           7Nt          j}        m                                D ]6\  }\  }
}|r                    ||
f           |r                    ||f           7t          j~        t          j        t           j        fD ]3}|m                                D ]\  }}|r                    ||f           4t           j        fD ]3}|m                                D ]\  }}|r                    ||f           4|D ]>\  }}| D ]6}||v s||v r,|                    |           |                    |            n7?i }t          |           D ]\  }}t	          |          }|||<   |S )
Nrelurelu_sigmoidsigmoid_tanh_tanhhardsigmoid_hardsigmoid)nnConv1dConv2dConv3dFconv1dconv2dconv3dLinearlinear	AvgPool1dtorch
avg_pool1d	AvgPool2d_C_nn
avg_pool2d	AvgPool3d
avg_pool3dAdaptiveAvgPool1dadaptive_avg_pool1dAdaptiveAvgPool2dadaptive_avg_pool2dAdaptiveAvgPool3dadaptive_avg_pool3dLSTMaddoperatorcatmulr
   ReLU	MaxPool1d
max_pool1d	MaxPool2d
max_pool2d	MaxPool3d
max_pool3dr   SigmoidBatchNorm2dBatchNorm3dConvTranspose1dConvTranspose2dConvTranspose3dconv_transpose1dconv_transpose2dconv_transpose3dELU	EmbeddingEmbeddingBag	GroupNorm	HardswishInstanceNorm1dInstanceNorm2dInstanceNorm3d	LayerNorm	LeakyReLUReLU6relu6elu	hardswish
group_norminstance_norm
layer_norm
leaky_reluSiLUsiluMishmishTanhr   r   HardsigmoidHardtanhhardtanh	hardtanh_floordiv	unsqueezestacksqueezesortrepeat_interleaveminmeanmax	transposeflattenclampchunk
functionalinterpolateDropoutdropoutmatmulSoftmaxPReLUnnqprelutoqPixelShufflepixel_shufflePixelUnshufflepixel_unshufflenarrowr   modulesNonDynamicallyQuantizableLinear!_pattern_complex_format_to_configitems
isinstancelisttuplefused_moduleappend
qat_modulereference_quantized_module_lower_to_native_backendSTATIC_LOWER_MODULE_MAPDYNAMIC_LOWER_MODULE_MAPWEIGHT_ONLY_LOWER_MODULE_MAP SPECIAL_PATTERN_LOWER_MODULE_MAPSTATIC_LOWER_FUSED_MODULE_MAP(STATIC_LOWER_FUSED_MODULE_TWO_INPUTS_MAPDYNAMIC_LOWER_FUSED_MODULE_MAPSTATIC_LOWER_FUNCTIONAL_MAPQBIN_OP_MAPPINGQBIN_RELU_OP_MAPPINGquantization_mappings,DEFAULT_FLOAT_TO_QUANTIZED_OPERATOR_MAPPINGS%DEFAULT_DYNAMIC_QUANT_MODULE_MAPPINGS	enumeratestr)sets_of_related_opsbackend_confignew_connectionspatternconfigfirst_elementsource_to_targetsourcetargetsource_to_double_targettarget1target2item1item2set_of_related_ops base_name_to_sets_of_related_opscounter	base_names                     k/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/torch/ao/ns/fx/mappings.py$get_base_name_to_sets_of_related_opsr      s
   G8 I	
G8 I	
G8 I	
G8 H	
G8  H	
G8& H	
%G8. I	
-G86 H	
5G8> L	
=G8F LHL#	
EG8N LHL#	
MG8X  !	
WG8`  !	
_G8h  !	
gG8r G	
qG8z IL	
yG8D I	
CG8L IL	
KG8V FGJ	
UG8f LL	
eG8n LL	
mG8v LL	
uG8@ MJI	
G8P N	
OG8V N	
UG8^ 	
]G8d 	
cG8j 	
iG8r 	
qG8x 	
wG8~ 	
}G8F F	
EG8N L	
MG8V O	
UG8^ L	
]G8f L	
eG8n 	
mG8t 	
sG8z 	
yG8B L	
AG8J L	
IG8R HG	
QG8\ E	
[G8d K	
cG8l L	
kG8t O	
sG8| L	
{G8D L	
CG8L GF	
KG8V GF	
UG8` GFJ	
_G8p MN		
oG8~ KJK	
}G8J 	
IG8R O	
QG8Z K	
YG8b M	
aG8j J	
iG8r #	
qG8z I	
yG8B J	
AG8J I	
IG8R O	
QG8Z M	
YG8b K	
aG8j K	
iG8r H+	
qG8z J	
yG8B	 I	
A	G8J	 L	
I	G8R	 J	
Q	G8Z	 HI	
Y	G8d	 GI	
c	G8n	 O	
m	G8t	 O	
s	G8|	 	
{	G8B
 	
A
G8J
 L	
I
G8V
 /00N 
BJ%EF8O
 *KQQSS W Wu66 	.)"-M u66 	. * ""M63F#GHHH( ""M63D#EFFF,8 ""M63T#UVVV 	!8 9 = A	 5 5 /4466 	5 	5NFF""FF#34444	5 	!> I ?$ 6 6
 +B*G*G*I*I 	6 	6&F&Wg""FG#4555""FG#45555	6 
"	=	C	C	E	E2 2 	 011101111 	!0 5J 5 5
 /4466 	5 	5NFF""FF#34444	5 	C 5 5 /4466 	5 	5NFF""FF#34444	5 (  u"5 	 	***e7I.I.I"&&u---"&&u--- /J
 JL$'01D'E'E I I##LL	6H(33++    r   opc                 J    |                                  D ]\  }}||v r|c S d S )N)r{   )r   r   r   r   s       r   get_base_name_for_opr     sH     *J)O)O)Q)Q  %	%### $4r   
related_opc                    |E|                                  D ]}||v r|                    |            d S t          | d          d}t          |          | v r|dz  }t          |          | v |h| t          |          <   d S )Nz was not foundr   r   )valuesr-   AssertionErrorr   )r   r   r   r   r   s        r   add_op_to_sets_of_related_opsr     s    
 "B"I"I"K"K 	 	///"&&r*** 0 
:::;;;'ll>>>qLG 'll>>>:<(W666r   c                  V   t           j        t           j        t           j        t           j        t
          j        t           j        t           j        t           j	        t           j
        t           j        t           j        t           j        t           j        t          j        t
          j        t          j        t
          j        t
          j        t           j        h} t)                      }t*          j        t*          j        t*          j        t*          j        t*          j        t*          j        t*          j        t*          j        t*          j        t*          j        t*          j        t*          j	        t*          j
        t*          j        t*          j        t*          j        h}h t           j        t           j        t
          j        t           j        t
          j        t           j        t          j        t
          j        t           j         t           j!        t           j        t           j"        t           j#        t           j$        t           j%        t           j&        t           j'        t           j(        t           j)        t           j*        t
          j+        t
          j,        j-        j.        t
          j,        j-        j/        t
          j        t
          j0        t
          j1        t
          j2        t
          j3        t
          j4        t
          j5        t
          j6        t
          j7        t
          j8        t
          j9        t
          j:        t
          j;        t
          j<        t          j        }h tz          j>        t~          j>        t          j>        t          j>        t
          j=        jB        j        jC        tz          jD        tz          jE        tz          jF        t~          jD        t~          jE        t~          jF        t~          jG        t~          jH        tz          jI        t          jI        tz          jJ        tz          jK        tz          jL        tz          jM        tz          jN        tz          jO        tz          jP        tz          jQ        tz          jR        tz          jS        tz          jT        tz          jU        tz          jV        tz          jW        tz          jX        tz          jY        tz          jZ        tz          j[        tz          j\        t          j^        t          j_        t          j`        t          ja        t          jb        t          jc        t          jd        t          je        t          jf        t          jg        t          je        t          jf        t          jg        t          ji        t          jj        t          jk        t          j`        t          ja        t          jb        t          jc        t          jd        t          jc        t          jm        t          jn        t          jo        t          jp        }h t          j>        t          jD        t          jE        t          jF        t          jJ        t          jK        t          jL        t          jM        t          jN        t          jP        t          jR        t          jS        t          jT        t          jU        t          jV        t          jW        t          jG        t          jH        t          jL        t          j[        t          j\        t          j^        t          j_        t          j`        t          ja        t          jb        t          jc        t          jm        t          jn        t          jo        t          jp        }tz          js        tz          jt        tz          ju        tz          jv        tz          jw        tz          jx        tz          jy        tz          jz        tz          j{        tz          j|        tz          jL        tz          j}        tz          j~        tz          j        tz          j        tz          j        tz          j        tz          j        tz          jX        h}h d}| |||||||dS )N>   r
   r   r   r   r   r   r   r   )funs_io_type_fp32funs_io_type_fp16funs_io_type_int8funs_io_type_fp32_or_int8mods_io_type_fp32mods_io_type_int8mods_io_type_fp32_or_int8meths_io_type_fp32_or_int8)r   r   r   r   r   r   r/   rM   rN   rP   rQ   rR   rl   rT   rV   r.   r-   r0   sumrq   setrr   linear_reluconv1d_reluconv2d_reluconv3d_relur
   r   r   r   r\   r'   r)   r+   rZ   r[   rj   r3   r5   r7   rL   rt   rv   r   r!   r"   r#   r%   rh   rg   rf   re   rd   rc   rb   rw   ra   r`   r_   r^   r]   r   r   nnqatnnqatdnnqdrx   ry   r   r   r   rB   rC   r,   r9   r:   rk   r;   r<   r=   rA   rD   rF   rG   rH   rI   rE   rJ   rK   rS   rU   rn   ro   nniBNReLU2dBNReLU3d
ConvReLU1d
ConvReLU2d
ConvReLU3d
LinearReLU
LinearBn1dConvBn1dConvBn2dConvBn3dnniqatConvBnReLU1dConvBnReLU2dConvBnReLU3dnniqdLinearLeakyReLU
LinearTanh	ConvAdd2dConvAddReLU2drp   nniqr1   rW   r8   rX   r&   r(   r*   r   r    r$   rY   Identityr2   r4   r6   rs   ru   )FUNS_IO_TYPE_FP32FUNS_IO_TYPE_FP16FUNS_IO_TYPE_INT8FUNS_IO_TYPE_FP32_OR_INT8MODS_IO_TYPE_FP32MODS_IO_TYPE_INT8MODS_IO_TYPE_FP32_OR_INT8METHS_IO_TYPE_FP32_OR_INT8s           r   get_node_type_to_io_type_mapr     s   																		'0, 03uu 	



	!0.'8	'8	'8 	
'8 	
		'8
 	'8 	
'8 	'8 	!'8 	
'8 	
'8 	
	'8 	

'8 	
'8 	
'8 	
'8  	
!'8" 	
#'8$ 	
%'8& 	
''8( 	
)'8* 	+'8, 	-'8. 	/'80 		1'82 	3'84 	5'86 	7'88 	9'8: 		;'8< 	
='8> 		?'8@ 	A'8B 	C'8D 	
E'8F 	G'8H 	I'8J 	K'8L 	M'8R?0
	?0?0 	?0 		?0
 	??0 		?0 		?0 		?0 	?0 	?0 	?0 	?0 	?0 	?0" 		#?0$ 	%?0& 	'?0( 	
)?0* 	+?0, 	-?0. 	/?00 	1?02 	3?04 	5?06 	7?08 	9?0: 	;?0< 	=?0> 	??0@ 	A?0B 	C?0D 	E?0F 	
G?0H 	I?0J 	K?0L 	M?0N 	O?0P 	Q?0R 	S?0T 	U?0V 	W?0X 	Y?0Z 	[?0\ 	]?0^ 	_?0` 	a?0b 	c?0d 	e?0f 	g?0h 	i?0j 	k?0l 	m?0n 	o?0p 	q?0r 	s?0t 	u?0v 	w?0x 	y?0z 	{?0| 	}?0B 0
 0
 0 	
 0 	
	 0
 	 0 	 0 	 0 	 0 	 0 	 0 	 0 	 0 	 0 	 0 	 0  	! 0" 	# 0$ 	% 0& 	' 0( 	) 0* 		+ 0, 	- 0. 	/ 00 	1 02 	3 04 	5 06 	7 08 	9 0: 	; 0< 	= 0> 	? 0F 	



















'8,	9 	9 	9 /..%>..%>&@	 	 	r   c                  `    t           j        t          j        h} t          j        h}h d}| ||dS )N>   torc   sizeviewrh   rg   numelshapedetachrepeatdetach_permutereshaperesize_r_   squeeze_re   r]   
contiguous
dequantize
unsqueeze_ra   )funs_unmatchablemods_unmatchablemeths_unmatchable)r   quantize_per_tensorr.   getitemr   r   )FUNS_UNMATCHABLEMODS_UNMATCHABLEMETHS_UNMATCHABLEs      r   get_unmatchable_types_mapr     sQ    !/ 	/0 0 04 -,.  r   )3r.   typingr   r   r   torch.ao.nn.intrinsicaor   	intrinsicr   torch.ao.nn.intrinsic.qatqatr   torch.ao.nn.intrinsic.quantized	quantizedr   'torch.ao.nn.intrinsic.quantized.dynamicdynamicr   torch.ao.nn.qatr   torch.ao.nn.qat.dynamicr   torch.ao.nn.quantizedrp   torch.ao.nn.quantized.dynamicr   1torch.ao.quantization.fx._lower_to_native_backendquantizationfxr   +torch.ao.quantization.quantization_mappingsr   torch.nntorch.nn.functionalri   r   $torch.ao.quantization.backend_configr   ns_typesr   opsrr   dictr   r   r   r   r   r   r    r   r   <module>r     sZ    % % % % % % % %  # # # # # # # # # # # # * * * * * * * * * * * * * * * . . . . . . . . . . . . . . . 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7             ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( # # # # # # # # # # # # , , , , , , , , , , , , , , , T T T T T T T T T T T T T T T K K K K K K K K K K K K                J J J J J J & & & & & & ik,d3<L8M3M.N k, k, k, k,\&*34D0E+E&F c]   >&*34D0E+E&F>> )*> 
	> > > >(fd34D0E+E&F f f f fR'4S1A-B(B#C ' ' ' ' ' 'r   