
    sh.                     L   S SK rS SKJrJrJrJr  S SKJrJ	r	  S SK
Jr  \R                  " / 5      r\R                  " S\R                  S9S-  r\R                   " \R                  " S\R
                  S9R#                  SS5      5      r\R                  " S	\R                  S9R#                  S
S
S
5      S-   S-  r\R                  " S\R(                  S9r\R                  " / S\4S\4/S9r\R                  " SS/S\4S\4/S9r\R                  " SS/\R4                  " S\R(                  4S\R(                  4S\R(                  4S\R6                  4S\R(                  4/SS9S9rS rS rS rS r S r!S r"S r#S  r$ " S! S"\	5      r%\&S#:X  a  \RN                  " 5         gg)$    N)cuda	complex64int32float64)unittestCUDATestCase)ENABLE_CUDASIM
   dtypeg       @d   }      y              ?y               @   xy)      ?   )g      @   )   r   r   l   >[=    )r   r      l   ^} r
   abzT)r   alignc                     [         R                  R                  [        5      n[         R                  " S5      n[        U5      X'   g Nr   )r   const
array_likeCONST_EMPTYgridlenACis      y/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/numba/cuda/tests/cudapy/test_constmem.pycuconstEmptyr)   "   s.    

k*A		!Aq6AD    c                     [         R                  R                  [        5      n[         R                  " S5      nX   S-   X'   g )Nr   r   )r   r   r    CONST1Dr"   r$   s      r(   cuconstr-   (   s2    

g&A		!A 4#:ADr*   c                     [         R                  R                  [        5      n[         R                  " S5      u  p#XU4   XU4'   g )Nr   )r   r   r    CONST2Dr"   )r%   r&   r'   js       r(   	cuconst2dr1   0   s6    

g&A99Q<DA1gAdGr*   c                     [         R                  R                  [        5      n[         R                  R
                  n[         R                  R                  n[         R                  R                  nXX44   XX44'   g )N)r   r   r    CONST3D	threadIdxr   r   r   )r%   r&   r'   r0   ks        r(   	cuconst3dr6   6   sT    

g&AAAAa7AgJr*   c                     [         R                  R                  [        5      n[         R                  " S5      n[        U5      X'   g r   )r   r   r    CONST_RECORD_EMPTYr"   r#   r$   s      r(   cuconstRecEmptyr9   >   s/    

01A		!Aq6ADr*   c                     [         R                  R                  [        5      n[         R                  " S5      nX#   S   X'   X#   S   X'   g )Nr   r   r   )r   r   r    CONST_RECORDr"   )r%   Br&   r'   s       r(   
cuconstRecr=   D   s=    

l+A		!A49AD49ADr*   c                     [         R                  R                  [        5      n[         R                  " S5      nXV   S   X'   XV   S   X'   XV   S   X&'   XV   S   X6'   XV   S   XF'   g )Nr   r   r   r   r   r   )r   r   r    CONST_RECORD_ALIGNr"   )r%   r<   r&   DEZr'   s          r(   cuconstRecAlignrC   K   se    

01A		!A49AD49AD49AD49AD49ADr*   c                     [         R                  R                  [        5      n[         R                  R                  [        5      n[         R
                  " S5      nX   X#   -   X'   g r   )r   r   r    CONST3BYTESr,   r"   )r   r   r   r'   s       r(   cuconstAlignrF   U   sF    

k*A

g&A		!A4!$;ADr*   c                   D    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
rg)TestCudaConstantMemory\   c                 \   [         S S  4n[        R                  " U5      " [        5      n[        R
                  " [        5      nUS   " U5        U R                  [        R                  " U[        S-   :H  5      5        [        (       d#  U R                  SUR                  U5      S5        g g )N)r   r   r   zld.const.f64z'as we're adding to it, load as a double)r   r   jitr-   np
zeros_liker,   
assertTrueallr	   assertIninspect_asm)selfsigjcuconstr%   s       r(   test_const_array'TestCudaConstantMemory.test_const_array]   s    qzm88C=)MM'"qqGaK/01~MM$$S)9; r*   c                     [         R                  " S5      " [        5      n[        R                  " SS[        R
                  S9nUS   " U5        U R                  [        R                  " US:H  5      5        g Nzvoid(int64[:])r   
fill_valuer   )r   r   r   )r   rK   r)   rL   fullint64rN   rO   )rR   jcuconstEmptyr%   s      r(   test_const_empty'TestCudaConstantMemory.test_const_emptyj   sQ    !12<@GGA"BHH5dAqAv'r*   c           	         [         R                  " S5      " [        5      n[        R                  " S[        R
                  [        S9nUS   " U5        U R                  [        R                  " U[        [        S S -   :H  5      5        g )Nzvoid(float64[:])r   rZ   )r   r   )r   rK   rF   rL   r\   nanfloatrN   rO   rE   r,   )rR   jcuconstAlignr%   s      r(   test_const_align'TestCudaConstantMemory.test_const_alignp   s^    !34\BGGA"&&6dAq[72A;%>?@Ar*   c                 `   [         S S 2S S 24   4n[        R                  " U5      " [        5      n[        R
                  " [        SS9nUS   " U5        U R                  [        R                  " U[        :H  5      5        [        (       d#  U R                  SUR                  U5      S5        g g )Nr&   order))r   r   )r   r   zld.const.u32zload the ints as ints)r   r   rK   r1   rL   rM   r/   rN   rO   r	   rP   rQ   )rR   rS   
jcuconst2dr%   s       r(   test_const_array_2d*TestCudaConstantMemory.test_const_array_2dv   s    QqSzmXXc]9-
MM'->"1%qG|,-~MM&&s+') r*   c                 p   [         S S 2S S 2S S 24   4n[        R                  " U5      " [        5      n[        R
                  " [        SS9nUS   " U5        U R                  [        R                  " U[        :H  5      5        [        (       d(  UR                  U5      nSnSnU R                  XTU5        g g )NFrh   )r   )r   r   r   zld.const.v2.f32z&Load the complex as a vector of 2x f32)r   r   rK   r6   rL   rM   r3   rN   rO   r	   rQ   rP   )rR   rS   
jcuconst3dr%   asmcomplex_loaddescriptions          r(   test_const_array_3d*TestCudaConstantMemory.test_const_array_3d   s    1Q!XXc]9-
MM'-< #qG|,-~((-C,LBKMM,[9	 r*   c                     [         R                  " S5      " [        5      n[        R                  " SS[        R
                  S9nUS   " U5        U R                  [        R                  " US:H  5      5        g rX   )r   rK   r9   rL   r\   r]   rN   rO   )rR   jcuconstRecEmptyr%   s      r(   test_const_record_empty.TestCudaConstantMemory.test_const_record_empty   sR    88$45oFGGA"BHH5q!qAv'r*   c                 l   [         R                  " S[        S9n[         R                  " S[        S9n[        R
                  " [        5      R                  X5      nUS   " X5        [         R                  R                  U[        S   5        [         R                  R                  U[        S   5        g )Nr   r   r   r   r   r   )rL   zerosrc   intr   rK   r=   
specializetestingassert_allcloser;   )rR   r%   r<   rT   s       r(   test_const_record(TestCudaConstantMemory.test_const_record   sy    HHQe$HHQc"88J'2218q


""1l3&78


""1l3&78r*   c                 X   [         R                  " S[         R                  S9n[         R                  " S[         R                  S9n[         R                  " S[         R                  S9n[         R                  " S[         R                  S9n[         R                  " S[         R                  S9n[        R                  " [
        5      R                  XX4U5      nUS   " XX4U5        [         R                  R                  U[        S   5        [         R                  R                  U[        S   5        [         R                  R                  U[        S   5        [         R                  R                  U[        S   5        [         R                  R                  U[        S   5        g )	Nr   r   rz   r   r   r   r   r   )
rL   r{   r   r   rK   rC   r}   r~   r   r?   )rR   r%   r<   r&   r@   rA   rT   s          r(   test_const_record_align.TestCudaConstantMemory.test_const_record_align   s   HHQbjj)HHQbjj)HHQbjj)HHQbjj)HHQbjj)88O,77aAFqQ1%


""1&8&=>


""1&8&=>


""1&8&=>


""1&8&=>


""1&8&=>r*    N)__name__
__module____qualname____firstlineno__rU   r_   re   rk   rs   rw   r   r   __static_attributes__r   r*   r(   rH   rH   \   s+    ;(B):(9?r*   rH   __main__)(numpyrL   numbar   r   r   r   numba.cuda.testingr   r   numba.core.configr	   arrayr!   aranger,   asfortranarrayreshaper/   r3   uint8rE   rc   r|   r8   r;   r   uint32r?   r)   r-   r1   r6   r9   r=   rC   rF   rH   r   mainr   r*   r(   <module>r      s    1 1 5 ,hhrl
))Bbjj
)B
.


IIc"**2r24IIir||4<<Q1EJii*XX<#s
$&  xxx<#s
$& XX89
(("((O"((O"((O"))"((O
 
 P?\ P?f zMMO r*   