a
    .;b                     @   s   d dl Zd dlmZmZmZmZ d dlmZ d dl	m
Z
mZ d dl	mZ dZdZdZd	d
 Zdd Zdd Zdd Zdd Zdd Zdd ZG dd deZedkre
  dS )    N)cudafloat32int32void)TypingError)unittestCUDATestCase)skip_on_cudasim      )r
   r   c                 C   s*   t jjttd}t d}|| | |< d S )Nshapedtype   )r   sharedarrayGLOBAL_CONSTANTr   gridAsai r   Glib/python3.9/site-packages/numba/cuda/tests/cudapy/test_sm_creation.pyudt_global_constants   s    
r   c                 C   s:   t jjttftd}t d\}}|||f | ||f< d S Nr      r   r   r   r   GLOBAL_CONSTANT_2r   r   r   r   r   jr   r   r   udt_global_build_tuple   s
    r!   c                 C   s:   t jjttgtd}t d\}}|||f | ||f< d S r   r   r   r   r   r   udt_global_build_list   s
    r"   c                 C   s6   t jjttd}t d\}}|||f | ||f< d S r   )r   r   r   GLOBAL_CONSTANT_TUPLEr   r   r   r   r   r   udt_global_constant_tuple    s    r$   c                 C   s.   t jj| d td}t d}|| | |< d S )Nr   r   r   r   r   r   r   r   r   r   r   r   udt_invalid_1&   s    
r&   c                 C   s>   t jjd| d ftd}t d\}}|||f | ||f< d S )Nr   r   r   r   r%   r   r   r   r   udt_invalid_2,   s    r'   c                 C   s6   t jjd| d ftd}t d}||df | |< d S )Nr   r   r   r%   r   r   r   r   udt_invalid_32   s    
r(   c                   @   s   e Zd Zdd Zdd Zdd Zdd Zed	d
d Zdd Z	eddd Z
eddd Zeddd Zeddd Zdd Zeddd Zeddd Zeddd Zedd d! Zd"S )#TestSharedMemoryCreationc                 C   s   t jdt jddS )Nd   r   )r   Zndmin)npr   r   selfr   r   r   getarg9   s    zTestSharedMemoryCreation.getargc                 C   s   |   ddS )Nr   )r.   Zreshaper,   r   r   r   getarg2<   s    z TestSharedMemoryCreation.getarg2c                 C   s,   t td d  ft}|d |   d S N)r   r   )r   jitr   r   r.   r-   Zudtr   r   r   test_global_constants?   s    z.TestSharedMemoryCreation.test_global_constantsc                 C   s4   t td d d d f ft}|d |   d S r0   )r   r1   r   r!   r/   r2   r   r   r   test_global_build_tupleC   s     z0TestSharedMemoryCreation.test_global_build_tuplez8Simulator does not prohibit lists for shared array shapec                 C   sr   |  t0}ttd d d d f ft W d    n1 s@0    Y  | dt|j | dt|j d S )N=No implementation of function Function(<function shared.arrayzTfound for signature:
 
 >>> array(shape=list(int64)<iv=[5, 6]>, dtype=class(float32))	assertRaisesr   r   r1   r   r"   assertInstr	exceptionr-   Zraisesr   r   r   test_global_build_listG   s    >z/TestSharedMemoryCreation.test_global_build_listc                 C   s4   t td d d d f ft}|d |   d S r0   )r   r1   r   r$   r/   r2   r   r   r   test_global_constant_tupleT   s     z3TestSharedMemoryCreation.test_global_constant_tuplez&Can't check for constants in simulatorc                 C   sj   |  t(}ttd d  ft W d    n1 s80    Y  | dt|j | dt|j d S )Nr5   zFfound for signature:
 
 >>> array(shape=float32, dtype=class(float32)))	r6   r   r   r1   r   r&   r7   r8   r9   r:   r   r   r   test_invalid_1X   s    6z'TestSharedMemoryCreation.test_invalid_1c                 C   sr   |  t0}ttd d d d f ft W d    n1 s@0    Y  | dt|j | dt|j d S )Nr5   zlfound for signature:
 
 >>> array(shape=Tuple(Literal[int](1), array(float32, 1d, A)), dtype=class(float32)))	r6   r   r   r1   r   r'   r7   r8   r9   r:   r   r   r   test_invalid_2e   s    >z'TestSharedMemoryCreation.test_invalid_2c                 C   sj   |  t(}ttd d  ft W d    n1 s80    Y  | dt|j | dt|j d S )Nr5   zDfound for signature:
 
 >>> array(shape=int32, dtype=class(float32)))	r6   r   r   r1   r   r&   r7   r8   r9   r:   r   r   r   test_invalid_3s   s    6z'TestSharedMemoryCreation.test_invalid_3c                 C   sj   |  t(}ttd d  ft W d    n1 s80    Y  | dt|j | dt|j d S )Nr5   z\found for signature:
 
 >>> array(shape=Tuple(Literal[int](1), int32), dtype=class(float32)))	r6   r   r   r1   r   r(   r7   r8   r9   r:   r   r   r   test_invalid_4   s    6z'TestSharedMemoryCreation.test_invalid_4c                 C   s0   t t|j j}|jd j}| |t d S )Ns)	nextiterZ	overloadsvaluesZ_type_annotationZtypemapr   ZassertEqualr   )r-   f
annotationZl_dtyper   r   r   check_dtype   s    z$TestSharedMemoryCreation.check_dtypezCan't check typing in simulatorc                 C   s.   t ttd d d dd }| | d S )Nr   c                 S   s,   t jjdtd}| d |d< |d | d< d S N
   r   r   )r   r   r   r   xrA   r   r   r   rE      s    z4TestSharedMemoryCreation.test_numba_dtype.<locals>.fr   r1   r   r   rG   r-   rE   r   r   r   test_numba_dtype   s    
