§
    ƒÛgÈ  ã                   óÐ   — d dl Z d dlmZ d dlmZ d dlmZ d dlmZm	Z	 d dl
mZ d dlmZ d dlmZmZ  G d	„ d
e¦  «        Z G d„ de¦  «        Zedk    r ej        ¦   «          dS dS )é    N)Únjit)Úoverload)ÚConfigStack)ÚFlagsÚDEFAULT_FLAGS)Útypes)Údefault_mangler)ÚTestCaseÚunittestc                   ó   — e Zd Zd„ ZdS )ÚTestCompilerFlagCachedOverloadc                 ó  ‡‡— d„ Št          ‰¦  «        d„ ¦   «         }t          d¬¦  «        ˆfd„¦   «         Št          ¦   «         ˆˆfd„¦   «         } |¦   «         \  }}|                      |d¦  «         |                      |d¦  «         d S )	Nc                  ó   — d S ©N© r   ó    úU/granary/edev/quantum/lib/python3.11/site-packages/numba/tests/test_compiler_flags.pyÚfastmath_statuszQTestCompilerFlagCachedOverload.test_fastmath_in_overload.<locals>.fastmath_status   s   € ØˆDr   c                  óh   ‡— t          ¦   «                              ¦   «         } | j        rdndŠˆfd„}|S )NúHas fastmathúNo fastmathc                  ó   •— ‰ S r   r   )Úvals   €r   ÚcodegenzeTestCompilerFlagCachedOverload.test_fastmath_in_overload.<locals>.ov_fastmath_status.<locals>.codegen   s   ø€ Ø�
r   )r   ÚtopÚfastmath)Úflagsr   r   s     @r   Úov_fastmath_statuszTTestCompilerFlagCachedOverload.test_fastmath_in_overload.<locals>.ov_fastmath_status   sH   ø€ å‘M”M×%Ò%Ñ'Ô'ˆEØ$)¤NÐE�.�.¸ˆCðð ð ð ð ð ˆNr   T)r   c                  ó   •—  ‰ ¦   «         S r   r   )r   s   €r   Úset_fastmathzNTestCompilerFlagCachedOverload.test_fastmath_in_overload.<locals>.set_fastmath   s   ø€ à"�?Ñ$Ô$Ð$r   c                  ó4   •—  ‰¦   «         }  ‰¦   «         }| |fS r   r   )ÚaÚbr   r    s     €€r   ÚfoozETestCompilerFlagCachedOverload.test_fastmath_in_overload.<locals>.foo    s$   ø€ à�Ñ!Ô!ˆAØ�‘”ˆAØ�q�6ˆMr   r   r   )r   r   ÚassertEqual)Úselfr   r$   r"   r#   r   r    s        @@r   Útest_fastmath_in_overloadz8TestCompilerFlagCachedOverload.test_fastmath_in_overload   sÙ   øø€ ð	ð 	ð 	õ 
�/Ñ	"Ô	"ð	ð 	ñ 
#Ô	"ð	õ 
�tÐ	Ñ	Ô	ð	%ð 	%ð 	%ð 	%ñ 
Ô	ð	%õ 
‰Œð	ð 	ð 	ð 	ð 	ñ 
Œð	ð
 ˆs‰uŒu‰ˆˆ1Ø×Ò˜˜MÑ*Ô*Ð*Ø×Ò˜˜NÑ+Ô+Ð+Ð+Ð+r   N)Ú__name__Ú
