o
    Û¾i¸  ã                   @   sT   d Z ddlmZ ddlmZ ddlmZmZ edd„ ƒZedd„ ƒZ	ed	d
„ ƒZ
dS )z™
This file provides internal compiler utilities that support certain special
operations with bytes and workarounds for limitations enforced in userland.
é    )Ú	intrinsic)Úir)ÚtypesÚcgutilsc                 C   ó    dd„ }t  t jt j¡}||fS )Nc                 S   ó6   |\}}|  |t d¡ ¡ ¡}| | ||g¡¡}|S )Né   ©Úbitcastr   ÚIntTypeÚ
as_pointerÚloadÚgep©ÚcontextÚbuilderÚ	signatureÚargsÚdataÚidxÚptrÚch© r   úK/home/ubuntu/.local/lib/python3.10/site-packages/numba/core/unsafe/bytes.pyÚimpl   ó   zgrab_byte.<locals>.impl)r   Úuint8ÚvoidptrÚintp©Ú	typingctxr   Úoffsetr   Úsigr   r   r   Ú	grab_byte   s   r#   c                 C   r   )Nc                 S   r   )Né@   r	   r   r   r   r   r      r   zgrab_uint64_t.<locals>.impl)r   Úuint64r   r   r   r   r   r   Úgrab_uint64_t   s   r&   c           	      C   s0   dd„ }t  t jt jt jt jt jt j¡}||fS )z;Copy nbytes from *(src + src_offset) to *(dst + dst_offset)c                 S   sF   |\}}}}}}	|  ||g¡}
|  ||g¡}t |||
||	¡ |  ¡ S )N)r   r   Ú
raw_memcpyÚget_dummy_value)r   r   r   r   Údst_valÚdst_offset_valÚsrc_valÚsrc_offset_valÚ
nbytes_valÚ	align_valÚsrc_ptrÚdst_ptrr   r   r   Úcodegen'   s   ÿzmemcpy_region.<locals>.codegen)r   Úvoidr   r   )	r    ÚdstÚ
dst_offsetÚsrcÚ
src_offsetÚnbytesÚalignr1   r"   r   r   r   Úmemcpy_region$   s
   ÿr9   N)Ú__doc__Únumba.core.extendingr   Úllvmliter   Ú
numba.corer   r   r#   r&   r9   r   r   r   r   Ú<module>   s    

