
    |h                         S SK r S SKrS SKJr  S SKJrJrJr  S SK	J
r
  \" S5       " S S\R                  5      5       r " S S	\5      r\S
:X  a  \R                  " 5         gg)    N)cuda)unittestskip_on_cudasimCUDATestCase)irz,This is testing CUDA backend code generationc                       \ rS rSrS rSrg)TestConstStringCodegen   c                    SSK Jn  SSKJn  UR                  nUR                  S5      nSnUR                  XE5      nUR                  XE5        [        R                  " S[        U5      5      nU R                  [        U5      S5        [        R                  " [        R                  " S5      R                  5       / 5      n[        R                   " XHS	5      n	[        R"                  " U	R%                  5       5      n
U
R'                  U[        R(                  " [        R                  " S5      5      S
5      nU
R+                  U5        [        R                  " S[        U5      5      nU R                  [        U5      S5        [        R                   " XHS5      n	[        R"                  " U	R%                  5       5      n
UR-                  X5      nU
R+                  U5        [        R                  " S[        U5      5      nU R                  [        U5      S5        U" [        U5      5      R/                  S5      n[1        [        R                  " SU5      5      nU R                  [        U5      S5        g )Nr   )cuda_target)
compile_ir zA Little Brown Foxz7@\"__conststring__.*internal.*constant.*\[19\s+x\s+i8\]   r
   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ptxs                c/home/james-whalen/.local/lib/python3.13/site-packages/numba/cuda/tests/cudapy/test_const_string.pytest_const_string(TestConstStringCodegen.test_const_string
   s   56..	%%b))
++C< 	%%c6jj *+.s85 	S1%rzz!}7792> [[$>?,,r4467##C

1)F$-/C** ./23x9Wq) [[$HI,,r446755gJC** ./23x9Wq)S"))'2rzz"=sCDWq)     N)__name__
__module____qualname____firstlineno__r6   __static_attributes__r9   r8   r5   r	   r	      s    ,*r8   r	   c                   ,    \ rS rSrS rS rS rS rSrg)TestConstString:   c                     [         R                  S 5       nSn[        R                  " US-   SS9nUSU4   " U5        [        R                  " U5      nSUS S& SUS'   [        R
                  R                  X45        g )	Nc                 X    [         R                  " S5      nU[        U 5      :  a  SX'   g g )Nr   XYZr   gridr   arris     r5   
str_assignDTestConstString.test_assign_const_unicode_string.<locals>.str_assign<   s&    		!A3s8| r8   r
   r   <U12dtyperD   r   r   jitnpzeros
zeros_liketestingassert_equal)r*   rJ   	n_stringsrH   expecteds        r5    test_assign_const_unicode_string0TestConstString.test_assign_const_unicode_string;   sz    		 
	
 	hhy1}F31i< % ==%"


.r8   c                     [         R                  S 5       nSn[        R                  " US-   SS9nUSU4   " U5        [        R                  " U5      nSUS S& SUS'   [        R
                  R                  X45        g )	Nc                 X    [         R                  " S5      nU[        U 5      :  a  SX'   g g )Nr      XYZrE   rG   s     r5   bytes_assignCTestConstString.test_assign_const_byte_string.<locals>.bytes_assignN   s&    		!A3s8| r8   r
   r   S12rM   r]   rO   r8   rP   )r*   r^   rW   rH   rX   s        r5   test_assign_const_byte_string-TestConstString.test_assign_const_byte_stringM   sz    		  
	 
 	hhy1}E2Q	\"3' ==%"


.r8   c                 \   [         R                  S 5       n[        R                  " S[        R                  4S[        R                  " S5      4/5      n[        R
                  " SU5      nUS   " U5        [        R                  " SS/US	9n[        R                  R                  XC5        g )
Nc                 D    SU S   S'   SU S   S'   SU S   S'   SU S   S'   g )Nr   r   xABCy   rD   r9   as    r5   f=TestConstString.test_assign_const_string_in_record.<locals>.f`   s6    AaDIAaDIAaDIAaDIr8   re   rg   rL   rh   r   r   )r   rf   )rh   rD   rM   )	r   rQ   rR   rN   int32rS   asarrayrU   assert_array_equalr*   rk   dtrj   	references        r5   "test_assign_const_string_in_record2TestConstString.test_assign_const_string_in_record_   s    		 
	 XXRXXbhhv.>(?@AHHQO	$
JJ
J7rB	


%%i3r8   c                 \   [         R                  S 5       n[        R                  " S[        R                  4S[        R                  " S5      4/5      n[        R
                  " SU5      nUS   " U5        [        R                  " SS/US	9n[        R                  R                  XC5        g )
Nc                 D    SU S   S'   SU S   S'   SU S   S'   SU S   S'   g )Nr   r   re      ABCrg   rh   r]   r9   ri   s    r5   rk   <TestConstString.test_assign_const_bytes_in_record.<locals>.fp   s6    AaDIAaDIAaDIAaDIr8   re   rg   r`   rh   rm   )r   rx   )rh   r]   rM   )	r   rQ   rR   rN   float32rS   ro   rU   rp   rq   s        r5   !test_assign_const_bytes_in_record1TestConstString.test_assign_const_bytes_in_recordo   s    		 
	 XXRZZ(3*@ABHHQO	$
JJ[9D	


%%i3r8   r9   N)	r:   r;   r<   r=   rY   ra   rt   r{   r>   r9   r8   r5   r@   r@   :   s    /$/$4 4r8   r@   __main__)r   numpyrR   numbar   numba.cuda.testingr   r   r   llvmliter   TestCaser	   r@   r:   mainr9   r8   r5   <module>r      sg    	   F F  ?@-*X.. -* A-*bC4l C4L zMMO r8   