
    wg                         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ej                               Z G d d	e      Zed
k(  r ej                          yy)    N)cuda)unittestskip_on_cudasimCUDATestCase)irz,This is testing CUDA backend code generationc                       e Zd Zd Zy)TestConstStringCodegenc                    ddl m} ddlm} |j                  }|j                  d      }d}|j                  ||      }|j                  ||       t        j                  dt        |            }| j                  t        |      d       t        j                  t        j                  d      j                         g       }t        j                   ||d	      }	t        j"                  |	j%                               }
|
j'                  |t        j(                  t        j                  d            d
      }|
j+                  |       t        j                  dt        |            }| j                  t        |      d       t        j                   ||d      }	t        j"                  |	j%                               }
|j-                  |
|      }|
j+                  |       t        j                  dt        |            }| j                  t        |      d        |t        |            j/                  d      }t1        t        j                  d|            }| j                  t        |      d       y )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ptxs                n/home/mcse/projects/flask/flask-venv/lib/python3.12/site-packages/numba/cuda/tests/cudapy/test_const_string.pytest_const_stringz(TestConstStringCodegen.test_const_string
   s   56..	%%b))
++C< 	%%c:6jj *+.s85 	S1%rzz!}7792> [[d$>?,,r4467##C

1)F$-/C** ./23x9Wq) [[d$HI,,r446755gzJC** ./23x9Wq)S"))'2rzz"=sCDWq)    N)__name__
__module____qualname__r6    r7   r5   r	   r	      s    ,*r7   r	   c                   $    e Zd Zd Zd Zd Zd Zy)TestConstStringc                     t         j                  d        }d}t        j                  |dz   d      } |d|f   |       t        j                  |      }d|d d d|d<   t        j
                  j                  ||       y )	Nc                 V    t        j                  d      }|t        |       k  rd| |<   y y )Nr   XYZr   gridr   arris     r5   
str_assignzDTestConstString.test_assign_const_unicode_string.<locals>.str_assign<   s(    		!A3s8|A r7   r   r   <U12dtyper@   r   r   jitnpzeros
zeros_liketestingassert_equal)r*   rF   	n_stringsrD   expecteds        r5    test_assign_const_unicode_stringz0TestConstString.test_assign_const_unicode_string;   s~    		 
	
 	hhy1}F3 
1i< % ==%"


X.r7   c                     t         j                  d        }d}t        j                  |dz   d      } |d|f   |       t        j                  |      }d|d d d|d<   t        j
                  j                  ||       y )	Nc                 V    t        j                  d      }|t        |       k  rd| |<   y y )Nr      XYZrA   rC   s     r5   bytes_assignzCTestConstString.test_assign_const_byte_string.<locals>.bytes_assignN   s(    		!A3s8|A r7   r   r   S12rH   rW   rJ   r7   rK   )r*   rX   rR   rD   rS   s        r5   test_assign_const_byte_stringz-TestConstString.test_assign_const_byte_stringM   s~    		  
	 
 	hhy1}E2"Q	\"3' ==%"


X.r7   c                 \   t         j                  d        }t        j                  dt        j                  fdt        j                  d      fg      }t        j
                  d|      } |d   |       t        j                  ddg|	      }t        j                  j                  ||       y )
Nc                 D    d| d   d<   d| d   d<   d| d   d<   d| d   d<   y )Nr   r   xABCy   r@   r;   as    r5   fz=TestConstString.test_assign_const_string_in_record.<locals>.f`   s6    AaDIAaDIAaDIAaDIr7   r]   r_   rG   r`   r   r   )r   r^   )r`   r@   rH   )	r   rL   rM   rI   int32rN   asarrayrP   assert_array_equalr*   rc   dtrb   	references        r5   "test_assign_const_string_in_recordz2TestConstString.test_assign_const_string_in_record_   s    		 
	 XXRXXbhhv.>(?@AHHQO$
JJ
J7rB	


%%i3r7   c                 \   t         j                  d        }t        j                  dt        j                  fdt        j                  d      fg      }t        j
                  d|      } |d   |       t        j                  ddg|	      }t        j                  j                  ||       y )
Nc                 D    d| d   d<   d| d   d<   d| d   d<   d| d   d<   y )Nr   r   r]      ABCr_   r`   rW   r;   ra   s    r5   rc   z<TestConstString.test_assign_const_bytes_in_record.<locals>.fp   s6    AaDIAaDIAaDIAaDIr7   r]   r_   rY   r`   rd   )r   rn   )r`   rW   rH   )	r   rL   rM   rI   float32rN   rf   rP   rg   rh   s        r5   !test_assign_const_bytes_in_recordz1TestConstString.test_assign_const_bytes_in_recordo   s    		 
	 XXRZZ(3*@ABHHQO$
JJ[9D	


%%i3r7   N)r8   r9   r:   rT   rZ   rk   rp   r;   r7   r5   r=   r=   :   s    /$/$4 4r7   r=   __main__)r   numpyrM   numbar   numba.cuda.testingr   r   r   llvmliter   TestCaser	   r=   r8   mainr;   r7   r5   <module>rx      si    	   F F  ?@-*X.. -* A-*bC4l C4L zHMMO r7   