
    sh                          S SK rS SKJrJrJrJr  S SKJr  S SK	J
r
  S SKJrJrJr  SSKJrJr  S rS	 rS
 r\" S5       " S S\5      5       r\S:X  a  \R.                  " 5         gg)    N)cudaint32
complex128void)types)TypingError)unittestCUDATestCaseskip_on_cudasim   )test_struct_model_type
TestStructc                     [         R                  R                  S[        S9n[	        UR
                  S   5       H	  nX   X#'   M     [	        UR
                  S   5       H	  nX#   X'   M     g )N  dtyper   r   localarrayr   rangeshapeABCis       y/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/numba/cuda/tests/cudapy/test_localmem.pyculocalr   
   [    

U+A1771:t 1771:t     c                     [         R                  R                  S[        S9n[	        UR
                  S   5       H	  nX   X#'   M     [	        UR
                  S   5       H	  nX#   X'   M     g )Nd   r   r   )r   r   r   r   r   r   r   s       r   culocalcomplexr#      s[    

J/A1771:t 1771:t r    c                     [         R                  R                  S[        S9n[	        UR
                  S   5       H	  nX   X#'   M     [	        UR
                  S   5       H	  nX#   X'   M     g )N)   r   r   r   r   s       r   culocal1tupler&      r   r    z'PTX inspection not available in cudasimc                       \ rS rSrS rS rS rS r\" S5      S 5       r	\" S5      S 5       r
\" S5      S	 5       r\" S5      S
 5       rS rS rS rS rSrg)TestCudaLocalMem"   c                 h   [         S S  [         S S  4n[        R                  " U5      " [        5      nU R	                  SUR                  U5      ;   5        [        R                  " SSS9n[        R                  " U5      nUS   " X45        U R	                  [        R                  " X4:H  5      5        g )Nz.localr   r   r   r   r   )
r   r   jitr   
assertTrueinspect_asmnparange
zeros_likeall)selfsigjculocalr   r   s        r   test_local_array!TestCudaLocalMem.test_local_array$   s    Qxq"88C=)H$8$8$==>IId'*MM!qqv'r    c                     [         R                  " S5      " [        5      n[        R                  " SSS9n[        R
                  " U5      nUS   " X#5        U R                  [        R                  " X#:H  5      5        g)zGEnsure that local arrays can be constructed with 1-tuple shape
        zvoid(int32[:], int32[:])r%   r   r   r+   N)r   r,   r&   r/   r0   r1   r-   r2   )r3   r5   r   r   s       r   test_local_array_1_tuple)TestCudaLocalMem.test_local_array_1_tuple-   sZ     8867F IIaw'MM!qqv'r    c                    Sn[         R                  " U5      " [        5      n[        R                  " SSS9S-
  S-  n[        R
                  " U5      nUS   " X45        U R                  [        R                  " X4:H  5      5        g )Nz"void(complex128[:], complex128[:])r"   r   r   r   y               @r+   )r   r,   r#   r/   r0   r1   r-   r2   )r3   r4   jculocalcomplexr   r   s        r   test_local_array_complex)TestCudaLocalMem.test_local_array_complex8   sd    2((3-7YYs,/!3r9MM!a#qv'r    c                     [        [        UR                  R                  5       5      5      R                  nUR
                  S   R                  nU R                  XB5        g )Nl)nextiter	overloadsvalues_type_annotationtypemapr   assertEqual)r3   fr   
annotationl_dtypes        r   check_dtypeTestCudaLocalMem.check_dtype@   sH    $q{{11345FF
$$S)//(r    zCan't check typing in simulatorc                     [         R                  " [        [        S S S2   5      5      S 5       nU R	                  U[        5        g )Nr   c                 h    [         R                  R                  S[        S9nU S   US'   US   U S'   g N
   r   r   )r   r   r   r   xr@   s     r   rH   ,TestCudaLocalMem.test_numba_dtype.<locals>.fJ   s5    

  5 1AQ4AaDQ4AaDr    r   r,   r   r   rK   r3   rH   s     r   test_numba_dtype!TestCudaLocalMem.test_numba_dtypeG   >     
$uSqSz"	#	 
$	
 	E"r    c                     [         R                  " [        [        S S S2   5      5      S 5       nU R	                  U[        5        g )Nr   c                 |    [         R                  R                  S[        R                  S9nU S   US'   US   U S'   g rO   )r   r   r   r/   r   rQ   s     r   rH   ,TestCudaLocalMem.test_numpy_dtype.<locals>.fU   s9    

  288 4AQ4AaDQ4AaDr    rT   rU   s     r   test_numpy_dtype!TestCudaLocalMem.test_numpy_dtypeR   rX   r    c                     [         R                  " [        [        S S S2   5      5      S 5       nU R	                  U[        5        g )Nr   c                 `    [         R                  R                  SSS9nU S   US'   US   U S'   g )NrP   r   r   r   r   r   r   rQ   s     r   rH   -TestCudaLocalMem.test_string_dtype.<locals>.f`   s5    

  7 3AQ4AaDQ4AaDr    rT   rU   s     r   test_string_dtype"TestCudaLocalMem.test_string_dtype]   rX   r    c           	          SnU R                  [        U5         [        R                  " [	        [
        S S S2   5      5      S 5       nS S S 5        g ! , (       d  f       g = f)Nz*.*Invalid NumPy dtype specified: 'int33'.*r   c                 `    [         R                  R                  SSS9nU S   US'   US   U S'   g )NrP   int33r   r   r`   rQ   s     r   rH   5TestCudaLocalMem.test_invalid_string_dtype.<locals>.fm   s5    JJ$$Rw$7t!t!r    )assertRaisesRegexr   r   r,   r   r   )r3   rerH   s      r   test_invalid_string_dtype*TestCudaLocalMem.test_invalid_string_dtypeh   sM     :##K4XXd51:&' ( 544s   0A
A c                     [         R                  " [        [        S S S2   5      5      S 5       nU R	                  U[        5        g )Nr   c                 h    [         R                  R                  S[        S9nU S   US'   US   U S'   g rO   )r   r   r   r   rQ   s     r   rH   <TestCudaLocalMem.test_type_with_struct_data_model.<locals>.ft   s6    

  +A BAQ4AaDQ4AaDr    )r   r,   r   r   rK   rU   s     r    test_type_with_struct_data_model1TestCudaLocalMem.test_type_with_struct_data_models   s?    	$-cc23	4	 
5	
 	23r    c           	      |   [         R                  " [        [        S S S2   [        S S S2   5      5      S 5       n[        R
                  " SSS9n[        R
                  " SSS9nUS   " X#5        [        U5       H  u  pEU R                  XT5        M     [        U5       H  u  pFU R                  XdS-  5        M     g )Nr   c                 >   [         R                  R                  S[        S9n[	        [        U5      5       H(  n[        [        U5      [        US-  5      5      nXBU'   M*     [	        [        U5      5       H#  nX#   R                  X'   X#   R                  X'   M%     g )NrP   r      )
r   r   r   r   r   lenr   r   rR   y)outxoutyarrr   objs        r   rH   6TestCudaLocalMem.test_struct_model_type_arr.<locals>.f}   s}     **""2-C"DC3s8_ q5Q<8A % 3s8_&((&(( %r    )rP   r   r   r+   rs   )r   r,   r   r   r/   r   	enumeraterG   )r3   rH   arrxarryr   rR   ru   s          r   test_struct_model_type_arr+TestCudaLocalMem.test_struct_model_type_arr|   s    	$uSqSz51:.	/
	# 
0
	# xxW-xxW-	$dODAQ" $dODAQA& $r    c                    ^^ [         R                  UU4S j5       n[        R                  " S[        R                  S9nUS   " U5        U R                  US   U5        g )Nc                 `   > [         R                  R                  TTS9nUR                  U S'   g )Nr   r   )r   r   r   size)arx   r   tys     r   s8TestCudaLocalMem._check_local_array_size_fp16.<locals>.s   s)    **""5"3C88AaDr    r   r   r+   r   )r   r,   r/   zerosfloat16rG   )r3   r   expectedr   r   results    ` `  r   _check_local_array_size_fp16-TestCudaLocalMem._check_local_array_size_fp16   sN    		 
	 !2::.	$H-r    c                     U R                  SS[        R                  5        U R                  SS[        R                  5        g )Nrs   )r   r   r   r/   )r3   s    r   test_issue_fp16_support(TestCudaLocalMem.test_issue_fp16_support   s.    ))!Q>))!Q

;r     N)__name__
__module____qualname____firstlineno__r6   r9   r=   rK   r   rV   r\   rb   rj   ro   r~   r   r   __static_attributes__r   r    r   r(   r(   "   s    (	(() 67# 8# 67# 8# 67# 8# 67 84'0.<r    r(   __main__)numpyr/   numbar   r   r   r   
numba.corer   numba.core.errorsr   numba.cuda.testingr	   r
   r   extensions_usecasesr   r   r   r#   r&   r(   r   mainr   r    r   <module>r      si     / /  ) F F C :;}<| }< <}<@ zMMO r    