ó
    „ñ:iX#  ã                   óX  • S r SSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSK	J
r  SSKrSSKJr  SSKJr  SSKJr  SSKJr  SrSrS	r\R0                  " \R2                  \R2                  \R2                  5      r " S
 S\5      r " S S\5      r\S:X  a  \R<                  " 5         gg)z
Tests for numba.core.codegen.
é    N)Únjit)ÚJITCPUCodegen)Úglobal_compiler_lock)ÚTestCasezb
    define i32 @sum(i32 %.1, i32 %.2) {
      %.3 = add i32 %.1, %.2
      ret i32 %.3
    }
    z›
    define i32 @"__main__.ising_element_update$1.array(int8,_2d,_C).int64.int64"(i32 %.1, i32 %.2) {
      %.3 = add i32 %.1, %.2
      ret i32 %.3
    }
a  
    declare i32 @"__main__.ising_element_update$1.array(int8,_2d,_C).int64.int64"(i32 %.1, i32 %.2)

    define i32 @sum(i32 %.1, i32 %.2) {
      %.3 = call i32 @"__main__.ising_element_update$1.array(int8,_2d,_C).int64.int64"(i32 %.1, i32 %.2)
      ret i32 %.3
    }
c                   ó˜   • \ rS rSrSrS rS rSS jr\S 5       r	S r
S	 rS
 rS rS rS rS rS rS r\R(                  S 5       rSrg)ÚJITCPUCodegenTestCaseé6   z
