U
    9%e                     @   s  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d Zdd Zd	d
 Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zd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,d-d. Z%eed/d,d0d1 Z&eed+d,d2d3 Z'eed/d,d4d5 Z(eed+d,d6d7 Z)eed+d,d8d9 Z*eed/d,d:d; Z+eed/d,d<d= Z,eed+d,d>d? Z-eed/d,d@dA Z.eed+d,dBdC Z/eed/d,dDdE Z0eed+d,dFdG Z1eed/d,dHdI Z2edJG dKdL dLeZ3e4dMkre5  dS )N    )cudanjit)overload)CUDATestCaseskip_on_cudasimunittestNc                   C   s   d S N r	   r	   r	   d/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/numba/cuda/tests/cudapy/test_overload.pygeneric_func_1
   s    r   c                   C   s   d S r   r	   r	   r	   r	   r
   cuda_func_1   s    r   c                   C   s   d S r   r	   r	   r	   r	   r
   generic_func_2   s    r   c                   C   s   d S r   r	   r	   r	   r	   r
   cuda_func_2   s    r   c                   C   s   d S r   r	   r	   r	   r	   r
   generic_calls_generic   s    r   c                   C   s   d S r   r	   r	   r	   r	   r
   generic_calls_cuda   s    r   c                   C   s   d S r   r	   r	   r	   r	   r
   cuda_calls_generic"   s    r   c                   C   s   d S r   r	   r	   r	   r	   r
   cuda_calls_cuda&   s    r   c                   C   s   d S r   r	   r	   r	   r	   r
   target_overloaded*   s    r   c                   C   s   d S r   r	   r	   r	   r	   r
   generic_calls_target_overloaded.   s    r   c                   C   s   d S r   r	   r	   r	   r	   r
   cuda_calls_target_overloaded2   s    r   c                   C   s   d S r   r	   r	   r	   r	   r
   )target_overloaded_calls_target_overloaded6   s    r                                    %   )   +   Zgeneric)targetc                 C   s   dd }|S )Nc                 S   s   | d  t 9  < d S Nr   )GENERIC_FUNCTION_1xr	   r	   r
   implS   s    zol_generic_func_1.<locals>.implr	   r)   r*   r	   r	   r
   ol_generic_func_1Q   s    r,   r   c                 C   s   dd }|S )Nc                 S   s   | d  t 9  < d S r&   )CUDA_FUNCTION_1r(   r	   r	   r
   r*   Z   s    zol_cuda_func_1.<locals>.implr	   r+   r	   r	   r
   ol_cuda_func_1X   s    r.   c                 C   s   dd }|S )Nc                 S   s   | d  t 9  < d S r&   )GENERIC_FUNCTION_2r(   r	   r	   r
   r*   a   s    zol_generic_func_2.<locals>.implr	   r+   r	   r	   r
   ol_generic_func_2_   s    r0   c                 C   s   dd }|S )Nc                 S   s   | d  t 9  < d S r&   )CUDA_FUNCTION_2r(   r	   r	   r
   r*   h   s    zol_cuda_func.<locals>.implr	   r+   r	   r	   r
   ol_cuda_funcf   s    r2   c                 C   s   dd }|S )Nc                 S   s   | d  t 9  < t|  d S r&   )GENERIC_CALLS_GENERICr   r(   r	   r	   r
   r*   o   s    z&ol_generic_calls_generic.<locals>.implr	   r+   r	   r	   r
   ol_generic_calls_genericm   s    r4   c                 C   s   dd }|S )Nc                 S   s   | d  t 9  < t|  d S r&   )GENERIC_CALLS_CUDAr   r(   r	   r	   r
   r*   w   s    z#ol_generic_calls_cuda.<locals>.implr	   r+   r	   r	   r
   ol_generic_calls_cudau   s    r6   c                 C   s   dd }|S )Nc                 S   s   | d  t 9  < t|  d S r&   )CUDA_CALLS_GENERICr   r(   r	   r	   r
   r*      s    z#ol_cuda_calls_generic.<locals>.implr	   r+   r	   r	   r
   ol_cuda_calls_generic}   s    r8   c                 C   s   dd }|S )Nc                 S   s   | d  t 9  < t|  d S r&   )CUDA_CALLS_CUDAr   r(   r	   r	   r
   r*      s    z ol_cuda_calls_cuda.<locals>.implr	   r+   r	   r	   r
   ol_cuda_calls_cuda   s    r:   c                 C   s   dd }|S )Nc                 S   s   | d  t 9  < d S r&   )GENERIC_TARGET_OLr(   r	   r	   r
   r*      s    z*ol_target_overloaded_generic.<locals>.implr	   r+   r	   r	   r
   ol_target_overloaded_generic   s    r<   c                 C   s   dd }|S )Nc                 S   s   | d  t 9  < d S r&   )CUDA_TARGET_OLr(   r	   r	   r
   r*      s    z'ol_target_overloaded_cuda.<locals>.implr	   r+   r	   r	   r
   ol_target_overloaded_cuda   s    r>   c                 C   s   dd }|S )Nc                 S   s   | d  t 9  < t|  d S r&   )GENERIC_CALLS_TARGET_OLr   r(   r	   r	   r
   r*      s    z0ol_generic_calls_target_overloaded.<locals>.implr	   r+   r	   r	   r
   "ol_generic_calls_target_overloaded   s    r@   c                 C   s   dd }|S )Nc                 S   s   | d  t 9  < t|  d S r&   )CUDA_CALLS_TARGET_OLr   r(   r	   r	   r
   r*      s    z-ol_cuda_calls_target_overloaded.<locals>.implr	   r+   r	   r	   r
   ol_cuda_calls_target_overloaded   s    rB   c                 C   s   dd }|S )Nc                 S   s   | d  t 9  < t|  d S r&   )!GENERIC_TARGET_OL_CALLS_TARGET_OLr   r(   r	   r	   r
   r*      s    z8ol_generic_calls_target_overloaded_generic.<locals>.implr	   r+   r	   r	   r
   *ol_generic_calls_target_overloaded_generic   s    rD   c                 C   s   dd }|S )Nc                 S   s   | d  t 9  < t|  d S r&   )CUDA_TARGET_OL_CALLS_TARGET_OLr   r(   r	   r	   r
   r*      s    z5ol_generic_calls_target_overloaded_cuda.<locals>.implr	   r+   r	   r	   r
   'ol_generic_calls_target_overloaded_cuda   s    rF   z$Overloading not supported in cudasimc                   @   s   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd ZdS ) TestOverloadc                 C   s6   t jdt jd}t|d | | |d | d S )N   Zdtype)rH   rH   r   )nponesint32r   ZjitassertEqualselfkernelexpectedr)   r	   r	   r
   check_overload   s    zTestOverload.check_overloadc                 C   s0   t jdt jd}t|| | |d | d S )NrH   rI   r   )rJ   rK   rL   r   rM   rN   r	   r	   r
   check_overload_cpu   s    zTestOverload.check_overload_cpuc                 C   s   dd }t }| || d S )Nc                 S   s   t |  d S r   )r   r(   r	   r	   r
   rP      s    z)TestOverload.test_generic.<locals>.kernel)r'   rR   rO   rP   rQ   r	   r	   r
   test_generic   s    zTestOverload.test_genericc                 C   s   dd }t }| || d S )Nc                 S   s   t |  d S r   )r   r(   r	   r	   r
   rP      s    z&TestOverload.test_cuda.<locals>.kernel)r-   rR   rT   r	   r	   r
   	test_cuda   s    zTestOverload.test_cudac                 C   s    dd }t t }| || d S )Nc                 S   s   t |  t|  d S r   )r   r   r(   r	   r	   r
   rP      s    z2TestOverload.test_generic_and_cuda.<locals>.kernel)r'   r-   rR   rT   r	   r	   r
   test_generic_and_cuda   s    z"TestOverload.test_generic_and_cudac                 C   s    dd }t t }| || d S )Nc                 S   s   t |  t|  d S r   )r   r   r(   r	   r	   r
   rP      s    z8TestOverload.test_call_two_generic_calls.<locals>.kernel)r'   r/   rR   rT   r	   r	   r
   test_call_two_generic_calls   s    z(TestOverload.test_call_two_generic_callsc                 C   s    dd }t t }| || d S )Nc                 S   s   t |  t|  d S r   )r   r   r(   r	   r	   r
   rP      s    z5TestOverload.test_call_two_cuda_calls.<locals>.kernel)r-   r1   rR   rT   r	   r	   r
   test_call_two_cuda_calls   s    z%TestOverload.test_call_two_cuda_callsc                 C   s    dd }t t }| || d S )Nc                 S   s   t |  d S r   )r   r(   r	   r	   r
   rP      s    z7TestOverload.test_generic_calls_generic.<locals>.kernel)r3   r'   rR   rT   r	   r	   r
   test_generic_calls_generic   s    z'TestOverload.test_generic_calls_genericc                 C   s    dd }t t }| || d S )Nc                 S   s   t |  d S r   )r   r(   r	   r	   r
   rP      s    z4TestOverload.test_generic_calls_cuda.<locals>.kernel)r5   r-   rR   rT   r	   r	   r
   test_generic_calls_cuda   s    z$TestOverload.test_generic_calls_cudac                 C   s    dd }t t }| || d S )Nc                 S   s   t |  d S r   )r   r(   r	   r	   r
   rP      s    z4TestOverload.test_cuda_calls_generic.<locals>.kernel)r7   r'   rR   rT   r	   r	   r
   test_cuda_calls_generic   s    z$TestOverload.test_cuda_calls_genericc                 C   s    dd }t t }| || d S )Nc                 S   s   t |  d S r   )r   r(   r	   r	   r
   rP     s    z1TestOverload.test_cuda_calls_cuda.<locals>.kernel)r9   r-   rR   rT   r	   r	   r
   test_cuda_calls_cuda  s    z!TestOverload.test_cuda_calls_cudac                 C   s   dd }t }| || d S )Nc                 S   s   t |  d S r   )r   r(   r	   r	   r
   rP   
  s    z8TestOverload.test_call_target_overloaded.<locals>.kernel)r=   rR   rT   r	   r	   r
   test_call_target_overloaded	  s    z(TestOverload.test_call_target_overloadedc                 C   s    dd }t t }| || d S )Nc                 S   s   t |  d S r   )r   r(   r	   r	   r
   rP     s    zATestOverload.test_generic_calls_target_overloaded.<locals>.kernel)r?   r=   rR   rT   r	   r	   r
   $test_generic_calls_target_overloaded  s    z1TestOverload.test_generic_calls_target_overloadedc                 C   s    dd }t t }| || d S )Nc                 S   s   t |  d S r   )r   r(   r	   r	   r
   rP     s    z>TestOverload.test_cuda_calls_target_overloaded.<locals>.kernel)rA   r=   rR   rT   r	   r	   r
   !test_cuda_calls_target_overloaded  s    z.TestOverload.test_cuda_calls_target_overloadedc                 C   s4   dd }t t }| || tt }| || d S )Nc                 S   s   t |  d S r   )r   r(   r	   r	   r
   rP     s    zKTestOverload.test_target_overloaded_calls_target_overloaded.<locals>.kernel)rE   r=   rR   rC   r;   rS   rT   r	   r	   r
   .test_target_overloaded_calls_target_overloaded  s
    z;TestOverload.test_target_overloaded_calls_target_overloadedN)__name__
__module____qualname__rR   rS   rU   rV   rW   rX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   r	   r	   r	   r
   rG      s   rG   __main__)6Znumbar   r   Znumba.core.extendingr   Znumba.cuda.testingr   r   r   numpyrJ   r   r   r   r   r   r   r   r   r   r   r   r   r'   r-   r/   r1   r3   r5   r7   r9   r;   r=   r?   rA   rC   rE   r,   r.   r0   r2   r4   r6   r8   r:   r<   r>   r@   rB   rD   rF   rG   rb   mainr	   r	   r	   r
   <module>   sz   	



























o
