
    J/Ph                        d dl Z d dlZd dlZd dlZd dlmZ d dlZd dlZd dl	m
Z
mZmZmZ d dlmZ d dlmZmZ  ej        e
j        j                  Zd Z G d de          Z G d d	e          Zed
k    r ej                     dS dS )    N)typestypingcgutilscpu)global_compiler_lock)TestCaserun_in_subprocessc                 6    t          j        t          |           S N)irConstantmachine_int)ns    X/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/numba/tests/test_cgutils.pymachine_constr      s    ;{A&&&    c                       e Zd Zd Zej        d             Zd Zd Zej        dd            Z	ej        d             Z
d Zd	 Zd
S )StructureTestCasec                 ^    t          j                    }t          j        |          | _        d S r   )r   Contextr   
CPUContextcontext)selftyping_contexts     r   setUpzStructureTestCase.setUp   s$    ))~n55r   c              #      	K   t          j        t          t          g|z            }t          j        t          j        gt          j        f|z  R   j                            d          	t          j	        	| 
                                          j        sJ                     d          }t          j        |          }dg}t          	 fd            } j        |j        |fV  d S )N entryTc                     j                                         }|                    d                                z            }|                               |                    j                  } |          } ||  S )Nztest_module.%s)r   codegencreate_libraryidadd_ir_moduleget_pointer_to_functionname)	argsr    librarycptrcfuncctypes_fntyfunctionmoduler   s	        r   	call_funcz5StructureTestCase.compile_function.<locals>.call_func)   s{    l**,,G,,-=		-IJJG!!&)))228=AADK%%E5$<r   )r   FunctionTyper   ctypes	CFUNCTYPEc_size_tr   create_moduler   get_or_insert_functionr"   is_declarationappend_basic_block	IRBuilderr   r&   )
r   nargs	llvm_fntyentry_blockbuilderfirstr-   r*   r+   r,   s
   `      @@@r   compile_functionz"StructureTestCase.compile_function   s     OK+1FGG	&v B'-&85&@B B B++B//1&)TWWYYOO&&&&11'::,{++		  	  	  	  	  	  	  
		  lGX]I======r   c                     t          |t                    sJ t          j        j        }t          j        g|_        t          j        |_         ||          S r   )	
isinstance	bytearrayr/   	pythonapiPyByteArray_AsString	py_objectargtypesc_void_prestype)r   baba_as_strings      r   get_bytearray_addrz$StructureTestCase.get_bytearray_addr5   sK    "i((((('<!'!1 2%|Br   c                 X   |                      d          5 \  }}}}|                    |d         |d                   }|                    |           d d d            n# 1 swxY w Y   |                      |dd          d           |                      |dd          d           d S )	N   r                  )r<   addretassertEqual)r   r   r:   r&   callress         r   test_compile_functionz'StructureTestCase.test_compile_function<   s    ""1%% 	)G'7D$++d1gtAw//CKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	aa(((aQ'''''s   =AA#&A#r   c              #     K   |                      d          5 \  }}}} |||          }|                    |d         t          |                    }	|                    |	t	          j        |j                            }	 ||||	          }||||fV  |                    t	          j        t          d                     d d d            n# 1 swxY w Y    || 
                    |                     d S )NrK   r   )ref)r<   rQ   r   inttoptrr   PointerType_typerR   r   r   rH   )
r   struct_classbufoffsetr   r:   r&   rT   instsptrs
             r   run_struct_accessz#StructureTestCase.run_struct_accessD   s5     ""1%% 	5)G'7D$<11D;;tAwf(=(=>>D##D".*D*DEED<d;;;D7D$....KKK33444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	T$$S))*****s   B+CCCc              #   <  K   t          d          dz  }|d d          }d}|                     |||          5 \  }}}	}
|||
fV  d d d            n# 1 swxY w Y   |                     ||           t          j        |||g|R   |                     ||           d S )N   !(      )r?   ra   assertNotEqualstruct	pack_intorS   )r   r\   
struct_fmtstruct_argsr]   expectedr^   r   r:   r&   r_   s              r   run_simple_struct_testz(StructureTestCase.run_simple_struct_testQ   s      oo"qqq6##L#v>> 	)-$7D((((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	C***XvDDDDDh'''''s   AAAc                 R    G d dt           j                  }d}|                     ||d          5 \  }}}t          j        t          j        d          d          |_        t          j        t          j        d          d          |_        d d d            d S # 1 swxY w Y   d S )	Nc                   2    e Zd Zdej        fdej        fgZdS ),StructureTestCase.test_int_fields.<locals>.SabN)__name__
__module____qualname__r   int32uint16_fields r   r   Sro   b   s)        U[)U\*,GGGr   ry   z=iH)xV4ͫ      rz      r{   )r   	Structurerl   r   r   IntTyperp   rq   r   ry   fmtr   r:   r_   s         r   test_int_fieldsz!StructureTestCase.test_int_fieldsa   s    	, 	, 	, 	, 	,! 	, 	, 	, ((C1EFF 	9'$[B<<DF[B88DF	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9s   ABB #B c                 N    G d dt           j                  }d}|                     ||d          5 \  }}}t          j        t          j                    d          |_        t          j        t          j                    d          |_        d d d            d S # 1 swxY w Y   d S )Nc                   2    e Zd Zdej        fdej        fgZdS ).StructureTestCase.test_float_fields.<locals>.Srp   rq   N)rr   rs   rt   r   float64float32rw   rx   r   r   ry   r   m   s)        U]+U]+-GGGr   ry   z=df)Gz?=
ףp=@r   r   )	r   r~   rl   r   r   
DoubleTyperp   	FloatTyperq   r   s         r   test_float_fieldsz#StructureTestCase.test_float_fieldsl   s    	- 	- 	- 	- 	-! 	- 	- 	- ((C>> 	7'$[$77DF[66DF	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7s   ABB!BN)r   )rr   rs   rt   r   
contextlibcontextmanagerr<   rH   rV   ra   rl   r   r   rx   r   r   r   r      s        6 6 6 > > >2     ( ( ( 
+ 
+ 
+ 
+ ( ( (	9 	9 	9	7 	7 	7 	7 	7r   r   c                       e Zd ZdZd ZdS )TestCGContextz/Tests for code generation context functionalityc                     d}d| d}t          |          \  }}|                     t          |          |                                           d S )Ni@ az  if 1:
        from numba import njit, types
        from numba.extending import intrinsic

        @intrinsic
        def printf(tyctx, int_arg):
            sig = types.void(int_arg)
            def codegen(cgctx, builder, sig, llargs):
                cgctx.printf(builder, "%d\n", *llargs)
            return sig, codegen

        @njit
        def foo():
            printf(z)

        foo()
        )r	   assertInstrdecode)r   valuecodeout_s        r   test_printfzTestCGContext.test_printf{   s_        $ #4((Qc%jj#**,,/////r   N)rr   rs   rt   __doc__r   rx   r   r   r   r   x   s)        990 0 0 0 0r   r   __main__)r   r/   rg   sysllvmlite.irr   numpynpunittest
numba.corer   r   r   r   numba.core.compiler_lockr   numba.tests.supportr   r	   r   intpbitwidthr   r   r   r   rr   mainrx   r   r   <module>r      sK         



            2 2 2 2 2 2 2 2 2 2 2 2 9 9 9 9 9 9 ; ; ; ; ; ; ; ; bj,--' ' '`7 `7 `7 `7 `7 `7 `7 `7F0 0 0 0 0H 0 0 0> zHMOOOOO r   