Test the JIT code generation.
c                 óN   • [         R                  " 5         [        S5      U l        g )NÚtest_codegen)r   Úacquirer   Úcodegen©Úselfs    Ú[/srv/projetos/modelo_ml_acdoc/venv/lib/python3.13/site-packages/numba/tests/test_codegen.pyÚsetUpÚJITCPUCodegenTestCase.setUp;   s   € Ü×$Ò$Ô&Ü$ ^Ó4ˆ�ó    c                 ó2   • U ? [        R                  " 5         g ©N)r   r   Úreleaser   s    r   ÚtearDownÚJITCPUCodegenTestCase.tearDown?   s   € ØˆLÜ×$Ò$Õ&r   Nc                 ó~  • U R                   R                  S5      n[        R                  " U5      nUR	                  5         UR                  U5        U(       ac  U R                   R                  S5      n[        R                  " U5      nUR	                  5         UR                  U5        UR                  U5        U$ )NÚcompiled_moduleÚlinking_module)r   Úcreate_libraryÚllÚparse_assemblyÚverifyÚadd_llvm_moduleÚadd_linking_library)r   ÚasmÚlinking_asmÚlibraryÚ	ll_moduleÚlinking_librarys         r   Úcompile_moduleÚ$JITCPUCodegenTestCase.compile_moduleC   s–   € Ø—,‘,×-Ñ-Ð.?Ó@ˆÜ×%Ò% cÓ*ˆ	Ø×ÑÔØ×Ñ 	Ô*ÞØ"Ÿl™l×9Ñ9Ð:JÓKˆOÜ×)Ò)¨+Ó6ˆIØ×ÑÔØ×+Ñ+¨IÔ6Ø×'Ñ'¨Ô8Øˆr   c                 ó¼   • [        S5      nUR                  U5      nUR                  S5      nU(       d   U5       e[        U5      nU" SS5      nUS:X  d   U5       eg )NÚother_codegenÚsumé   é   é   )r   Úunserialize_libraryÚget_pointer_to_functionÚctypes_sum_ty)ÚclsÚstater   r$   ÚptrÚcfuncÚress          r   Ú_check_unserialize_sumÚ,JITCPUCodegenTestCase._check_unserialize_sumP   s]   € ä Ó0ˆØ×-Ñ-¨eÓ4ˆØ×-Ñ-¨eÓ4ˆÞˆ�C‹ˆsÜ˜cÓ"ˆÙ�A�q‹kˆØ�a‹xÐ˜Ó‰xr   c                 óŽ  • U R                  [        5      nUR                  S5      nU R                  U[        5        [        U5      nU R                  U" SS5      S5        U R                  [        [        5      nUR                  S5      nU R                  U[        5        [        U5      nU R                  U" SS5      S5        g )Nr+   r,   r-   r.   )	r'   Úasm_sumr0   ÚassertIsInstanceÚintr1   ÚassertEqualÚasm_sum_outerÚasm_sum_inner)r   r$   r4   r5   Úlibrary2s        r   Útest_get_pointer_to_functionÚ2JITCPUCodegenTestCase.test_get_pointer_to_functionZ   s¦   € Ø×%Ñ%¤gÓ.ˆØ×-Ñ-¨eÓ4ˆØ×Ñ˜c¤3Ô'Ü˜cÓ"ˆØ×Ñ™˜q !› aÔ(ð ×&Ñ&¤}´mÓDˆØ×.Ñ.¨uÓ5ˆØ×Ñ˜c¤3Ô'Ü˜cÓ"ˆØ×Ñ™˜q !› aÕ(r   c                 óº   • U R                   R                  5       n[        R                  " U5        [	        S5      nU R                  UR                  5       U5        g )NÚxxx)r   Úmagic_tupleÚpickleÚdumpsr   r=   )r   ÚtupÚcg2s      r   Útest_magic_tupleÚ&JITCPUCodegenTestCase.test_magic_tuplel   sA   € Ø�l‰l×&Ñ&Ó(ˆÜ�Š�SÔÜ˜EÓ"ˆØ×Ñ˜Ÿ™Ó*¨CÕ0r   c                 ó&   • U R                  U5        g r   )r7   )r   r3   s     r   Ú_check_serialize_unserializeÚ2JITCPUCodegenTestCase._check_serialize_unserializet   s   € Ø×#Ñ# EÕ*r   c                 ó  • [         R                  " [        R                  " US5      5      nS[	        U R
                  R                  S9-  n[        R                  " [        R                  SX2R                  5       /5        g )Néÿÿÿÿa  if 1:
            import base64
            import pickle
            import sys
            from numba.tests.test_codegen import %(test_class)s

            state = pickle.loads(base64.b64decode(sys.argv[1]))
            %(test_class)s._check_unserialize_sum(state)
            )Ú
test_classz-c)Úbase64Ú	b64encoderF   rG   ÚdictÚ	__class__Ú__name__Ú
subprocessÚ
check_callÚsysÚ
executableÚdecode)r   r3   ÚargÚcodes       r   Ú _check_unserialize_other_processÚ6JITCPUCodegenTestCase._check_unserialize_other_processw   s^   € Ü×ÒœvŸ|š|¨E°2Ó6Ó7ˆðô  $§.¡.×"9Ñ"9Ñ:ñ;ˆô 	×ÒœsŸ~™~¨t°T¿:¹:»<ÐHÕIr   c                 óz   • U R                  [        [        5      nUR                  5       nU R	                  U5        g r   )r'   r>   r?   Úserialize_using_bitcoderM   ©r   r$   r3   s      r   Ú"test_serialize_unserialize_bitcodeÚ8JITCPUCodegenTestCase.test_serialize_unserialize_bitcode„   s0   € Ø×%Ñ%¤m´]ÓCˆØ×/Ñ/Ó1ˆØ×)Ñ)¨%Õ0r   c                 óz   • U R                  [        [        5      nUR                  5       nU R	                  U5        g r   )r'   r>   r?   ra   r^   rb   s      r   Ú&test_unserialize_other_process_bitcodeÚ<JITCPUCodegenTestCase.test_unserialize_other_process_bitcode‰   s0   € Ø×%Ñ%¤m´]ÓCˆØ×/Ñ/Ó1ˆØ×-Ñ-¨eÕ4r   c                 óš   • U R                  [        [        5      nUR                  5         UR	                  5       nU R                  U5        g r   )r'   r>   r?   Úenable_object_cachingÚserialize_using_object_coderM   rb   s      r   Ú&test_serialize_unserialize_object_codeÚ<JITCPUCodegenTestCase.test_serialize_unserialize_object_codeŽ   s<   € Ø×%Ñ%¤m´]ÓCˆØ×%Ñ%Ô'Ø×3Ñ3Ó5ˆØ×)Ñ)¨%Õ0r   c                 óš   • U R                  [        [        5      nUR                  5         UR	                  5       nU R                  U5        g r   )r'   r>   r?   ri   rj   r^   rb   s      r   Ú*test_unserialize_other_process_object_codeÚ@JITCPUCodegenTestCase.test_unserialize_other_process_object_code”   s<   € Ø×%Ñ%¤m´]ÓCˆØ×%Ñ%Ô'Ø×3Ñ3Ó5ˆØ×-Ñ-¨eÕ4r   c                 ó  • U R                  [        [        5      nUR                  5         UR	                  5       n[
        R                  " SS9 nUR                  5       nUR                  5       nUR                  S5        SSS5        U R                  [        W5      S5        [        S5      nUR                  U5      n[
        R                  " SS9 n[
        R                  " S5        U R                  WUR                  5       5        SSS5        U R                  [        U5      S5        U R!                  S	[#        US   R$                  5      5        [
        R                  " SS9 n[
        R                  " S5        U R                  UR                  5       W5        SSS5        U R                  [        U5      S5        U R!                  S	[#        US   R$                  5      5        [
        R                  " SS9 n[
        R                  " S5        U R'                  [(        5       nUR                  S5        SSS5        SSS5        U R                  [        U5      S5        U R!                  S	[#        US   R$                  5      5        U R!                  S[#        WR*                  5      5        g! , (       d  f       GN== f! , (       d  f       GNÅ= f! , (       d  f       GNA= f! , (       d  f       Nµ= f! , (       d  f       N¾= f)
z	
        T)Úrecordr+   Nr   r*   Úalwaysé   zInspection disabled)r'   r>   r?   ri   rj   ÚwarningsÚcatch_warningsÚget_llvm_strÚget_asm_strÚget_function_cfgr=   Úlenr   r/   ÚsimplefilterÚassertNotEqualÚassertInÚstrÚmessageÚassertRaisesÚ	NameErrorÚ	exception)r   r$   r3   ÚwÚold_llvmÚold_asmr   Úraisess           r   Útest_cache_disabled_inspectionÚ4JITCPUCodegenTestCase.test_cache_disabled_inspectionš   s?  € ð ×%Ñ%¤m´]ÓCˆØ×%Ñ%Ô'Ø×3Ñ3Ó5ˆô ×$Ò$¨DÒ1°QØ×+Ñ+Ó-ˆHØ×)Ñ)Ó+ˆGØ×$Ñ$ UÔ+÷ 2ð 	×Ñœ˜Q› Ô#ô   Ó0ˆØ×-Ñ-¨eÓ4ˆô ×$Ò$¨DÒ1°QÜ×!Ò! (Ô+Ø×Ñ ¨'×*>Ñ*>Ó*@ÔA÷ 2ð 	×Ñœ˜Q› Ô#Ø�‰Ð+¬S°°1±·±Ó->Ô?ä×$Ò$¨DÒ1°QÜ×!Ò! (Ô+Ø×Ñ × 3Ñ 3Ó 5°wÔ?÷ 2ð 	×Ñœ˜Q› Ô#Ø�‰Ð+¬S°°1±·±Ó->Ô?ä×$Ò$¨DÒ1°QÜ×!Ò! (Ô+Ø×"Ñ"¤9Ô-°Ø×(Ñ(¨Ô/÷ .÷ 2ð 	×Ñœ˜Q› Ô#Ø�‰Ð+¬S°°1±·±Ó->Ô?Ø�‰�eœS ×!1Ñ!1Ó2Õ3÷; 2Ö1ú÷ 2Ö1ú÷ 2Ö1ú÷ .Õ-ú÷ 2Õ1úsH   Á2J7Ã7K	Å*7KÈ ,K>È,K-È>K>Ê7
KË	
KË
K*Ë-
K;	Ë7K>Ë>
Lc                 ób  • U R                  [        [        5      nUR                  5         UR	                  5         UR                  5         [        R                  " U5      n[        R                  " UR                  5      nAU R                  U" 5       S 5        U R                  U" 5       S 5        g r   )
r'   r>   r?   ri   ra   rj   ÚweakrefÚrefÚ_final_moduleÚassertIs)r   r$   ÚuÚvs       r   Útest_library_lifetimeÚ+JITCPUCodegenTestCase.test_library_lifetimeÃ   s}   € à×%Ñ%¤m´]ÓCˆà×%Ñ%Ô'Ø×'Ñ'Ô)Ø×+Ñ+Ô-Ü�KŠK˜Ó ˆÜ�KŠK˜×-Ñ-Ó.ˆØà�‰‘a“c˜4Ô Ø�‰‘a“c˜4Õ r   )r   r   )rV   Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r   r'   Úclassmethodr7   rA   rJ   rM   r^   rc   rf   rk   rn   r†   ÚunittestÚexpectedFailurer�   Ú__static_attributes__© r   r   r   r   6   ss   † ñò5ò'ôð ñó ðò)ò$1ò+òJò1ò
5ò
1ò5ò%4ðR ×Ññ!ó ó!r   r   c                   ó   • \ rS rSrS rSrg)ÚTestWrapperséÒ   c                 ó˜  • [         S 5       nU" 5         UR                  S   nUR                  U   nUR                  R                  R                  SS5      nSR                  U5      nSn[        R                  " XV-   5      nUR                  U5      R                  5       n/ n	U H?  n
UR                  U
5      nU(       d  M  U	R                  UR                  5       S   5        MA     U R                  [        U	5      S5        U R                  U	S   U	S   5        S	R                  U	S   5      nS
n[        R                  " XV-   5      n[!        U5       Hb  n
UR                  U
5      nU(       d  M  UR                  5       S   nUR#                  5       R%                  S5      nU H  nSU;   d  M    O   Mb    g    U R'                  S5      $ )Nc                  ó   • [        S/5      $ )Nrs   )Úlistr™   r   r   ÚfooÚ4TestWrappers.test_noinline_on_main_call.<locals>.fooÛ   s   € ä˜˜“9Ðr   r   Ú$z\$z
.*call.*{}z.*(#[0-9]+).*r,   rs   z^attributes\s+{}z\s+=\s+{(.*)}.*$Ú Únoinlinez!Metadata did not match 'noinline')r   Ú
signaturesÚ	overloadsÚfndescÚmangled_nameÚreplaceÚformatÚreÚcompileÚinspect_llvmÚ
splitlinesÚmatchÚappendÚgroupsr=   ry   ÚreversedÚstripÚsplitÚfail)r   r    ÚsigÚolÚnameÚp1Úp2Ú	call_siteÚlinesÚmeta_data_idxÚlÚmatchedÚ	attr_siteÚ	meta_dataÚlmetaÚxs                   r   Útest_noinline_on_main_callÚ'TestWrappers.test_noinline_on_main_callÔ   s¡  € ô 
ñ	ó 
ð	ñ 	ŒØ�n‰n˜QÑˆà�]‰]˜3ÑˆØ�y‰y×%Ñ%×-Ñ-¨c°5Ó9ˆØ×!Ñ! $Ó'ˆØˆÜ—J’J˜r™wÓ'ˆ	à× Ñ  Ó%×0Ñ0Ó2ˆØˆÛˆAØ—o‘o aÓ(ˆGßˆwØ×$Ñ$ W§^¡^Ó%5°aÑ%8Ö9ñ ð 	×Ñœ˜]Ó+¨QÔ/à×Ñ˜ qÑ)¨=¸Ñ+;Ô<à ×'Ñ'¨°aÑ(8Ó9ˆØ ˆÜ—J’J˜r™wÓ'ˆ	ä˜%–ˆAØ—o‘o aÓ(ˆGßˆwØ#ŸN™NÓ,¨QÑ/�	Ø!Ÿ™Ó)×/Ñ/°Ó4�Û�AØ! Q•Ùñ ñ Ùñ !ð —9‘9Ð@ÓAÐAr   r™   N)rV   r‘   r’   r“   rÄ   r˜   r™   r   r   r›   r›   Ò   s   † õ0Br   r›   Ú__main__)r”   rt   rR   ÚctypesrF   r«   rW   rY   r‰   Úllvmlite.bindingÚbindingr   r–   Únumbar   Únumba.core.codegenr   Únumba.core.compiler_lockr   Únumba.tests.supportr   r:   r?   r>   Ú	CFUNCTYPEÚc_intr1   r   r›   rV   Úmainr™   r   r   Ú<module>rÑ      s£   ðñó
 Û Û Û Û 	Û Û 
Û å ã Ý Ý ,Ý 9Ý (ð€ð€ð€ð × Ò  §¡¨v¯|©|¸V¿\¹\ÓJ€ôY!˜Hô Y!ôx2B�8ô 2Bðj ˆzÓØ‡M‚M…Oð r   