ó
    Eñi2Ý  ã                   ó"  • S SK r S SKJrJr  S SKrS SKJs  Jr  S SK	J
r
  SSKJrJr  SSKJr  SSKJr  SSKJr  SS	KJr  SS
KJrJrJrJrJrJrJr  SSKJrJrJ r   SSKJ!r!J"r"  SSK#J$r$J%r%J&r&  S\RN                  S\R(                  S\R(                  S\R(                  S\R(                  S\(\)\R(                  \\R(                     4   4S jr*S\)S\%S\%S\\%   S\\%   S\\%   S\\%   S\%4S jr+    S#S\S\,\   S\,\   4S  jjr-S!\-l.        S" r/g)$é    N)ÚOptionalÚUnion)Úmm_argsé   )ÚconfigÚir)ÚCppGemmTemplate)ÚCppGroupedGemmTemplate©Úcreate_epilogue_with_attr)Ú	TensorBox)ÚaddÚadd_needs_realized_inputsÚatenÚpermuteÚregister_loweringÚto_dtypeÚview)Úautotune_select_algorithmÚChoiceCallerÚExternKernelChoice)Úuse_aten_gemm_kernelsÚuse_cpp_gemm_template)ÚopsÚOpsValueÚVÚW_tensorÚpacked_weightÚx_scaleÚx_zpÚw_scaleÚreturnc                 ó>  • S n[        S X#U4 5       5      nU(       Ga  [        R                  R                  UR	                  5          [        R                  R                  UR	                  5          -  n[        R                  R                  UUR	                  5       S-   S9n[        R                  " U R                  [        R                  5      SS9n[        R                  R                  UR	                  5          n	X‡-  U	-  n[        R                  R                  UUR	                  5       S-   S9n
Oa[        R                  " U R                  [        R                  5      SS9n[        R                  R                  UUR	                  5       S-   S9n
UU
U4$ )Nc              3   ó^  #   • U  H£  n[        U[        R                  5      =(       a}    UR                  5       [        R
                  R                  ;   =(       aK    [        UR                  S 5      =(       a.    [        UR                  R                  [        R                  5      v •  M¥     g7f)ÚdataN)
Ú
isinstancer   r   Úget_namer   ÚgraphÚ	constantsÚhasattrr%   ÚConstantBuffer)Ú.0Úitems     Ú]/home/mande/repo/quber/.venv/lib/python3.13/site-packages/torch/_inductor/mkldnn_lowerings.pyÚ	<genexpr>Ú+create_int8_compensation.<locals>.<genexpr>,   sz   é € ð *ò
 -ˆDô	 	�4œŸ™Ó&÷ 	:Ø�M‰M‹OœqŸw™w×0Ñ0Ñ0÷	:ä�D—I‘I˜vÓ&÷	:ô �t—y‘y—~‘~¤r×'8Ñ'8Ó9ô	:ò -ùs   ‚B+B-Ú_x_w_compens©Únamer   )ÚdimÚ_BMatrixCompens)
Úallr   r(   r)   r'   Úadd_tensor_constantÚtorchÚsumÚtoÚfloat)r   r   r   r    r!   Ú	x_w_scaleÚuse_int8_fast_compensation_pathÚx_w_scale_tensorÚweight_compens_tensorÚx_zp_tensorÚweight_compenss              r.   Úcreate_int8_compensationrB       su  € ð )-€IÜ&)ñ *ð
  GÑ,ó*ó 'Ð#÷ 'ä�G‰G×Ñ˜g×.Ñ.Ó0Ñ1Ü�g‰g×Ñ × 0Ñ 0Ó 2Ñ3ñ4ð 	ô —G‘G×/Ñ/ØØ×'Ñ'Ó)¨NÑ:ð 0ð 
ˆ	ô !&§	¢	¨(¯+©+´e·k±kÓ*BÈÑ JÐÜ—g‘g×'Ñ'¨¯©«Ñ8ˆØ 5Ñ HÈ;Ñ VÐÜŸ™×4Ñ4Ø!Ø×'Ñ'Ó)Ð,=Ñ=ð 5ð 
‰ô
 !&§	¢	¨(¯+©+´e·k±kÓ*BÈÑ JÐÜŸ™×4Ñ4Ø!Ø×'Ñ'Ó)Ð,=Ñ=ð 5ð 