z)TestSharedMemoryCreation.test_numba_dtypec                 C   s.   t ttd d d dd }| | d S )Nr   c                 S   s.   t jjdtjd}| d |d< |d | d< d S rH   )r   r   r   r+   r   rK   r   r   r   rE      s    z4TestSharedMemoryCreation.test_numpy_dtype.<locals>.frM   rN   r   r   r   test_numpy_dtype   s    
z)TestSharedMemoryCreation.test_numpy_dtypec                 C   s.   t ttd d d dd }| | d S )Nr   c                 S   s,   t jjddd}| d |d< |d | d< d S )NrI   r   rJ   r   r   r   r   rK   r   r   r   rE      s    z5TestSharedMemoryCreation.test_string_dtype.<locals>.frM   rN   r   r   r   test_string_dtype   s    
z*TestSharedMemoryCreation.test_string_dtypec                 C   sT   d}|  t|0 tttd d d dd }W d    n1 sF0    Y  d S )Nz*.*Invalid NumPy dtype specified: 'int33'.*r   c                 S   s,   t jjddd}| d |d< |d | d< d S )NrI   Zint33rJ   r   rQ   rK   r   r   r   rE      s    z=TestSharedMemoryCreation.test_invalid_string_dtype.<locals>.f)ZassertRaisesRegexr   r   r1   r   r   )r-   rerE   r   r   r   test_invalid_string_dtype   s    z2TestSharedMemoryCreation.test_invalid_string_dtypeN)__name__
__module____qualname__r.   r/   r3   r4   r	   r;   r<   r=   r>   r?   r@   rG   rO   rP   rR   rT   r   r   r   r   r)   8   s0   










r)   __main__)Znumpyr+   Znumbar   r   r   r   Znumba.core.errorsr   Znumba.cuda.testingr   r   r	   r   r   r#   r   r!   r"   r$   r&   r'   r(   r)   rU   mainr   r   r   r   <module>   s$    