
    J/Ph;                         d dl mZmZmZ d dlmZ d dlmZmZ d dl	m
Z
 d dlmZmZmZ d dlZd Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd ZdZdZdZdZ dZ!dZ"dZ#dZ$dZ%dZ&dZ'dZ(dZ)d Z* eed!"          d#             Z+ eed$"          d%             Z, eed!"          d&             Z- eed$"          d'             Z. eed!"          d(             Z/ eed!"          d)             Z0 eed$"          d*             Z1 eed$"          d+             Z2 eed!"          d,             Z3 eed$"          d-             Z4 eed!"          d.             Z5 eed$"          d/             Z6 eed!"          d0             Z7 eed$"          d1             Z8 ed2           G d3 d4e                      Z9e:d5k    r ej;                     dS dS )6    )cudanjittypes)TypingError)overloadoverload_attribute)typeof)CUDATestCaseskip_on_cudasimunittestNc                      d S N r       e/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/numba/cuda/tests/cudapy/test_overload.pygeneric_func_1r          Dr   c                      d S r   r   r   r   r   cuda_func_1r      r   r   c                      d S r   r   r   r   r   generic_func_2r      r   r   c                      d S r   r   r   r   r   cuda_func_2r      r   r   c                      d S r   r   r   r   r   generic_calls_genericr      r   r   c                      d S r   r   r   r   r   generic_calls_cudar      r   r   c                      d S r   r   r   r   r   cuda_calls_genericr   #   r   r   c                      d S r   r   r   r   r   cuda_calls_cudar!   '   r   r   c                      d S r   r   r   r   r   target_overloadedr#   +   r   r   c                      d S r   r   r   r   r   generic_calls_target_overloadedr%   /   r   r   c                      d S r   r   r   r   r   cuda_calls_target_overloadedr'   3   r   r   c                      d S r   r   r   r   r   )target_overloaded_calls_target_overloadedr)   7   r   r                                    %   )   +   generictargetc                     d }|S )Nc                 0    | dxx         t           z  cc<   d S Nr   )GENERIC_FUNCTION_1xs    r   implzol_generic_func_1.<locals>.implT       	!""r   r   r@   rA   s     r   ol_generic_func_1rD   R       # # #Kr   r   c                     d }|S )Nc                 0    | dxx         t           z  cc<   d S r=   )CUDA_FUNCTION_1r?   s    r   rA   zol_cuda_func_1.<locals>.impl[       	!r   r   rC   s     r   ol_cuda_func_1rJ   Y            Kr   c                     d }|S )Nc                 0    | dxx         t           z  cc<   d S r=   )GENERIC_FUNCTION_2r?   s    r   rA   zol_generic_func_2.<locals>.implb   rB   r   r   rC   s     r   ol_generic_func_2rO   `   rE   r   c                     d }|S )Nc                 0    | dxx         t           z  cc<   d S r=   )CUDA_FUNCTION_2r?   s    r   rA   zol_cuda_func.<locals>.impli   rI   r   r   rC   s     r   ol_cuda_funcrS   g   rK   r   c                     d }|S )Nc                 N    | dxx         t           z  cc<   t          |            d S r=   )GENERIC_CALLS_GENERICr   r?   s    r   rA   z&ol_generic_calls_generic.<locals>.implp   s-    	!%%qr   r   rC   s     r   ol_generic_calls_genericrW   n          Kr   c                     d }|S )Nc                 N    | dxx         t           z  cc<   t          |            d S r=   )GENERIC_CALLS_CUDAr   r?   s    r   rA   z#ol_generic_calls_cuda.<locals>.implx   s(    	!""Ar   r   rC   s     r   ol_generic_calls_cudar\   v          Kr   c                     d }|S )Nc                 N    | dxx         t           z  cc<   t          |            d S r=   )CUDA_CALLS_GENERICr   r?   s    r   rA   z#ol_cuda_calls_generic.<locals>.impl   s-    	!""qr   r   rC   s     r   ol_cuda_calls_genericra   ~   rX   r   c                     d }|S )Nc                 N    | dxx         t           z  cc<   t          |            d S r=   )CUDA_CALLS_CUDAr   r?   s    r   rA   z ol_cuda_calls_cuda.<locals>.impl   s'    	!Ar   r   rC   s     r   ol_cuda_calls_cudare      r]   r   c                     d }|S )Nc                 0    | dxx         t           z  cc<   d S r=   )GENERIC_TARGET_OLr?   s    r   rA   z*ol_target_overloaded_generic.<locals>.impl   s    	!!!r   r   rC   s     r   ol_target_overloaded_genericri      s    " " "Kr   c                     d }|S )Nc                 0    | dxx         t           z  cc<   d S r=   )CUDA_TARGET_OLr?   s    r   rA   z'ol_target_overloaded_cuda.<locals>.impl   s    	!r   r   rC   s     r   ol_target_overloaded_cudarm      s      Kr   c                     d }|S )Nc                 N    | dxx         t           z  cc<   t          |            d S r=   )GENERIC_CALLS_TARGET_OLr#   r?   s    r   rA   z0ol_generic_calls_target_overloaded.<locals>.impl   s-    	!''!r   r   rC   s     r   "ol_generic_calls_target_overloadedrq             Kr   c                     d }|S )Nc                 N    | dxx         t           z  cc<   t          |            d S r=   )CUDA_CALLS_TARGET_OLr#   r?   s    r   rA   z-ol_cuda_calls_target_overloaded.<locals>.impl   s-    	!$$!r   r   rC   s     r   ol_cuda_calls_target_overloadedrv      rr   r   c                     d }|S )Nc                 N    | dxx         t           z  cc<   t          |            d S r=   )!GENERIC_TARGET_OL_CALLS_TARGET_OLr#   r?   s    r   rA   z8ol_generic_calls_target_overloaded_generic.<locals>.impl   s-    	!11!r   r   rC   s     r   *ol_generic_calls_target_overloaded_genericrz      rr   r   c                     d }|S )Nc                 N    | dxx         t           z  cc<   t          |            d S r=   )CUDA_TARGET_OL_CALLS_TARGET_OLr#   r?   s    r   rA   z5ol_generic_calls_target_overloaded_cuda.<locals>.impl   s-    	!..!r   r   rC   s     r   'ol_generic_calls_target_overloaded_cudar~      rr   r   z$Overloading not supported in cudasimc                   n    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd ZdS )TestOverloadc                     t          j        dt           j                  } t          j        |          d         |           |                     |d         |           d S )N   dtype)r   r   r   )nponesint32r   jitassertEqualselfkernelexpectedr@   s       r   check_overloadzTestOverload.check_overload   sW    GARX&&&q!!!1x(((((r   c                     t          j        dt           j                  } t          |          |           |                     |d         |           d S )Nr   r   r   )r   r   r   r   r   r   s       r   check_overload_cpuzTestOverload.check_overload_cpu   sK    GARX&&&VQ1x(((((r   c                 F    d }t           }|                     ||           d S )Nc                 $    t          |            d S r   )r   r?   s    r   r   z)TestOverload.test_generic.<locals>.kernel   s    1r   )r>   r   r   r   r   s      r   test_genericzTestOverload.test_generic   s4    	 	 	 &FH-----r   c                 F    d }t           }|                     ||           d S )Nc                 $    t          |            d S r   )r   r?   s    r   r   z&TestOverload.test_cuda.<locals>.kernel   s    NNNNNr   )rH   r   r   s      r   	test_cudazTestOverload.test_cuda   s4    	 	 	 #FH-----r   c                 V    d }t           t          z  }|                     ||           d S )Nc                 B    t          |            t          |            d S r   )r   r   r?   s    r   r   z2TestOverload.test_generic_and_cuda.<locals>.kernel   s    1NNNNNr   )r>   rH   r   r   s      r   test_generic_and_cudaz"TestOverload.test_generic_and_cuda   s9    	 	 	 &7FH-----r   c                 V    d }t           t          z  }|                     ||           d S )Nc                 B    t          |            t          |            d S r   )r   r   r?   s    r   r   z8TestOverload.test_call_two_generic_calls.<locals>.kernel   s$    11r   )r>   rN   r   r   s      r   test_call_two_generic_callsz(TestOverload.test_call_two_generic_calls   s:    	 	 	 &(::FH-----r   c                 V    d }t           t          z  }|                     ||           d S )Nc                 B    t          |            t          |            d S r   )r   r   r?   s    r   r   z5TestOverload.test_call_two_cuda_calls.<locals>.kernel   s    NNNNNNNNr   )rH   rR   r   r   s      r   test_call_two_cuda_callsz%TestOverload.test_call_two_cuda_calls   s9    	 	 	 #_4FH-----r   c                 V    d }t           t          z  }|                     ||           d S )Nc                 $    t          |            d S r   )r   r?   s    r   r   z7TestOverload.test_generic_calls_generic.<locals>.kernel   s    !!$$$$$r   )rV   r>   r   r   s      r   test_generic_calls_genericz'TestOverload.test_generic_calls_generic   s:    	% 	% 	% )+==FH-----r   c                 V    d }t           t          z  }|                     ||           d S )Nc                 $    t          |            d S r   )r   r?   s    r   r   z4TestOverload.test_generic_calls_cuda.<locals>.kernel       q!!!!!r   )r[   rH   r   r   s      r   test_generic_calls_cudaz$TestOverload.test_generic_calls_cuda   s9    	" 	" 	" &7FH-----r   c                 V    d }t           t          z  }|                     ||           d S )Nc                 $    t          |            d S r   )r   r?   s    r   r   z4TestOverload.test_cuda_calls_generic.<locals>.kernel   r   r   )r`   r>   r   r   s      r   test_cuda_calls_genericz$TestOverload.test_cuda_calls_generic   s:    	" 	" 	" &(::FH-----r   c                 V    d }t           t          z  }|                     ||           d S )Nc                 $    t          |            d S r   )r!   r?   s    r   r   z1TestOverload.test_cuda_calls_cuda.<locals>.kernel  s    Ar   )rd   rH   r   r   s      r   test_cuda_calls_cudaz!TestOverload.test_cuda_calls_cuda  s9    	 	 	 #_4FH-----r   c                 F    d }t           }|                     ||           d S )Nc                 $    t          |            d S r   )r#   r?   s    r   r   z8TestOverload.test_call_target_overloaded.<locals>.kernel  s    a     r   )rl   r   r   s      r   test_call_target_overloadedz(TestOverload.test_call_target_overloaded
  s4    	! 	! 	! "FH-----r   c                 V    d }t           t          z  }|                     ||           d S )Nc                 $    t          |            d S r   )r%   r?   s    r   r   zATestOverload.test_generic_calls_target_overloaded.<locals>.kernel  s    +A.....r   )rp   rl   r   r   s      r   $test_generic_calls_target_overloadedz1TestOverload.test_generic_calls_target_overloaded  s9    	/ 	/ 	/ +^;FH-----r   c                 V    d }t           t          z  }|                     ||           d S )Nc                 $    t          |            d S r   )r'   r?   s    r   r   z>TestOverload.test_cuda_calls_target_overloaded.<locals>.kernel  s    (+++++r   )ru   rl   r   r   s      r   !test_cuda_calls_target_overloadedz.TestOverload.test_cuda_calls_target_overloaded  s9    	, 	, 	, (.8FH-----r   c                     d }t           t          z  }|                     ||           t          t          z  }|                     ||           d S )Nc                 $    t          |            d S r   )r)   r?   s    r   r   zKTestOverload.test_target_overloaded_calls_target_overloaded.<locals>.kernel   s    5a88888r   )r}   rl   r   ry   rh   r   r   s      r   .test_target_overloaded_calls_target_overloadedz;TestOverload.test_target_overloaded_calls_target_overloaded  s\    	9 	9 	9 2NBFH--- 57HH11111r   c                    |                                  \  }}t           |                      }t          |dd          d             }|                     t          d          5  t          t          j        |                    d             }d d d            n# 1 swxY w Y   t          j	        t          j
        t          j        d d d         |                    d             }d S )	N	cuda_onlyr   r9   c                     d }|S )Nc                     dS )N*   r   )objs    r   impzTTestOverload.test_overload_attribute_target.<locals>.ov_dummy_cuda_attr.<locals>.imp1  s    rr   r   )r   r   s     r   ov_dummy_cuda_attrzGTestOverload.test_overload_attribute_target.<locals>.ov_dummy_cuda_attr/  s       Jr   zUnknown attribute 'cuda_only'c                     | j         S r   r   r?   s    r   illegal_target_attr_usezLTestOverload.test_overload_attribute_target.<locals>.illegal_target_attr_use:  s
    {"r   r   c                     |j         | d<   d S r=   r   )resdummys     r   cuda_target_attr_usezITestOverload.test_overload_attribute_target.<locals>.cuda_target_attr_useA  s    _CFFFr   )make_dummy_typer	   r   assertRaisesRegexr   r   r   int64r   r   void)r   MyDummyMyDummyTypemydummy_typer   r   r   s          r   test_overload_attribute_targetz+TestOverload.test_overload_attribute_target+  s>   #3355ggii((	KV	D	D	D	 	 
E	D	 ##K$CE E 	# 	#%+l++,,# # -,#	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 
%*U[1-|<<	=	=	% 	% 
>	=	% 	% 	%s   %+BB #B N)__name__
__module____qualname__r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r      s       ) ) )
) ) )
. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .
2 
2 
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>   rH   rN   rR   rV   r[   r`   rd   rh   rl   rp   ru   ry   r}   rD   rJ   rO   rS   rW   r\   ra   re   ri   rm   rq   rv   rz   r~   r   r   mainr   r   r   <module>r      se   # # # # # # # # # # ) ) ) ) ) ) = = = = = = = = + + + + + + F F F F F F F F F F    
	 	 		 	 		 	 		 	 		 	 		 	 		 	 		 	 		 	 		 	 		 	 		 	 	         $& !!# 
 
.+++  ,+ 
+f%%%  &% 
.+++  ,+ 
+f%%%  &% 

	222  32 

Y///  0/ 

V,,,  -, 
/&)))  *) 

I...  /. 

F+++  ,+ 

))<<<  =< 

&v666  76 

3IFFF  GF 

3FCCC  DC 788F% F% F% F% F%< F% F% 98F%R zHMOOOOO r   