ˆð
 	(ØØðð ó    r=   ÚinputÚ_weight_compoÚ_x_scaleÚ_x_zpÚ_w_scaleÚ
_x_w_scalec                 ót  • U (       a.  [         R                  " [         R                  " UU5      U5      nU$ [         R                  " [         R                  " UU5      U5      n[         R                  " U[         R                  " [         R                  " [         R                  " UU5      U5      U5      5      nU$ ©N)r   ÚsubÚmul)r=   rD   rE   rF   rG   rH   rI   Útemps           r.   Ú'codegen_int8_gemm_template_compensationrO   P   s©   € ö 'Ü�wŠwÜ�GŠGØØóð ó
ˆðH €Kô9 �wŠwÜ�GŠGØØóð ó
ˆô �wŠwØÜ�GŠGÜ—’Ü—G’GØ Ø óð óð ó	ó
ˆð €KrC   ÚxÚwÚbc           	      óì  • U R                  5       n[        U5      S:”  a  [        U SUS   /5      n [        U5      n[        R                  (       d  [        R
                  (       d   eU V	s/ s H&  o™c  U	O[        R                  R                  U	5      PM(     nn	/ n
[        U [        US   SS/5      US9Gt p¶pU V	s/ s H  o™S LPM     sn	SS [        R                  [        U5      U 5      S.nU /UQnUR                  U V	s/ s H	  o™c  M  U	PM     sn	5        [        R                   " U
UU40 UD6  [        U
5      S:w  d   e[#        SU
UU5      nUR$                  R$                  n[        U5       Vs/ s H!  n[        R&                  " Xo[(        U4/5      PM#     nn[        R*                  " US   R-                  5       S	9Ul        UUl        [        U5       Vs/ s H%  n[        R2                  R5                  UU   5      PM'     nn[        U5      S:”  a@  [        U5       H1  n[        UU   / US S QUU   R                  5       S   P75      UU'   M3     U$ s  sn	f s  sn	f s  sn	f s  snf s  snf )
Né   éÿÿÿÿr   r   ©ÚlayoutT)Úhas_biasÚtrans_wÚepilogue_creatorÚact_mappingÚgrouped_gemm)Údevice)Úget_sizeÚlenr   r   Úmax_autotuneÚmax_autotune_gemmr   ÚExternKernelÚrealize_inputr   r   ÚdictÚfromkeysÚrangeÚextendr
   Úadd_choicesr   r%   ÚMultiOutputÚlistÚMultiOutputLayoutÚ
get_devicerW   Úoutputsr   Úcreate)rP   rQ   rR   ÚattrÚscalarsÚ	algorithmrW   Úx_sizeÚnum_gemmÚbiasÚchoicesÚ_ÚkwargsÚinput_nodesÚresultÚtemplate_bufÚgemm_idxÚreturn_bufsÚreturn_tensorss                      r.   Úgrouped_gemm_loweringr~   �   sq  € ð �Z‰Z‹\€FÜ
ˆ6ƒ{�Qƒä��R˜ ™Ð$Ó%ˆÜ�1‹v€Hä××¤&×":×":Ð:Ð:áSTÓUÒSTÈ4‘‰¤2§?¡?×#@Ñ#@ÀÓ#FÒ	FÑST€AÐUà"$€GÜ˜q¤'¨!¨A©$°°A°Ó"7ÀÑGÑ€Q�ñ 34Ó4²!¨$ Ó%±!Ñ4ØØ Ü—}‘}¤U¨8£_°aÓ8ñ	€Fð �'�q�'€KØ×Ñ©Ó?ª Ÿ©Ñ?Ô@ä×&Ò&ØØØñð ò	ô ˆw‹<˜1ÓÐÐÜ&ØØØØó	€Fð —;‘;×#Ñ#€Lô ˜hœóâ'ˆHô 	�Š�v¬t°XÐ.>Ð-?Ö@Ù'ð ð ô
 ×.Ò.°kÀ!±n×6OÑ6OÓ6QÑR€LÔØ&€LÔäCHÈÄ?óÚCR°xŒ�‰×Ñ˜K¨Ñ1Ö2Á?ð ð ô ˆ6ƒ{�QƒÜ˜hžˆHÜ'+Ø˜xÑ(ØG�&˜˜"�+ÐG˜~¨hÑ7×@Ñ@ÓBÀ2ÑFÑGó(ˆN˜8Ó$ñ (ð
 Ðùò] 	Vùò 5ùò @ùò"ùòs$   Á,-IÂ>I"ÄI'ÄI'Å6(I,Ç,I1Tc            !      óì  ^^^^^^• [         R                  R                  (       GaN  SSKJm  [        [         R                  R                  R                  SSTR                  R                  S9m[        [         R                  R                  R                  R                  SSTR                  R                  S9m[        [         R                  R                  R                  SSTR                  R                  S9m[        [         R                  R                  R                  R                  SSTR                   R                  S9m[         R                  R                  R"                  [         R                  R                  R$                  [         R                  R                  R&                  [         R                  R                  R                  [(        R*                  R,                  [         R                  R                  R.                  /n [1        [         R                  R                  R"                  5      S[2        S[2        S	[2        4U4S
 jj5       n[1        [         R                  R                  R"                  R                  5      S[2        S[2        S[2        S	[2        4U4S jj5       n[1        [         R                  R                  R$                  R                  5      S[2        S[2        S[2        S	[2        4U4S jj5       n[1        [         R                  R                  R                  5       S3S[2        S[2        S[2        4U4S jjj5       n[1        [         R                  R                  R                  R                  5       S3S[2        S[2        S[2        S[2        4U4S jjj5       n[1        [         R                  R                  R&                  5      S[2        S[2        S	[2        4U4S jj5       n[1        [(        R*                  R,                  5      S[2        S[2        S[2        S[2        S[2        S[2        S[2        S[4        S[6        [8           S[8        S[8        S[8        S[4        S [4        S![4        S"[4        4 U4S# jj5       n[1        [         R                  R                  R.                  S S$9S[2        S%[2        S&[2        S	[2        4U4S' jj5       n[1        [         R                  R                  R:                  R                  S S$9[1        [         R                  R                  R:                  R<                  S S$9S[2        S%[2        S&[2        S([2        S	[2        4
U4S) jj5       5       n	[1        [         R                  R                  R                  S S$9 S3S[2        S%[2        S&[2        S*[2        S	[2        4
U4S+ jjj5       n
[1        [         R                  R                  R                  R                  S S$9[1        [         R                  R                  R                  R<                  S S$9 S3S[2        S%[2        S&[2        S*[2        S,[2        S	[2        4U4S- jjj5       5       n[         R                  R>                  (       aÐ  [        [         R                  R@                  RB                  S.STRD                  R                  S9mU RG                  [         R                  R@                  RB                  5        [1        [         R                  R@                  RB                  5      S S/.S[2        S0[2        S1[2        S[H        [2           4U4S2 jjj5       n[K        U 5        g g )4Nr   )Ú	mkldnn_irzmkldnn::_linear_pointwiseF)Úhas_out_variantÚkernel_creatorzonednn::qlinear_pointwiserP   Úweightrt   c
                 ót   >• [         R                  " T
R                  R                  U UUUUUUUUU	5
      5      $ rK   )r   rn   ÚConvolutionUnary)rP   rƒ   rt   ÚpaddingÚstrideÚdilationÚgroupsro   rp   rq   r€   s             €r.   Úconvolution_unaryÚ5register_onednn_fusion_ops.<locals>.convolution_unaryí   sJ   ø€ ô ×#Ò#Ø×*Ñ*×1Ñ1ØØØØØØØØØØóóð rC   Úotherc                 óz   >• [         R                  " TR                  R                  U UUUUUUUUU	U
UU5      5      $ rK   )r   rn   ÚConvolutionBinary©rP   rŒ   rƒ   rt   r†   r‡   rˆ   r‰   Úbinary_attrÚbinary_alphaÚ
unary_attrÚunary_scalarsÚunary_algorithmr€   s                €r.   Úconvolution_binaryÚ6register_onednn_fusion_ops.<locals>.convolution_binary	  sS   ø€ ô  ×#Ò#Ø×+Ñ+×2Ñ2ØØØØØØØØØØ ØØ!Ø#óóð rC   c                 óz   >• [         R                  " TR                  R                  U UUUUUUUUU	U
UU5      5      $ rK   )r   rn   ÚConvolutionBinaryInplacer�   s                €r.   Úconvolution_binary_inplaceÚ>register_onednn_fusion_ops.<locals>.convolution_binary_inplace+  sS   ø€ ô  ×#Ò#Ø×2Ñ2×9Ñ9ØØØØØØØØØØ ØØ!Ø#óóð rC   rQ   rR   c                 ó˜  >^^^• U R                  5       n[        U5      S:”  a  [        U SUS   /5      n Ub  [        R                  R                  U5      n/ n[        R                  (       d  [        R                  (       ao  [        USS/5      n	[        X	US9Gt p¦p	[        X`U	5      (       aC  UUU4S jnUS LSTS:X  a  S OUS	.nUb  / S
QUS'   [        R                  " UUUc  X/OXU/40 UD6  [        U5      S:X  d  [        5       (       a>  [        TTTS9nUc  S US'   UR!                  TR"                  " Uc  X/OXU/U40 UD65        UR%                  5       [&        R(                  R*                  ;   d   eSS 0n[-        SUUc  X/OXU/UUS9n[        U5      S:”  a%  [        U/ US S QUR                  5       S   P75      nU$ )NrT   rU   r   r   rV   c                 ó   >• [        U TTTS9$ )N©rp   rq   r   )Úbufrq   ro   rp   s    €€€r.   rZ   ÚJregister_onednn_fusion_ops.<locals>.linear_unary.<locals>.epilogue_creatorc  s   ø€ Ü8Ø ¨wÀ)ñ ð rC   TÚnone©rX   rY   rZ   )rT   r   r   Úinput_indices)ro   rp   rq   ÚBc                 óX   • [         R                  R                  U R                  5          $ rK   ©r   r(   r)   r'   ©rP   s    r.   Ú<lambda>ÚBregister_onednn_fusion_ops.<locals>.linear_unary.<locals>.<lambda>„  ó   € œQŸW™W×.Ñ.¨q¯z©z«|Ò<rC   Úlinear_unary©Úinput_gen_fns©r^   r_   r   r   rb   rc   r   r`   ra   r   r   r   r	   rh   r   rd   ÚappendÚbindr'   r   r(   r)   r   )rP   rQ   rR   ro   rp   rq   rW   rr   ru   Útransposed_wrv   rZ   rw   r¬   ry   Úaten_mkldnn_linear_unarys      ```         €r.   rª   Ú0register_onednn_fusion_ops.<locals>.linear_unaryM  sç  û€ ð —Z‘Z“\ˆFÜ�6‹{˜Q‹ä˜˜R ¨¡Ð,Ó-�Ø‰}Ü—O‘O×1Ñ1°!Ó4�Ø*,ˆGÜ×"×"¤f×&>×&>Ü& q¨1¨a¨&Ó1�Ü.5°aÈfÑ.UÑ+�˜AÜ(¨°L×AÑA÷ð %&¨T MØ#'à$(¨F£N™DÐ8Hñ	�Fð ‘}Ú2;˜˜Ñ/Ü#×/Ò/ØØØ"#¡)˜™°!¸°ñð !ò	ô �7‹|˜qÓ Ô$9×$;Ñ$;Ü 4°ÀIÑN�Ø‘9Ø"&�F˜3‘KØ—‘Ø,×1Ò1Ø"#¡)˜™°!¸°Øñð !ñôð —:‘:“<¤1§7¡7×#4Ñ#4Ó4Ð4Ð4àÑ<ðˆMô /ØØØ™)�‘¨!°¨ØØ+ñˆFô �6‹{˜Q‹Ü˜fÐ&K¨¨s°¨Ð&K°V·_±_Ó5FÀrÑ5JÑ&KÓL�ØˆMrC   Úyc                 óþ  >^^• U R                  5       n[        U5      S:”  a  [        U SUS   /5      n TR                  5       n[        U5      S:”  a  [        TSUS   /5      mUb  [        R                  R                  U5      n/ n[        R                  (       d  [        R                  (       ao  [        USS/5      n	[        X	TUS9Gt p¥p	m[        XPU	5      (       aA  UU4S jnUS LSUS.nUc  / S	QO/ S
QUS'   [        R                  " UUUc  U TU/OU TX#/40 UD6  [        U5      S:X  d  [        5       (       a?  [        TS9nUc  S US'   UR!                  TR"                  " Uc  U TU/OU TX#/U40 UD65        UR%                  5       [&        R(                  R*                  ;   d   eSS 0n[-        SUUc  U TU/OU TX#/UUS9n[        U5      S:”  a%  [        U/ US S QUR                  5       S   P75      nU$ )NrT   rU   r   r   rV   c                 ó   >• [        U TTS9$ )N)rŒ   r   )rž   ro   r³   s    €€r.   rZ   ÚKregister_onednn_fusion_ops.<locals>.linear_binary.<locals>.epilogue_creator¦  s   ø€ Ü8¸¸dÈ!ÑLÐLrC   Tr¡   )r   rT   r   )é   r   rT   r   r¢   )ro   r£   c                 óX   • [         R                  R                  U R                  5          $ rK   r¥   r¦   s    r.   r§   ÚCregister_onednn_fusion_ops.<locals>.linear_binary.<locals>.<lambda>Ä  r©   rC   Úlinear_binaryr«   r­   )rP   r³   rQ   rR   ro   rW   rr   Úy_sizeru   r°   rv   rZ   rw   r¬   ry   Úaten_mkldnn_linear_binarys    `  `          €r.   rº   Ú1register_onednn_fusion_ops.<locals>.linear_binary‘  s!  ú€ ð —Z‘Z“\ˆFÜ�6‹{˜Q‹ä˜˜R ¨¡Ð,Ó-�Ø—Z‘Z“\ˆFÜ�6‹{˜Q‹Ü˜˜R ¨¡Ð,Ó-�Ø‰}Ü—O‘O×1Ñ1°!Ó4�Ø*,ˆGÜ×"×"¤f×&>×&>Ü& q¨1¨a¨&Ó1�Ü18Ø Q¨vñ2Ñ.�˜A¨Qô )¨°L×AÑAöMð %&¨T MØ#'Ø,<ñ�Fð <=¹9«iÊ,�F˜?Ñ+Ü#×/Ò/ØØØ%&¡Y˜˜A˜q™	°Q¸¸1°Lñð !ò	ô �7‹|˜qÓ Ô$9×$;Ñ$;Ü 4™�Ø‘9Ø"&�F˜3‘KØ—‘Ø-×2Ò2Ø%&¡Y˜˜A˜q™	°Q¸¸1°LØñð !ñôð —:‘:“<¤1§7¡7×#4Ñ#4Ó4Ð4Ð4àÑ<ðˆMô /ØØØ™Y��A�q‘	¨Q°°1¨LØØ+ñˆFô �6‹{˜Q‹Ü˜fÐ&K¨¨s°¨Ð&K°V·_±_Ó5FÀrÑ5JÑ&KÓL�ØˆMrC   c                 óv   >• [         R                  " TR                  R                  U UUUUUUUUU	U
5      5      $ rK   )r   rn   ÚConvolutionTransposeUnary)rP   rƒ   rt   r†   Úoutput_paddingr‡   rˆ   r‰   ro   rp   rq   r€   s              €r.   Úconvolution_transpose_unaryÚ?register_onednn_fusion_ops.<locals>.convolution_transpose_unaryÑ  sM   ø€ ô ×#Ò#Ø×3Ñ3×:Ñ:ØØØØØ"ØØØØØØóóð rC   Úw0Úw1Úw2Úw3ÚhxÚcxÚreverseÚbatch_sizesÚmodeÚhidden_sizeÚ
num_layersÚ
has_biasesÚbidirectionalÚbatch_firstÚtrainc                 óž   >• [         R                  " [        R                  TR                  R                  U UUUUUUUUU	U
UUUUU5      5      $ rK   )ÚpytreeÚtree_mapr   rn   ÚMkldnnRnnLayer)rP   rÃ   rÄ   rÅ   rÆ   rÇ   rÈ   rÉ   rÊ   rË   rÌ   rÍ   rÎ   rÏ   rÐ   rÑ   r€   s                   €r.   Úmkldnn_rnn_layerÚ4register_onednn_fusion_ops.<locals>.mkldnn_rnn_layerï  sc   ø€ ô& —?’?Ü× Ñ Ø×(Ñ(×/Ñ/ØØØØØØØØØØØØØØ!ØØó!óð rC   )Útype_promotion_kindr   r!   c                 óR  >• [        U[        R                  5      (       dS  [        U5      [        L d   e[
        R                  R                  [        R                  " U[        R                  S9SS9nUc?  [
        R                  R                  [        R                  " S[        R                  S9SS9n[        U[        R                  5      (       dS  [        U5      [        L d   e[
        R                  R                  [        R                  " U[        R                  S9SS9nUc?  [
        R                  R                  [        R                  " S[        R                  S9SS9n[        R                  " TR                  R                  U UUUUUUUUU	U
UUUUUU5      5      $ )N©Údtyper   r2   r   r    Úw_zp)r&   r   r   Útyper;   r   r(   r7   r8   ÚtensorÚfloat32Úint32Úintrn   ÚQConvPointWisePT2E)rP   r   r    r   r!   rÜ   rt   r‡   r†   rˆ   r‰   Úo_inv_scaleÚo_zero_pointÚoutput_dtypero   rp   rq   r€   s                    €r.   Úqconvolution_unaryÚ6register_onednn_fusion_ops.<locals>.qconvolution_unary  sk  ø€ ô( ˜g¤r§|¡|×4Ñ4Ü˜G“}¬Ò-Ð-Ð-ÜŸ'™'×5Ñ5Ü—L’L ´·±Ñ>ÀYð 6ð �ð ‰|Ü—w‘w×2Ñ2Ü—L’L ¬%¯+©+Ñ6¸Vð 3ð �ô ˜d¤B§L¡L×1Ñ1Ü˜D“z¤SÒ(Ð(Ð(Ü—w‘w×2Ñ2Ü—L’L ¬U¯[©[Ñ9Àð 3ð �ð ‰|Ü—w‘w×2Ñ2Ü—L’L ¬%¯+©+Ñ6¸Vð 3ð �ô ×#Ò#Ø×,Ñ,×3Ñ3ØØØØ!ØØØØØØØØØ Ø ØØØó#óð rC   Úaccumc                 óR  >• [        U[        R                  5      (       dS  [        U5      [        L d   e[
        R                  R                  [        R                  " U[        R                  S9SS9nUc?  [
        R                  R                  [        R                  " S[        R                  S9SS9n[        U[        R                  5      (       dS  [        U5      [        L d   e[
        R                  R                  [        R                  " U[        R                  S9SS9nUc?  [
        R                  R                  [        R                  " S[        R                  S9SS9nUS:X  au  U[        R                  [        R                  4;   aQ  UR                  5       [        R                  [        R                  4;   a  UR                  5       U:w  a  [        Xn5      n[        R                   " TR"                  R!                  U UUUUUUUUU	U
UUUUUUUUUUU5      5      $ )NrÚ   r   r2   r   r    rÜ   r9   )r&   r   r   rÝ   r;   r   r(   r7   r8   rÞ   rß   rà   rá   Úbfloat16Ú	get_dtyper   rn   ÚQConvPointWiseBinaryPT2E)rP   r   r    r   r!   rÜ   rè   rt   r‡   r†   rˆ   r‰   rã   rä   rå   Úaccum_scaleÚaccum_zpr�   Úalphar’   r“   r”   r€   s                         €r.   Úqconvolution_binaryÚ7register_onednn_fusion_ops.<locals>.qconvolution_binaryW  sÎ  ø€ ô< ˜g¤r§|¡|×4Ñ4Ü˜G“}¬Ò-Ð-Ð-ÜŸ'™'×5Ñ5Ü—L’L ´·±Ñ>ÀYð 6ð �ð ‰|Ü—w‘w×2Ñ2Ü—L’L ¬%¯+©+Ñ6¸Vð 3ð �ô ˜d¤B§L¡L×1Ñ1Ü˜D“z¤SÒ(Ð(Ð(Ü—w‘w×2Ñ2Ü—L’L ¬U¯[©[Ñ9Àð 3ð �ð ‰|Ü—w‘w×2Ñ2Ü—L’L ¬%¯+©+Ñ6¸Vð 3ð �ð
 ˜uÓ$Ø ¤U§]¡]´E·N±NÐ$CÓCØ—O‘OÓ%¬%¯-©-¼¿¹Ð)HÓHØ—O‘OÓ%¨Ó5ô ! Ó5�Ü×#Ò#Ø×2Ñ2×9Ñ9ØØØØ!ØØØØØØØØØØ Ø ØØØØØØ!Ø#ó-óð rC   rÜ   c                 óÖ  >^^^^^^^	^
^^^^^^• UR                  5       [        R                  [        R                  4;   d   S5       eU R	                  5       n[        U5      S:”  a  [        U SUS   /5      n [        T[        R                  5      (       dT  [        T5      [        L d   e[        R                  R                  [        R                  " T[        R                   S9SS9mOeTR#                  5         [%        S TR	                  5        5       5      (       a  [        T/ 5      m[        TR	                  5       5      S;   d   S	5       eTc?  [        R                  R                  [        R                  " S
[        R&                  S9SS9m[        T[        R                  5      (       dT  [        T5      [(        L d   e[        R                  R                  [        R                  " T[        R&                  S9SS9mOTR#                  5         TR+                  5       S:X  d   S5       eUc?  [        R                  R                  [        R                  " S
[        R&                  S9SS9nTR#                  5         UR#                  5         UR                  5       [        R&                  :w  aÑ  [        [        R,                  R/                  U5      [        R0                  5      (       a•  [        R                  R2                  UR5                  5          R7                  [        R&                  5      n[        R                  R                  [        R                  " U[        R&                  S9UR5                  5       S9nTc  S OTR                  5       m/ n[8        R:                  (       d  [8        R<                  (       Ga¨  [?        XUT	S9Gt npÐn[        [        R,                  R/                  U5      [        R0                  5      (       Ga\  [        R@                  " [        RB                  " [        R                  R2                  UR5                  5          5      [        R                  R2                  UR5                  5          5      (       aÚ  [E        XÐU5      (       aÉ  [        R                  R2                  UR5                  5          RG                  5       n[I        UUTTT5      u  mmmUU
UUUUU	UUUUUUU4S jnU R                  5       [        RJ                  [        R                  4;   d   e[L        RN                  " UUTc  U TTUTU/OU TTUTUT/TS LUTc  / SQO/ SQS9  [        U5      S
:X  d  [Q        5       (       aK  [S        TTT	T
TTS9nTc  S US'   URU                  TRV                  " Tc  U TTUTU4OU TTUTUT4U40 UD65        UR5                  5       [        R                  R2                  ;   d   eS S S S S.n[        [        R,                  R/                  T5      [        R0                  5      (       a  S US'   [        [        R,                  R/                  T5      [        R0                  5      (       a  S US'   [Y        SUTc  U TTUTU/OU TTUTUT/UUS9n[        U5      S:”  a%  [        U/ US S QUR	                  5       S   P75      nU$ )Nz=Only int8 and e4m3fn weights are supported by oneDNN qlinear.rT   rU   rÚ   r   r2   c              3   ó*   #   • U  H	  oS :H  v •  M     g7f©r   N© ©r,   r4   s     r.   r/   ÚDregister_onednn_fusion_ops.<locals>.qlinear_unary.<locals>.<genexpr>Ï  ó   é € Ð>Ò+= C˜a–xÒ+=ùó   ‚©r   r   úx_scale must be 0D or 1Dr   r    r   z(x_zp is incompatible with oneDNN qlinearrÜ   ©rW   Ú	out_dtypec                 ód  >^^^^^	^
^^^^• T[         R                  [         R                  [         R                  [         R                  4;   d   eU R                  5       mTR                  5       mS mT(       a  Tc   eTR                  5       mTR                  5       mTR                  5       m
TR                  5       mS mTb  TR                  5       mUUUUUU
UUUU4
S jn[        R                  " U R                  5       [         R                  UU R                  5       S9nTS:w  a  [        UTTTS9nT[         R                  :X  aL  UR                  5       mUU4S jn[        R                  " UR                  5       TUUR                  5       S9nU$ T[         R                  [         R                  4;   aw  SSKJm  UR                  5       m	UUU	4S jn[        R                  " UR                  5       T[        R                  " U[!        T5      [#        T5      S	9UR                  5       S9nU$ )
Nc           	      ó  >
• T" U 5      n[         R                  " U[        R                  5      nU S   4nS nS nS nT(       d  T" S5      nT" S5      nT" U5      nT" U5      nS nT(       a  Tc   eT" U5      n[	        TUUUUUU5      nT
b}  T" U5      n	T[        R                  [        R
                  4;   d   eT[        R
                  :X  a%  [         R                  " U	[        R                  5      n	[         R                  " X‰5      nU$ ©NrU   rõ   ©r   r   r8   rß   rO   rê   r   )ÚindexrD   Úweight_compens_indexrF   rG   rH   rE   rI   rN   Ú_biasrt   Ú
bias_dtypeÚbias_loaderÚinput_loaderr=   Úw_scale_loaderÚweight_compens_loaderÚx_scale_loaderÚx_w_scale_loaderÚx_zp_loaders             €€€€€€€€€€r.   Úinner_fnÚ]register_onednn_fusion_ops.<locals>.qlinear_unary.<locals>.epilogue_creator.<locals>.inner_fn6  s	  ø€ á$0°Ó$7˜Eô %(§L¢L°¼¿¹Ó$F˜EØ49¸"±I°<Ð0à'+˜HØ$(˜EØ'+˜HÞ#BÙ+9¸"Ó+= Ù(3°B« Ù+9Ð:NÓ+O Ù,AÐBVÓ,W˜MØ)-˜JÞ>Ø'7Ñ'CÐ CÐ'CÙ-=Ð>RÓ-S 
ä#JØ ?Ø %Ø -Ø (Ø %Ø (Ø *ó$˜Dð  $Ñ/á(3Ð4HÓ(I à'1´e·m±mÄUÇ^Á^Ð5TÓ'TÐ TÐ'TØ#-´·±Ó#?Ü,/¯LªL¸ÄÇÁÓ,N EÜ'*§w¢w¨tÓ'; à#'˜KrC   ©r]   rÛ   r  Úrangesr    r�   c                 óB   >• T" U 5      n[         R                  " UT5      $ rK   ©r   r   ©r  rD   Úoutput_cast_loaderrå   s     €€r.   Úinner_fn_cast_output_to_bf16Úqregister_onednn_fusion_ops.<locals>.qlinear_unary.<locals>.epilogue_creator.<locals>.inner_fn_cast_output_to_bf16q  ó   ø€ Ù(:¸5Ó(A Ü'*§|¢|°E¸<Ó'HÐ HrC   r   ©Ú_create_constantsc                 óŽ  >• T" U 5      nT	" SU-  U[         R                  S9u  pB[        R                  " X4-  5      U-   nT
[         R                  :X  a  T	" SS[         R                  S9u  pgOT	" SS[         R                  S9u  pg[        R
                  " [        R                  " XV5      U5      n[        R                  " UT
5      $ ©Ng      ð?rÚ   r   éÿ   i€ÿÿÿé   ©r8   rß   r   ÚroundÚuint8ÚminimumÚmaximumr   ©r  ÚscaleÚ
zero_pointrD   Ú	inv_scaleÚvalÚqminÚqmaxÚclampedr  rå   Úrequant_input_loaders            €€€r.   Úinner_fn_requantÚeregister_onednn_fusion_ops.<locals>.qlinear_unary.<locals>.epilogue_creator.<locals>.inner_fn_requant€  s¬   ø€ Ù(<¸UÓ(C Ù8IØ$'¨%¡K°Ä5Ç=Á=ñ9"Ñ 5 	ô '*§i¢i°Ñ0AÓ&BÀZÑ&O Ø#/´5·;±;Ó#>Ù1BØ()¨3´e·m±mñ2&¡J D¨$ñ 2CØ(,¨c¼¿¹ñ2&¡J Dô +.¯+ª+´c·k²kÀ#Ó6LÈdÓ*S Ü'*§|¢|°G¸\Ó'JÐ JrC   ©r$  r%  ©r8   rß   rê   r   Úint8Úmake_loaderr   Ú	Pointwiserl   r^   r   Úget_device_or_errorÚloweringr  Ú	functoolsÚpartialr;   rá   )Úinput_bufferr  Ú
output_bufr  r,  r  r  r  r  r+  r  r	  r
  r  r  rq   ro   rt   r  Úo_scalerä   rå   rp   r=   r!   rA   r   r<   r    s        @@@@@@@@@@€€€€€€€€€€€€€€r.   rZ   ÚKregister_onednn_fusion_ops.<locals>.qlinear_unary.<locals>.epilogue_creator   sõ  ÿú€ à+Ü!ŸM™MÜ!ŸN™NÜ!ŸK™KÜ!ŸJ™Jð	0ó  ð ð  ð (4×'?Ñ'?Ó'A˜Ø0>×0JÑ0JÓ0LÐ-Ø+/Ð(Þ:Ø#,Ñ#8Ð8Ð#8Ø/8×/DÑ/DÓ/FÐ,Ø)0×)<Ñ)<Ó)>˜Ø)0×)<Ñ)<Ó)>˜Ø&*×&6Ñ&6Ó&8˜à&*˜ØÑ+Ø*.×*:Ñ*:Ó*<˜K÷((ö ((ôT &(§\¢\Ø#/×#:Ñ#:Ó#<Ü"'§-¡-Ø%-Ø#/×#8Ñ#8Ó#:ñ	&˜
ð   6›>Ü)BØ *¨D¸'ÈYñ*˜Jð
 (¬5¯>©>Ó9Ø1;×1GÑ1GÓ1IÐ.öIô *,¯ªØ'1×'EÑ'EÓ'GØ&2Ø)EØ'1×':Ñ':Ó'<ñ	*˜JðN  *Ð)ðC *¬e¯k©k¼5¿:¹:Ð-FÓFÝCà3=×3IÑ3IÓ3KÐ0÷Kô" *,¯ªØ'1×'EÑ'EÓ'GØ&2Ü)2×):Ò):Ø$4Ü*/°«.Ü/2°<Ó/@ñ*"ð
 (2×':Ñ':Ó'<ñ	*˜Jð  *Ð)rC   )r   r·   r   rT   é   é   )é   r   r·   r   rT   r;  r<  ©rX   rZ   r¢   )Úoutput_scaleÚoutput_zero_pointrå   Úpost_op_nameÚpost_op_argsÚpost_op_algorithmrt   c                 óX   • [         R                  R                  U R                  5          $ rK   r¥   r¦   s    r.   r§   ÚCregister_onednn_fusion_ops.<locals>.qlinear_unary.<locals>.<lambda>Á  r©   rC   c                 óX   • [         R                  R                  U R                  5          $ rK   r¥   r¦   s    r.   r§   rE  Â  r©   rC   c                 óX   • [         R                  R                  U R                  5          $ rK   r¥   r¦   s    r.   r§   rE  Ã  r©   rC   c                 óX   • [         R                  R                  U R                  5          $ rK   r¥   r¦   s    r.   r§   rE  Ä  r©   rC   )r·   r;  r<  r=  c                 óX   • [         R                  R                  U R                  5          $ rK   r¥   r¦   s    r.   r§   rE  Ë  ó   € ¬Q¯W©W×->Ñ->¸q¿z¹z»|Ò-LrC   c                 óX   • [         R                  R                  U R                  5          $ rK   r¥   r¦   s    r.   r§   rE  Ð  rJ  rC   Úqlinear_unaryr«   )-rë   r8   r0  Úfloat8_e4m3fnr^   r_   r   r&   r   r   rÝ   r;   r   r(   r7   rÞ   rß   Úrealizer6   rà   rá   Ú	get_numelÚInputsKernelÚunwrap_storage_for_inputr+   r)   r'   r:   r   r`   ra   r   ÚequalÚ
zeros_liker   Úto_denserB   r   r	   rh   r   rd   r®   r¯   r   )rP   r   r    r   r!   rÜ   rt   r9  rä   rå   ro   rp   rq   rW   rr   Úw_zp_tensorru   rv   r   rZ   rw   r¬   ry   r  r=   rA   r<   Úaten_mkldnn_qlinear_unarys    `` ` ```````          @@@@€r.   rL  Ú1register_onednn_fusion_ops.<locals>.qlinear_unary°  së  ÿþ€ ð" !×*Ñ*Ó,´·±¼U×=PÑ=PÐ0QÓQð ØOóÐQð —Z‘Z“\ˆFÜ�6‹{˜Q‹ä˜˜R ¨¡Ð,Ó-�Ü˜g¤r§|¡|×4Ñ4Ü˜G“}¬Ò-Ð-Ð-ÜŸ'™'×5Ñ5Ü—L’L ´·±Ñ>ÀYð 6ð ‘ð —‘Ô!ÜÑ>¨7×+;Ñ+;Ô+=Ó>×>Ñ>ô # 7¨BÓ/�GÜ˜7×+Ñ+Ó-Ó.°&Ó8ÐTÐ:TÓTÐ8à‰|ô
 —w‘w×2Ñ2Ü—L’L ¬%¯+©+Ñ6¸Vð 3ð �ô ˜d¤B§L¡L×1Ñ1Ü˜D“z¤SÒ(Ð(Ð(Ü—w‘w×2Ñ2Ü—L’L ¬U¯[©[Ñ9Àð 3ð ‘ð —‘”à—>‘>Ó# qÓ(ÐTÐ*TÓTÐ(ð
 ‰|ô
 —w‘w×2Ñ2Ü—L’L ¬%¯+©+Ñ6¸Vð 3ð �ð �O‰OÔØ�L‰LŒNØ�~‰~Ó¤5§;¡;Ó.´:Ü—‘×8Ñ8¸Ó>Ü×!Ñ!÷4ñ 4ô
  Ÿg™g×/Ñ/°·±³Ñ@×CÑCÄEÇKÁKÓP�Ü—w‘w×2Ñ2Ü—L’L ´E·K±KÑ@ÀtÇ}Á}Ãð 3ð �ð "&¡™°4·>±>Ó3CˆJØ*,ˆGä×"×"¤f×&>×&>Ð&>Ü/6Ø¨V¸|ñ0Ñ,��F˜}ô ÜŸ™×@Ñ@ÀÓFÜ×)Ñ)÷ò ô ŸšÜ×(Ò(¬¯©×):Ñ):¸4¿=¹=»?Ñ)KÓLÜŸ™×)Ñ)¨$¯-©-«/Ñ:÷ñ ô ,¨F°}×EÑEÜ Ÿw™w×0Ñ0°×1GÑ1GÓ1IÑJ×SÑSÓU�Hô 1Ø Ø%ØØØóñ	Ø7Ø&Ø!÷|*÷ |*ò |*ð| Ÿ;™;›=¬U¯[©[¼%¿*¹*Ð,EÓEÐEÐEÜ#×/Ò/ØØà™<ð ˜G T¨=¸'À4ÑHà ¨$°¸wÈÈdÐSØ!%¨TÐ!1Ø)9à™<ó '9â2òô �7‹|˜qÓ Ô$9×$;Ñ$;ÜØ!(Ø&2Ø!-Ø!%Ø!(Ø&/ñ�ð ‘<Ø%)�F˜6‘NØ—‘Ø-×2Ò2à™<ð ˜G T¨=¸'À4ÑHà ¨$°¸wÈÈdÐSØñ	ð
 !ñôð !×)Ñ)Ó+¬q¯w©w×/@Ñ/@Ó@Ð@Ð@á<Ù<Ù<Ù<ñ	ˆMô Ü—‘×8Ñ8¸ÓAÜ×!Ñ!÷ñ ñ
 $M�˜aÑ ÜÜ—‘×8Ñ8¸Ó>Ü×!Ñ!÷ñ ñ $M�˜aÑ ä.ØØà‘<ð �G˜T =°'¸4Ñ@à˜ $¨°wÀÀdÐKØØ+ñˆFô �6‹{˜Q‹Ü˜fÐ&K¨¨s°¨Ð&K°V·_±_Ó5FÀrÑ5JÑ&KÓL�ØˆMrC   Úx2c                 óD  >^^^^^^^	^
^^^^^^^ ^!• U R                  5       nTR                  5       n[        U5      [        U5      :X  d   e[        U5      S:”  a(  US;   a"  [        U SUS   /5      n [        TSUS   /5      m[        T[        R
                  5      (       dT  [        T5      [        L d   e[        R                  R                  [        R                  " T[        R                  S9SS9mOeTR                  5         [        S TR                  5        5       5      (       a  [        T/ 5      m[        TR                  5       5      S;   d   S	5       eTc?  [        R                  R                  [        R                  " S
[        R                   S9SS9mUc?  [        R                  R                  [        R                  " S
[        R                   S9SS9n[        T[        R
                  5      (       dT  [        T5      ["        L d   e[        R                  R                  [        R                  " T[        R                   S9SS9mOTR                  5         TR                  5         UR                  5         UR%                  5       [        R                   :w  aÑ  [        [        R&                  R)                  U5      [        R*                  5      (       a•  [        R                  R,                  UR/                  5          R1                  [        R                   5      n[        R                  R                  [        R                  " U[        R                   S9UR/                  5       S9nUS:X  a’  T
[        R                  [        R2                  4;   aS  TR%                  5       [        R                  [        R2                  4;   a!  TR%                  5       T
:w  a  [5        TT
5      mOTR%                  5       T
:X  d   S5       eTR%                  5       m Tb  TR%                  5       OS m/ n[6        R8                  (       d  [6        R:                  (       Gaè  US;   Gaá  [=        XTUT
S9Gt nnpm[        [        R&                  R)                  T5      [        R*                  5      (       Ga“  [        TR?                  5       R@                  5      S
:X  Gak  [        [        R&                  R)                  U5      [        R*                  5      (       Ga.  [        RB                  " [        RD                  " [        R                  R,                  UR/                  5          5      [        R                  R,                  UR/                  5          5      (       a¬  [G        UX5      (       a›  [        R                  R,                  UR/                  5          nURI                  5       n[K        UUTTT5      u  mmm!UUUU	U
UUUUUUUU UU!U4S jn[L        RN                  " UUTc	  U TTUTUT/O	U TTUTUTT/TS LUTc  / SQO/ SQS9  [        U5      S
:X  d  [Q        5       (       aQ  [S        TT	T
UUUUTTTS9
nTc  S US'   URU                  T"RV                  " Tc	  U TTUTUT4O	U TTUTUTT4U40 UD65        UR/                  5       [        R                  R,                  ;   d   eS S S S.nTb  S US'   [Y        SUTc	  U TTUTUT/O	U TTUTUTT/UUS9n[        URZ                  RZ                  [        R\                  5      (       Ga  US:X  Ga  URZ                  RZ                  R^                  TR?                  5       :X  aâ  [        R
                  Ra                  [        R\                  " [        Rb                  " [        Rd                  " TTR?                  5       S95      URZ                  RZ                  Rf                  URZ                  RZ                  Rh                  URZ                  RZ                  Rj                  URZ                  RZ                  Rl                  S95      n[        U5      S:”  a+  US;   a%  [        U/ US S QUR                  5       S   P75      nU$ ) NrT   )r   r9   rU   rÚ   r   r2   c              3   ó*   #   • U  H	  oS :H  v •  M     g7frô   rõ   rö   s     r.   r/   ÚEregister_onednn_fusion_ops.<locals>.qlinear_binary.<locals>.<genexpr>  rø   rù   rú   rû   r   r    rÜ   r9   zCdtype of accum for qlinear post op sum should be the same as outputrü   c                 ó¦  >^^^^^	^
^^^^^• T[         R                  [         R                  [         R                  [         R                  4;   d   eU R                  5       mTR                  5       mTR                  5       mS mT(       a  Tc   eTR                  5       mTR                  5       mTR                  5       m
TR                  5       mS mTb  TR                  5       mUUUUUU
UUUUUU4S jn[        R                  " U R                  5       [         R                  UU R                  5       S9nTS:w  a  [        UTTTS9nT[         R                  :X  aL  UR                  5       mUU4S jn[        R                  " UR                  5       TUUR                  5       S9nU$ T[         R                  [         R                  4;   a…  SSKJm  UR                  5       m	UUU	4S jn[        R                  " UR                  5       [         R                  [        R                  " U[!        T5      [#        T5      S	9UR                  5       S9nU$ )
Nc           	      ó  >• T" U 5      nT" U 5      nS nS nS nU S   4nT(       d  T" S5      nT" S5      nT" U5      n[         R                  " U[        R                  5      nT" U5      nS nT(       a  Tc   eT" U5      n[	        TUUUUUU5      n	Tb}  T" U5      n
T[        R                  [        R
                  4;   d   eT[        R
                  :X  a%  [         R                  " U
[        R                  5      n
[         R                  " Xš5      n	T[        R                  [        R
                  4;   d   eT[        R
                  :X  a%  [         R                  " U[        R                  5      n[         R                  " X’5      n	U	$ r   r  )r  rD   Ú_x2rF   rG   rH   r  rE   rI   rN   r  rt   r  r  r  r=   r  r	  Úx2_dtypeÚ	x2_loaderr
  r  r  s              €€€€€€€€€€€€r.   r  Ú^register_onednn_fusion_ops.<locals>.qlinear_binary.<locals>.epilogue_creator.<locals>.inner_fn}  s\  ø€ á$0°Ó$7˜EÙ"+¨EÓ"2˜CØ'+˜HØ$(˜EØ'+˜HØ49¸"±I°<Ð0Þ#BÙ+9¸"Ó+= Ù(3°B« Ù+9Ð:NÓ+O ä$'§L¢L°¼¿¹Ó$F˜EÙ,AÐBVÓ,W˜MØ)-˜JÞ>Ø'7Ñ'CÐ CÐ'CÙ-=Ð>RÓ-S 
ä#JØ ?Ø %Ø -Ø (Ø %Ø (Ø *ó$˜Dð  $Ñ/á(3Ð4HÓ(I à'1´e·m±mÄUÇ^Á^Ð5TÓ'TÐ TÐ'TØ#-´·±Ó#?Ü,/¯LªL¸ÄÇÁÓ,N EÜ'*§w¢w¨tÓ'; ð $,´·±¼u¿~¹~Ð/NÓ#NÐNÐ#NØ'¬5¯>©>Ó9Ü&)§l¢l°3¼¿¹Ó&F Ü#&§7¢7¨4Ó#5˜Dà#'˜KrC   r  r    r�   c                 óB   >• T" U 5      n[         R                  " UT5      $ rK   r  r  s     €€r.   r  Úrregister_onednn_fusion_ops.<locals>.qlinear_binary.<locals>.epilogue_creator.<locals>.inner_fn_cast_output_to_bf16Á  r  rC   r   r  c                 óª  >• T" U 5      nT	" SU-  U[         R                  S9u  pB[        R                  " X4-  5      U-   nT
[         R                  :X  a  T	" SS[         R                  S9u  pgOT	" SS[         R                  S9u  pg[        R
                  " [        R                  " XV5      U5      n[        R                  " U[         R                  5      $ r  r  r#  s            €€€r.   r,  Úfregister_onednn_fusion_ops.<locals>.qlinear_binary.<locals>.epilogue_creator.<locals>.inner_fn_requantÐ  s°   ø€ Ù(<¸UÓ(C Ù8IØ$'¨%¡K°Ä5Ç=Á=ñ9"Ñ 5 	ô '*§i¢i°Ñ0AÓ&BÀZÑ&O Ø#/´5·;±;Ó#>Ù1BØ()¨3´e·m±mñ2&¡J D¨$ñ 2CØ(,¨c¼¿¹ñ2&¡J Dô +.¯+ª+´c·k²kÀ#Ó6LÈdÓ*S Ü'*§|¢|°G¼U¿[¹[Ó'IÐ IrC   r.  r/  ) r7  r  r8  r  r,  r  r  r  r  r+  r  r	  r`  r
  r  r  rt   r  r9  rä   rå   r”   r’   r“   r=   r!   rA   rX  r_  r   r<   r    s         @@@@@@@@@@@€€€€€€€€€€€€€€€€r.   rZ   ÚLregister_onednn_fusion_ops.<locals>.qlinear_binary.<locals>.epilogue_creatore  s  ÿû€ à+Ü!ŸM™MÜ!ŸN™NÜ!ŸK™KÜ!ŸJ™Jð	0ó  ð ð  ð (4×'?Ñ'?Ó'A˜Ø$&§N¡NÓ$4˜	Ø0>×0JÑ0JÓ0LÐ-Ø+/Ð(Þ:Ø#,Ñ#8Ð8Ð#8Ø/8×/DÑ/DÓ/FÐ,Ø)0×)<Ñ)<Ó)>˜Ø)0×)<Ñ)<Ó)>˜Ø&*×&6Ñ&6Ó&8˜à&*˜ØÑ+Ø*.×*:Ñ*:Ó*<˜K÷.(÷ .(ð .(ô` &(§\¢\Ø#/×#:Ñ#:Ó#<Ü"'§-¡-Ø%-Ø#/×#8Ñ#8Ó#:ñ	&˜
ð &¨Ó/Ü)BØ *Ø *Ø(5Ø*9ñ	*˜Jð (¬5¯>©>Ó9Ø1;×1GÑ1GÓ1IÐ.öIô *,¯ªØ'1×'EÑ'EÓ'GØ&2Ø)EØ'1×':Ñ':Ó'<ñ	*˜JðN  *Ð)ðC *¬e¯k©k¼5¿:¹:Ð-FÓFÝCà3=×3IÑ3IÓ3KÐ0÷Jô" *,¯ªØ'1×'EÑ'EÓ'GÜ&+§k¡kÜ)2×):Ò):Ø$4Ü*/°«.Ü/2°<Ó/@ñ*"ð
 (2×':Ñ':Ó'<ñ	*˜Jð  *Ð)rC   )r   r·   r   rT   r;  r<  r=  )é   r   r·   r   rT   r;  r<  r=  r>  )
r?  r@  rå   Úother_scaleÚother_zpÚbinary_post_opr‘   Úunary_post_opÚunary_post_op_argsÚunary_post_op_algorithmrt   c                 óX   • [         R                  R                  U R                  5          $ rK   r¥   r¦   s    r.   r§   ÚDregister_onednn_fusion_ops.<locals>.qlinear_binary.<locals>.<lambda>  r©   rC   c                 óX   • [         R                  R                  U R                  5          $ rK   r¥   r¦   s    r.   r§   ro    r©   rC   c                 óX   • [         R                  R                  U R                  5          $ rK   r¥   r¦   s    r.   r§   ro    r©   rC   )r·   r;  r<  c                 óX   • [         R                  R                  U R                  5          $ rK   r¥   r¦   s    r.   r§   ro    rJ  rC   rg  Úqlinear_binaryr«   )r%   rW   )rW   ÚinputsÚmake_kernel_renderÚtemplateÚchoice)7r^   r_   r   r&   r   r   rÝ   r;   r   r(   r7   r8   rÞ   rß   rN  r6   rà   rá   rë   rP  rQ  r+   r)   r'   r:   rê   r   r   r`   ra   r   Ú
get_layoutÚsizerR  rS  r   rT  rB   r	   rh   r   rd   r®   r¯   r   r%   ÚCppTemplateBufferrW   rn   ÚNonOwningLayoutÚReinterpretViewrt  ru  rv  rw  )#rP   r   r    r   r!   rÜ   rX  rt   r9  rä   rå   Úx2_scaleÚx2_zpr�   rï   r’   r“   r”   rW   rr   Úx2_sizerU  ru   rv   r   rZ   rw   r¬   ry   r  r=   rA   r_  r<   Úaten_mkldnn_qlinear_binarys#    `` ` `````    ```           @@@@@€r.   rs  Ú2register_onednn_fusion_ops.<locals>.qlinear_binaryß  s>  ÿÿø€ ð6 —Z‘Z“\ˆFØ—k‘k“mˆGÜ�v“;¤# g£,Ó.Ð.Ð.Ü�6‹{˜Q‹ ;°.Ó#@ä˜˜R ¨¡Ð,Ó-�Ü˜"˜r 7¨2¡;Ð/Ó0�Ü˜g¤r§|¡|×4Ñ4Ü˜G“}¬Ò-Ð-Ð-ÜŸ'™'×5Ñ5Ü—L’L ´·±Ñ>ÀYð 6ð ‘ð —‘Ô!ÜÑ>¨7×+;Ñ+;Ô+=Ó>×>Ñ>ô # 7¨BÓ/�GÜ˜7×+Ñ+Ó-Ó.°&Ó8ÐTÐ:TÓTÐ8à‰|Ü—w‘w×2Ñ2Ü—L’L ¬%¯+©+Ñ6¸Vð 3ð �ð ‰|Ü—w‘w×2Ñ2Ü—L’L ¬%¯+©+Ñ6¸Vð 3ð �ô ˜d¤B§L¡L×1Ñ1Ü˜D“z¤SÒ(Ð(Ð(Ü—w‘w×2Ñ2Ü—L’L ¬U¯[©[Ñ9Àð 3ð ‘ð —‘”ð
 �O‰OÔØ�L‰LŒNØ�~‰~Ó¤5§;¡;Ó.´:Ü—‘×8Ñ8¸Ó>Ü×!Ñ!÷4ñ 4ô  Ÿg™g×/Ñ/°·±³Ñ@×CÑCÄEÇKÁKÓP�Ü—w‘w×2Ñ2Ü—L’L ´E·K±KÑ@ÀtÇ}Á}Ãð 3ð �ð ˜eÓ#ØÜ—M‘MÜ—N‘Nð$ó ð —l‘l“n¬¯©¼¿¹Ð(GÓGØ—|‘|“~¨Ó5ô
 & b¨,Ó7˜øàŸ<™<›>¨\Ó9ð Ø]óÐ9ð —|‘|“~ˆHØ-1Ñ-=˜Ÿ™Ô)À4ˆJØ*,ˆGÜ×#×#¤v×'?×'?Ð'?À[ð Uô Fô 4;Ø b°À<ñ4Ñ0��F˜A¨bô ÜŸ™×@Ñ@ÀÓFÜ×)Ñ)÷ò ô ˜DŸO™OÓ-×2Ñ2Ó3°qÔ8Ü"ÜŸ™×@Ñ@ÀÓFÜ×)Ñ)÷ò ô ŸšÜ×(Ò(¬¯©×):Ñ):¸4¿=¹=»?Ñ)KÓLÜŸ™×)Ñ)¨$¯-©-«/Ñ:÷ñ ô .¨f°a×GÑGä Ÿw™w×0Ñ0°×1GÑ1GÓ1IÑJ�HØ'×0Ñ0Ó2�Hô
 1Ø Ø%ØØØóñ	Ø7Ø&Ø!÷G*÷ G*ô G*ôR $×/Ò/ØØà™<ð ˜G T¨=¸'À4ÈÑLà ¨$°¸wÈÈbÐRVÐWØ!%¨TÐ!1Ø)9ð  ™<ó '<â5òô �7‹|˜qÓ Ô$9×$;Ñ$;ÜØ!(Ø&2Ø!-Ø (Ø"Ø#.Ø!&Ø",Ø'4Ø,;ñ�ð ‘<Ø%)�F˜6‘NØ—‘Ø.×3Ò3à™<ð ˜G T¨=¸'À4ÈÑLà ¨$°¸wÈÈbÐRVÐWØñ	ð
 !ñôð !×)Ñ)Ó+¬q¯w©w×/@Ñ/@Ó@Ð@Ð@á<Ù<Ù<ñˆMð
 ÑÙ#L�˜aÑ Ü.Ø Øà‘<ð �G˜T =°'¸4ÀÑDà˜ $¨°wÀÀbÈ$ÐOØØ+ñˆFô ˜6Ÿ;™;×+Ñ+¬R×-AÑ-A×BÒBØ 5Ô(Ø—K‘K×$Ñ$×+Ñ+¨r¯}©}«Ó>ô Ÿ™×,Ñ,Ü×(Ò(Ü!×1Ò1Ü×.Ò.°B¸r¿}¹}»ÑOó ð  &Ÿ{™{×/Ñ/×6Ñ6Ø+1¯;©;×+;Ñ+;×+NÑ+NØ!'§¡×!1Ñ!1×!:Ñ!:Ø%Ÿ{™{×/Ñ/×6Ñ6ñó
�ô �6‹{˜Q‹ ;°.Ó#@Ü˜fÐ&K¨¨s°¨Ð&K°V·_±_Ó5FÀrÑ5JÑ&KÓL�ØˆMrC   zmkl::_mkl_linearrV   Úpacked_wÚorig_wc          	      ór  >• / n[         R                  (       d  [         R                  (       aH  [        USS/5      n[	        XUS9Gt p…p[        XPU5      (       a  [        R                  " UUXU/SSS/S9  [        U5      S:X  d  [        5       (       a#  UR                  TR                  XU4US US95        UR                  5       [        R                  R                  ;   d   eUR                  5       [        R                  R                  ;   d   eS S	 S
.n	[!        SUXU/UU	S9n
Ub  [#        X£5      n
U
$ )Nr   r   rV   TrT   )rY   r¢   )r£   Ú
batch_sizec                 óX   • [         R                  R                  U R                  5          $ rK   r¥   r¦   s    r.   r§   ÚGregister_onednn_fusion_ops.<locals>.mkl_packed_linear.<locals>.<lambda>i  ó   € ¤§¡×!2Ñ!2°1·:±:³<Ò!@rC   c                 óX   • [         R                  R                  U R                  5          $ rK   r¥   r¦   s    r.   r§   r‡  j  rˆ  rC   )r   rT   Úpacked_linearr«   )r   r`   ra   r   r   r   r	   rh   r_   r   r®   r¯   r'   r   r(   r)   r   r   )rP   r‚  rƒ  rR   r…  rW   ru   r°   rv   r¬   ry   Úaten_mkl_linears              €r.   Úmkl_packed_linearÚ5register_onednn_fusion_ops.<locals>.mkl_packed_linearD  s?  ø€ ð /1�Ü×&×&¬&×*B×*BÜ#*¨6°A°q°6Ó#:�LÜ29Ø°ñ3Ñ/�Q ô -¨V¸×EÑEÜ'×3Ò3Ø#Ø"Ø¨&Ð1Ø$(Ø+,¨a¨&òô �w“< 1Ó$Ô(=×(?Ñ(?Ø—N‘NØ'×,Ñ,Ø¨&Ð1°6¸TÈjð -ð ôð  ×(Ñ(Ó*¬a¯g©g×.?Ñ.?Ó?Ð?Ð?Ø—‘Ó(¬A¯G©G×,=Ñ,=Ó=Ð=Ð=ñ AÙ@ñ!�ô %>Ø#ØØ &Ð)ØØ"/ñ%�ð ‘=Ü  ›^�FØ�rC   rK   )&r8   Ú_CÚ_has_mkldnnÚ r€   r   r   ÚmkldnnÚ_linear_pointwiseÚLinearUnaryrn   ÚbinaryÚLinearBinaryÚonednnÚqlinear_pointwiseÚQLinearPointwisePT2EÚQLinearPointwiseBinaryPT2EÚ_convolution_pointwiseÚ_convolution_pointwise_Ú _convolution_transpose_pointwiser   rÖ   ÚdefaultÚqconv_pointwiser   r   Úboolrj   rá   Úqconv2d_pointwiseÚbinary_tensorÚhas_mklÚmklÚ_mkl_linearÚMKLPackedLinearr®   r   r   )Úcpu_needs_realized_inputsrŠ   r•   r™   rª   rº   rÁ   rÖ   ræ   rð   rL  rs  rŒ  r‹  r¼   r±   r€  rV  r€   s                @@@@@@r.   Úregister_onednn_fusion_opsr§  Æ   sÆ  ý€ Ü‡x�x××ÐÝä#5Ü�I‰I×Ñ×.Ñ.Ø'Ø!Ø$×0Ñ0×7Ñ7ñ	$
Ð ô %7Ü�I‰I×Ñ×.Ñ.×5Ñ5Ø'Ø!Ø$×1Ñ1×8Ñ8ñ	%
Ð!ô %7Ü�I‰I×Ñ×.Ñ.Ø'Ø!Ø$×9Ñ9×@Ñ@ñ	%
Ð!ô &8Ü�I‰I×Ñ×.Ñ.×5Ñ5Ø'Ø!Ø$×?Ñ?×FÑFñ	&
Ð"ô �I‰I×Ñ×3Ñ3Ü�I‰I×Ñ×4Ñ4Ü�I‰I×Ñ×=Ñ=Ü�I‰I×Ñ×.Ñ.Ü×!Ñ!×)Ñ)Ü�I‰I×Ñ×,Ñ,ð
ð 	"ô 
œ5Ÿ9™9×+Ñ+×BÑBÓ	Cð	Üð	äð	ô ö	ó 
Dð	ô6 
œ5Ÿ9™9×+Ñ+×BÑB×IÑIÓ	Jð	Üð	äð	ô ð	ô ö		ó 
Kð	ôB 
œ5Ÿ9™9×+Ñ+×CÑC×JÑJÓ	Kð	Üð	äð	ô ð	ô ö		ó 
Lð	ôB 
œ5Ÿ9™9×+Ñ+×=Ñ=Ó	>ð ñA	ÜðA	äðA	ô ÷A	ó 
?ðA	ôF 
œ5Ÿ9™9×+Ñ+×=Ñ=×DÑDÓ	EàQUñ=	Üð=	Ü&ð=	Ü+4ð=	Ü9B÷=	ó 
Fð=	ô~ 
œ5Ÿ9™9×+Ñ+×LÑLÓ	Mð	Üð	äð	ô ö	ó 
Nð	ô: 
œ4×0Ñ0×8Ñ8Ó	9ð&	Üð&	äð&	ô ð&	ô ð	&	ô
 ð&	ô ð&	ô ð&	ô ð&	ô œc™ð&	ô ð&	ô ð&	ô ð&	ô ð&	ô  ð&	ô ð&	ô  ö!&	ó 
:ð&	ôP 
œ5Ÿ9™9×+Ñ+×;Ñ;ÐQUÑ	Vð<	Üð<	ô %ð	<	ô
 ð<	ô ö<	ó 
Wð<	ô| 
Ü�I‰I×Ñ×.Ñ.×5Ñ5È4ñ

ô 
Ü�I‰I×Ñ×.Ñ.×<Ñ<ÐRVñ

ðQ	ÜðQ	ô %ð	Q	ô
 ðQ	ô ðQ	ô öQ	ó

ó

ðQ	ôf 
œ5Ÿ9™9×+Ñ+×=Ñ=ÐSWÑ	Xð ñl	Üðl	ô %ð	l	ô
 ðl	ô ðl	ô ÷l	ó 
Yðl	ô\	 
Ü�I‰I×Ñ×.Ñ.×5Ñ5È4ñ

ô 
Ü�I‰I×Ñ×.Ñ.×<Ñ<ÐRVñ

ð, ñ'T	ÜðT	ô %ð	T	ô
 ðT	ô ðT	ô ðT	ô ÷T	ó

ó

ðT	ôl
 �8‰8××Ü0Ü—	‘	—‘×)Ñ)Ø"Ø %Ø(×8Ñ8×?Ñ?ñ	ˆOð &×,Ñ,¬U¯Y©Y¯]©]×-FÑ-FÔGäœuŸy™yŸ}™}×8Ñ8Ó9ð ò0Üð0ä#ð0ô "ð0ô œIÑ&÷	0ó :ð0ôd 	"Ð";Õ<ða% rC   )NNNN)0r5  Útypingr   r   r8   Útorch.utils._pytreeÚutilsÚ_pytreerÓ   Ú torch._inductor.kernel.mm_commonr   r�  r   r   Úcodegen.cpp_gemm_templater	   Ú!codegen.cpp_grouped_gemm_templater
   Úcodegen.cpp_utilsr   r   r4  r   r   r   r   r   r   r   Úselect_algorithmr   r   r   r   r   Úvirtualizedr   r   r   ÚTensorÚtuplerŸ  rB   rO   rj   r~   Ú_inductor_lowering_functionr§  rõ   rC   r.   Ú<module>rµ     sj  ðã ß "ã ß $Ð $Ý 4ç Ý 6Ý EÝ 8Ý ÷÷ ñ ÷ñ ÷
 @ß )Ñ )ð-Ø�l‰lð-à—<‘<ð-ð �\‰\ð-ð �,‰,ð	-ð
 �\‰\ð-ð ØØ‡L�LØˆR�\‰\Ñðñô-ð`.Ø%)ð.àð.ð ð.ð �xÑ ð	.ð
 �HÑð.ð �xÑ ð.ð ˜Ñ"ð.ð ô.ðj 
ØØØñ?Øð?àˆI�ð?ð ˆI�õ?ðD 59Ð Ô 1óq=rC   