o
    ۾i                     @   s~   d dl Z d dlZd dlmZ d dlmZmZmZ d dl	m
Z
 edG dd dejZG dd	 d	eZed
kr=e  dS dS )    N)cuda)unittestskip_on_cudasimCUDATestCase)irz,This is testing CUDA backend code generationc                   @   s   e Zd Zdd ZdS )TestConstStringCodegenc                 C   sb  ddl m} ddlm} |j}|d}d}|||}||| tdt	|}| 
t|d ttd g }t||d	}	t|	 }
|
|ttdd
}|
| tdt	|}| 
t|d t||d}	t|	 }
||
|}|
| tdt	|}| 
t|d |t	|d}ttd|}| 
t|d d S )Nr   )cuda_target)
compile_ir zA Little Brown Foxz7@\"__conststring__.*internal.*constant.*\[19\s+x\s+i8\]      test_insert_const_stringgeneric"test_insert_string_const_addrspaceasciiz\.const.*__conststring__)numba.cuda.descriptorr   numba.cuda.cudadrv.nvvmr	   target_contextcreate_moduleinsert_const_stringrefindallstrassertEquallenr   FunctionTypeIntType
as_pointerFunction	IRBuilderappend_basic_blockaddrspacecastPointerTyperetinsert_string_const_addrspacedecodelist)selfr   r	   	targetctxmod
textstringgv0resfntyfnbuildermatchesptx r2   ]/home/ubuntu/.local/lib/python3.10/site-packages/numba/cuda/tests/cudapy/test_const_string.pytest_const_string
   sB   


z(TestConstStringCodegen.test_const_stringN)__name__
__module____qualname__r4   r2   r2   r2   r3   r      s    r   c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
TestConstStringc                 C   d   t jdd }d}tj|d dd}|d|f | t|}d|d d< d	|d< tj|| d S )
Nc                 S   &   t d}|t| k rd| |< d S d S )Nr   XYZr   gridr   arrir2   r2   r3   
str_assign<      
zDTestConstString.test_assign_const_unicode_string.<locals>.str_assignr   r   <U12dtyper;   r
   r   jitnpzeros
zeros_liketestingassert_equal)r'   rA   	n_stringsr?   expectedr2   r2   r3    test_assign_const_unicode_string;      

z0TestConstString.test_assign_const_unicode_stringc                 C   r9   )
Nc                 S   r:   )Nr      XYZr<   r>   r2   r2   r3   bytes_assignN   rB   zCTestConstString.test_assign_const_byte_string.<locals>.bytes_assignr   r   S12rD   rR   rF       rG   )r'   rS   rN   r?   rO   r2   r2   r3   test_assign_const_byte_stringM   rQ   z-TestConstString.test_assign_const_byte_stringc                 C   h   t jdd }tdtjfdtdfg}td|}|d | tjdd	g|d
}tj|| d S )Nc                 S   4   d| d d< d| d d< d| d d< d| d d< d S )Nr   r   xABCy   r;   r2   ar2   r2   r3   f`      z=TestConstString.test_assign_const_string_in_record.<locals>.frY   r[   rC   r\   r   r   )r   rZ   )r\   r;   rD   )	r   rH   rI   rE   int32rJ   asarrayrL   assert_array_equalr'   r_   dtr^   	referencer2   r2   r3   "test_assign_const_string_in_record_      
z2TestConstString.test_assign_const_string_in_recordc                 C   rW   )Nc                 S   rX   )Nr   r   rY      ABCr[   r\   rR   r2   r]   r2   r2   r3   r_   p   r`   z<TestConstString.test_assign_const_bytes_in_record.<locals>.frY   r[   rT   r\   ra   )r   rj   )r\   rR   rD   )	r   rH   rI   rE   float32rJ   rc   rL   rd   re   r2   r2   r3   !test_assign_const_bytes_in_recordo   ri   z1TestConstString.test_assign_const_bytes_in_recordN)r5   r6   r7   rP   rV   rh   rl   r2   r2   r2   r3   r8   :   s
    r8   __main__)r   numpyrI   numbar   numba.cuda.testingr   r   r   llvmliter   TestCaser   r8   r5   mainr2   r2   r2   r3   <module>   s    1F