__module__Ú__qualname__r'   r   r   r   r   r      s#   € € € € € ð,ð ,ð ,ð ,ð ,r   r   c                   ó&   — e Zd Zd„ Zd„ Zd„ Zd„ ZdS )ÚTestFlagManglingc                 óÀ   ‡ — ˆ fd„}t          ¦   «         } ||¦  «          |t          ¦  «         t          ¦   «         }d|_        d|_        d|_         ||¦  «         d S )Nc                 óª   •— |                       ¦   «         }|                      |¦  «        }‰                     ||                      ¦   «         ¦  «         d S r   )Úget_mangle_stringÚdemangler%   Úsummary)r   ÚmangledÚoutr&   s      €r   Úcheckz-TestFlagMangling.test_demangle.<locals>.check/   sI   ø€ Ø×-Ò-Ñ/Ô/ˆGØ—.’. Ñ)Ô)ˆCà×Ò˜S %§-¢-¡/¤/Ñ2Ô2Ð2Ð2Ð2r   T)r   r   Úno_cpython_wrapperÚnrtr   )r&   r4   r   s   `  r   Útest_demanglezTestFlagMangling.test_demangle-   sx   ø€ ð	3ð 	3ð 	3ð 	3ð 	3õ ‘”ˆØˆˆe‰Œˆð 	ˆ�mÑÔÐõ ‘”ˆØ#'ˆÔ ØˆŒ	ØˆŒØˆˆe‰Œˆˆˆr   c                 óæ   — t          ¦   «         }d|_        d|_        |                      t	          |                     ¦   «         ¦  «        t	          |                     ¦   «         ¦  «        ¦  «         d S )NT)r   r6   Úauto_parallelÚ
assertLessÚlenr/   r1   )r&   r   s     r   Útest_mangled_flags_is_shorterz.TestFlagMangling.test_mangled_flags_is_shorterC   sX   € å‘”ˆØˆŒ	Ø"ˆÔØ�Š�˜E×3Ò3Ñ5Ô5Ñ6Ô6½¸E¿MºM¹O¼OÑ8LÔ8LÑMÔMÐMÐMÐMr   c                 ó|  — t          ¦   «         }d|_        d|_        d|_        d|_        |                      t          |                     ¦   «         ¦  «        t          |                     ¦   «         ¦  «        ¦  «         | 	                    |                     ¦   «         ¦  «        }|  
                    d|¦  «         d S )NTÚalwaysÚ0x)r   r6   r9   r   Úinliner:   r;   r/   r1   r0   ÚassertNotIn)r&   r   Ú	demangleds      r   Ú/test_mangled_flags_with_fastmath_parfors_inlinez@TestFlagMangling.test_mangled_flags_with_fastmath_parfors_inlineJ   s™   € å‘”ˆØˆŒ	Ø"ˆÔØˆŒØˆŒØ�Š�˜E×3Ò3Ñ5Ô5Ñ6Ô6½¸E¿MºM¹O¼OÑ8LÔ8LÑMÔMÐMØ—N’N 5×#:Ò#:Ñ#<Ô#<Ñ=Ô=ˆ	à×Ò˜˜yÑ)Ô)Ð)Ð)Ð)r   c                 ó  — d}t           j        f}t          ¦   «         }d|_        d|_        t          |||                     ¦   «         g¬¦  «        }d}t          j        d|t          |¦  «        d…         ¦  «        }| 
                    d¦  «        }t          |¦  «        t          |¦  «        z   }|||t          |¦  «        z   …         }	t          j        |	¦  «        }
|                      |
|                     ¦   «         ¦  «         dS )	z,Test demangling of flags from mangled symbolr$   TÚ
myhardware)Úabi_tagsÚ_Z3fooBz[0-9]+Nr   )r   Úint32r   r6   Útarget_backendr	   r/   ÚreÚmatchr;   ÚgroupÚintr0   r%   r1   )r&   ÚfnameÚargtypesr   ÚnameÚprefixÚmÚsizeÚbaseÚabi_mangledrB   s              r   Ú$test_demangling_from_mangled_symbolsz5TestFlagMangling.test_demangling_from_mangled_symbolsV   sí   € ð ˆÝ”;�<ˆÝ‘”ˆØˆŒ	Ø+ˆÔÝØ�8 u×'>Ò'>Ñ'@Ô'@Ð&Að
ñ 
ô 
ˆð ˆåŒH�X˜t¥C¨¡K¤K L LÔ1Ñ2Ô2ˆØ�wŠw�q‰zŒzˆå�6‰{Œ{�S ™YœYÑ&ˆØ˜4 ¥s¨4¡y¤yÑ 0Ð0Ô1ˆå”N ;Ñ/Ô/ˆ	Ø×Ò˜ E§M¢M¡O¤OÑ4Ô4Ð4Ð4Ð4r   N)r(   r)   r*   r7   r<   rC   rV   r   r   r   r,   r,   +   sS   € € € € € ðð ð ð,Nð Nð Nð
*ð 
*ð 
*ð5ð 5ð 5ð 5ð 5r   r,   Ú__main__)rJ   Únumbar   Únumba.core.extendingr   Únumba.core.targetconfigr   Únumba.core.compilerr   r   Ú
numba.corer   Únumba.core.funcdescr	   Únumba.tests.supportr
   r   r   r,   r(   Úmainr   r   r   ú<module>r`      s  ðØ 	€	€	€	à Ð Ð Ð Ð Ð Ø )Ð )Ð )Ð )Ð )Ð )Ø /Ð /Ð /Ð /Ð /Ð /Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø Ð Ð Ð Ð Ð Ø /Ð /Ð /Ð /Ð /Ð /à 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2ð,ð ,ð ,ð ,ð , Xñ ,ô ,ð ,ð<@5ð @5ð @5ð @5ð @5�xñ @5ô @5ð @5ðF ˆzÒÐØ€H„M�O„O€O€O€Oð Ðr   