
    sh;                         S SK JrJrJr  S SKJr  S SKJrJr  S SK	J
r
  S SKJrJrJr  S SKrS rS rS	 rS
 rS rS rS rS rS rS rS rS rSrSrSrSr Sr!Sr"Sr#Sr$Sr%Sr&Sr'Sr(Sr)S r*\" \S!S"9S# 5       r+\" \S$S"9S% 5       r,\" \S!S"9S& 5       r-\" \S$S"9S' 5       r.\" \S!S"9S( 5       r/\" \S!S"9S) 5       r0\" \S$S"9S* 5       r1\" \S$S"9S+ 5       r2\" \S!S"9S, 5       r3\" \S$S"9S- 5       r4\" \S!S"9S. 5       r5\" \S$S"9S/ 5       r6\" \S!S"9S0 5       r7\" \S$S"9S1 5       r8\" S25       " S3 S4\5      5       r9\:S5:X  a  \Rv                  " 5         gg)6    )cudanjittypes)TypingError)overloadoverload_attribute)typeof)CUDATestCaseskip_on_cudasimunittestNc                      g N r       y/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/numba/cuda/tests/cudapy/test_overload.pygeneric_func_1r          r   c                      g r   r   r   r   r   cuda_func_1r      r   r   c                      g r   r   r   r   r   generic_func_2r      r   r   c                      g r   r   r   r   r   cuda_func_2r      r   r   c                      g r   r   r   r   r   generic_calls_genericr      r   r   c                      g r   r   r   r   r   generic_calls_cudar      r   r   c                      g r   r   r   r   r   cuda_calls_genericr   #   r   r   c                      g r   r   r   r   r   cuda_calls_cudar!   '   r   r   c                      g r   r   r   r   r   target_overloadedr#   +   r   r   c                      g r   r   r   r   r   generic_calls_target_overloadedr%   /   r   r   c                      g r   r   r   r   r   cuda_calls_target_overloadedr'   3   r   r   c                      g r   r   r   r   r   )target_overloaded_calls_target_overloadedr)   7   r   r                                    %   )   +   generictargetc                     S nU$ )Nc                 &    U S==   [         -  ss'   g Nr   )GENERIC_FUNCTION_1xs    r   implol_generic_func_1.<locals>.implT       	!""r   r   r@   rA   s     r   ol_generic_func_1rE   R       #Kr   r   c                     S nU$ )Nc                 &    U S==   [         -  ss'   g r=   )CUDA_FUNCTION_1r?   s    r   rA   ol_cuda_func_1.<locals>.impl[       	!r   r   rD   s     r   ol_cuda_func_1rL   Y        Kr   c                     S nU$ )Nc                 &    U S==   [         -  ss'   g r=   )GENERIC_FUNCTION_2r?   s    r   rA   ol_generic_func_2.<locals>.implb   rC   r   r   rD   s     r   ol_generic_func_2rR   `   rF   r   c                     S nU$ )Nc                 &    U S==   [         -  ss'   g r=   )CUDA_FUNCTION_2r?   s    r   rA   ol_cuda_func.<locals>.impli   rK   r   r   rD   s     r   ol_cuda_funcrW   g   rM   r   c                     S nU$ )Nc                 <    U S==   [         -  ss'   [        U 5        g r=   )GENERIC_CALLS_GENERICr   r?   s    r   rA   &ol_generic_calls_generic.<locals>.implp   s    	!%%qr   r   rD   s     r   ol_generic_calls_genericr\   n        Kr   c                     S nU$ )Nc                 <    U S==   [         -  ss'   [        U 5        g r=   )GENERIC_CALLS_CUDAr   r?   s    r   rA   #ol_generic_calls_cuda.<locals>.implx   s    	!""Ar   r   rD   s     r   ol_generic_calls_cudarb   v        Kr   c                     S nU$ )Nc                 <    U S==   [         -  ss'   [        U 5        g r=   )CUDA_CALLS_GENERICr   r?   s    r   rA   #ol_cuda_calls_generic.<locals>.impl   s    	!""qr   r   rD   s     r   ol_cuda_calls_genericrh   ~   r]   r   c                     S nU$ )Nc                 <    U S==   [         -  ss'   [        U 5        g r=   )CUDA_CALLS_CUDAr   r?   s    r   rA    ol_cuda_calls_cuda.<locals>.impl   s    	!Ar   r   rD   s     r   ol_cuda_calls_cudarm      rc   r   c                     S nU$ )Nc                 &    U S==   [         -  ss'   g r=   )GENERIC_TARGET_OLr?   s    r   rA   *ol_target_overloaded_generic.<locals>.impl   s    	!!!r   r   rD   s     r   ol_target_overloaded_genericrr      s    "Kr   c                     S nU$ )Nc                 &    U S==   [         -  ss'   g r=   )CUDA_TARGET_OLr?   s    r   rA   'ol_target_overloaded_cuda.<locals>.impl   s    	!r   r   rD   s     r   ol_target_overloaded_cudarw      s    Kr   c                     S nU$ )Nc                 <    U S==   [         -  ss'   [        U 5        g r=   )GENERIC_CALLS_TARGET_OLr#   r?   s    r   rA   0ol_generic_calls_target_overloaded.<locals>.impl   s    	!''!r   r   rD   s     r   "ol_generic_calls_target_overloadedr|           Kr   c                     S nU$ )Nc                 <    U S==   [         -  ss'   [        U 5        g r=   )CUDA_CALLS_TARGET_OLr#   r?   s    r   rA   -ol_cuda_calls_target_overloaded.<locals>.impl   s    	!$$!r   r   rD   s     r   ol_cuda_calls_target_overloadedr      r}   r   c                     S nU$ )Nc                 <    U S==   [         -  ss'   [        U 5        g r=   )!GENERIC_TARGET_OL_CALLS_TARGET_OLr#   r?   s    r   rA   8ol_generic_calls_target_overloaded_generic.<locals>.impl   s    	!11!r   r   rD   s     r   *ol_generic_calls_target_overloaded_genericr      r}   r   c                     S nU$ )Nc                 <    U S==   [         -  ss'   [        U 5        g r=   )CUDA_TARGET_OL_CALLS_TARGET_OLr#   r?   s    r   rA   5ol_generic_calls_target_overloaded_cuda.<locals>.impl   s    	!..!r   r   rD   s     r   'ol_generic_calls_target_overloaded_cudar      r}   r   z$Overloading not supported in cudasimc                   t    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rSrg)TestOverload   c                     [         R                  " S[         R                  S9n[        R                  " U5      S   " U5        U R                  US   U5        g )N   dtype)r   r   r   )nponesint32r   jitassertEqualselfkernelexpectedr@   s       r   check_overloadTestOverload.check_overload   s@    GGARXX&q!1x(r   c                     [         R                  " S[         R                  S9n[        U5      " U5        U R	                  US   U5        g )Nr   r   r   )r   r   r   r   r   r   s       r   check_overload_cpuTestOverload.check_overload_cpu   s5    GGARXX&VQ1x(r   c                 8    S n[         nU R                  X5        g )Nc                     [        U 5        g r   )r   r?   s    r   r   )TestOverload.test_generic.<locals>.kernel   s
    1r   )r>   r   r   r   r   s      r   test_genericTestOverload.test_generic   s    	 &F-r   c                 8    S n[         nU R                  X5        g )Nc                     [        U 5        g r   )r   r?   s    r   r   &TestOverload.test_cuda.<locals>.kernel   s	    Nr   )rI   r   r   s      r   	test_cudaTestOverload.test_cuda   s    	 #F-r   c                 F    S n[         [        -  nU R                  X5        g )Nc                 0    [        U 5        [        U 5        g r   )r   r   r?   s    r   r   2TestOverload.test_generic_and_cuda.<locals>.kernel   s    1Nr   )r>   rI   r   r   s      r   test_generic_and_cuda"TestOverload.test_generic_and_cuda   s!    	 &7F-r   c                 F    S n[         [        -  nU R                  X5        g )Nc                 0    [        U 5        [        U 5        g r   )r   r   r?   s    r   r   8TestOverload.test_call_two_generic_calls.<locals>.kernel   s    11r   )r>   rP   r   r   s      r   test_call_two_generic_calls(TestOverload.test_call_two_generic_calls   s"    	 &(::F-r   c                 F    S n[         [        -  nU R                  X5        g )Nc                 0    [        U 5        [        U 5        g r   )r   r   r?   s    r   r   5TestOverload.test_call_two_cuda_calls.<locals>.kernel   s    NNr   )rI   rU   r   r   s      r   test_call_two_cuda_calls%TestOverload.test_call_two_cuda_calls   s!    	 #_4F-r   c                 F    S n[         [        -  nU R                  X5        g )Nc                     [        U 5        g r   )r   r?   s    r   r   7TestOverload.test_generic_calls_generic.<locals>.kernel   s
    !!$r   )rZ   r>   r   r   s      r   test_generic_calls_generic'TestOverload.test_generic_calls_generic   s"    	% )+==F-r   c                 F    S n[         [        -  nU R                  X5        g )Nc                     [        U 5        g r   )r   r?   s    r   r   4TestOverload.test_generic_calls_cuda.<locals>.kernel   
    q!r   )r`   rI   r   r   s      r   test_generic_calls_cuda$TestOverload.test_generic_calls_cuda   s!    	" &7F-r   c                 F    S n[         [        -  nU R                  X5        g )Nc                     [        U 5        g r   )r   r?   s    r   r   4TestOverload.test_cuda_calls_generic.<locals>.kernel   r   r   )rf   r>   r   r   s      r   test_cuda_calls_generic$TestOverload.test_cuda_calls_generic   s"    	" &(::F-r   c                 F    S n[         [        -  nU R                  X5        g )Nc                     [        U 5        g r   )r!   r?   s    r   r   1TestOverload.test_cuda_calls_cuda.<locals>.kernel  s
    Ar   )rk   rI   r   r   s      r   test_cuda_calls_cuda!TestOverload.test_cuda_calls_cuda  s!    	 #_4F-r   c                 8    S n[         nU R                  X5        g )Nc                     [        U 5        g r   )r#   r?   s    r   r   8TestOverload.test_call_target_overloaded.<locals>.kernel  s
    a r   )ru   r   r   s      r   test_call_target_overloaded(TestOverload.test_call_target_overloaded
  s    	! "F-r   c                 F    S n[         [        -  nU R                  X5        g )Nc                     [        U 5        g r   )r%   r?   s    r   r   ATestOverload.test_generic_calls_target_overloaded.<locals>.kernel  s
    +A.r   )rz   ru   r   r   s      r   $test_generic_calls_target_overloaded1TestOverload.test_generic_calls_target_overloaded  s!    	/ +^;F-r   c                 F    S n[         [        -  nU R                  X5        g )Nc                     [        U 5        g r   )r'   r?   s    r   r   >TestOverload.test_cuda_calls_target_overloaded.<locals>.kernel  s
    (+r   )r   ru   r   r   s      r   !test_cuda_calls_target_overloaded.TestOverload.test_cuda_calls_target_overloaded  s!    	, (.8F-r   c                     S n[         [        -  nU R                  X5        [        [        -  nU R                  X5        g )Nc                     [        U 5        g r   )r)   r?   s    r   r   KTestOverload.test_target_overloaded_calls_target_overloaded.<locals>.kernel   s
    5a8r   )r   ru   r   r   rp   r   r   s      r   .test_target_overloaded_calls_target_overloaded;TestOverload.test_target_overloaded_calls_target_overloaded  s<    	9 2NBF- 57HH1r   c                    U R                  5       u  p[        U" 5       5      n[        USSS9S 5       nU R                  [        S5         [        [        R                  " U5      5      S 5       nS S S 5        [        R                  " [        R                  " [        R                  S S S2   U5      5      S 5       ng ! , (       d  f       NT= f)	N	cuda_onlyr   r9   c                     S nU$ )Nc                     g)N*   r   )objs    r   impTTestOverload.test_overload_attribute_target.<locals>.ov_dummy_cuda_attr.<locals>.imp1  s    r   r   )r   r   s     r   ov_dummy_cuda_attrGTestOverload.test_overload_attribute_target.<locals>.ov_dummy_cuda_attr/  s     Jr   zUnknown attribute 'cuda_only'c                     U R                   $ r   r   r?   s    r   illegal_target_attr_useLTestOverload.test_overload_attribute_target.<locals>.illegal_target_attr_use:  s    {{"r   r   c                 "    UR                   U S'   g r=   r   )resdummys     r   cuda_target_attr_useITestOverload.test_overload_attribute_target.<locals>.cuda_target_attr_useA  s    __CFr   )make_dummy_typer	   r   assertRaisesRegexr   r   r   int64r   r   void)r   MyDummyMyDummyTypemydummy_typer   r   r   s          r   test_overload_attribute_target+TestOverload.test_overload_attribute_target+  s    #335gi(	KV	D	 
E	 ##K$CE%++l+,# -#E 
%**U[[1-|<	=	% 
>	%E Es   
&B>>
Cr   N)__name__
__module____qualname____firstlineno__r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   __static_attributes__r   r   r   r   r      sR    )
)
............
2%r   r   __main__)<numbar   r   r   numba.core.errorsr   numba.core.extendingr   r   numba.core.typing.typeofr	   numba.cuda.testingr
   r   r   numpyr   r   r   r   r   r   r   r   r!   r#   r%   r'   r)   r>   rI   rP   rU   rZ   r`   rf   rk   rp   ru   rz   r   r   r   rE   rL   rR   rW   r\   rb   rh   rm   rr   rw   r|   r   r   r   r   r  mainr   r   r   <module>r     sm   # # ) = + F F 
												         $& !!# 
 
.+ , 
+f% & 
.+ , 
+f% & 

	2 3 

Y/ 0 

V, - 
/&) * 

I. / 

F+ , 

))< = 

&v6 7 

3IF G 

3FC D 78F%< F% 9F%R zMMO r   