U
    ?h                     @   sP   d Z ddlZddlmZmZ ddlmZmZ G dd deZ	e
dkrLe  dS )z
Test basic language features

    N)cudafloat64)unittestCUDATestCasec                   @   s$   e Zd Zdd Zdd Zdd ZdS )TestLangc                    sL   d t d fdd}tt }|d | | t| k d S )N)      ?g      @g      @void(float64[:])c                    s   t  D ]\}}|| |< qd S )N)	enumerate)aivtup S/var/www/html/venv/lib/python3.8/site-packages/numba/cuda/tests/cudapy/test_lang.pyfoo   s    z$TestLang.test_enumerate.<locals>.foo   r   )r   jitnpzeroslen
assertTrueall)selfr   r
   r   r   r   test_enumerate   s    zTestLang.test_enumeratec                    sj   d dt d fdd}td}|d | t }t}| t|||  k d S )N)r         )g      @gffffff@g@r   c                    s0   d}t  D ]\}}||| 7 }q|| d< d S )Nr   )zip)r
   cr   jt1t2r   r   r      s    zTestLang.test_zip.<locals>.foor   r   )r   r   r   r   arrayr   r   sum)r   r   r
   br   r   r!   r   test_zip   s    


zTestLang.test_zipc                 C   s,   t ddd }td}|d | dS )a?  
        Ensure that typing and lowering of CUDA kernel API primitives works in
        more than one block. Was originally to ensure that macro expansion works
        for more than one block (issue #872), but macro expansion has been
        replaced by a "proper" implementation of all kernel API functions.
        zvoid(float64[:,:])c                 S   s^   t dD ]}tjj}qt dD ]}tjj}qtjdt}d|||f< |||f | ||f< d S )Nr   r   r   r   r   )ranger   Z	threadIdxxyZsharedr$   r   )Zaryr   Ztxr    tysmr   r   r   "cuda_kernel_api_in_multiple_blocks1   s    

zCTestLang.test_issue_872.<locals>.cuda_kernel_api_in_multiple_blocksr(   )r   r(   N)r   r   r   r   )r   r.   r
   r   r   r   test_issue_872)   s    
	
zTestLang.test_issue_872N)__name__
__module____qualname__r   r'   r/   r   r   r   r   r      s   r   __main__)__doc__numpyr   Znumbar   r   Znumba.cuda.testingr   r   r   r0   mainr   r   r   r   <module>   s   4