
    wg                     `    d Z ddlmZ ddlmZ ddlmZmZ ed        Zed        Z	ed        Z
y)	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                 t    d }t        j                  t         j                  t         j                        }||fS )Nc                     |\  }}|j                  |t        j                  d      j                               }|j	                  |j                  ||g            }|S )N   bitcastr   IntType
as_pointerloadgepcontextbuilder	signatureargsdataidxptrchs           \/home/mcse/projects/flask/flask-venv/lib/python3.12/site-packages/numba/core/unsafe/bytes.pyimplzgrab_byte.<locals>.impl   sL    	coodBJJqM$<$<$>?\\'++cC512	    )r   uint8voidptrintp	typingctxr   offsetr   sigs        r   	grab_byter#      s+     ++emmUZZ
0C9r   c                 t    d }t        j                  t         j                  t         j                        }||fS )Nc                     |\  }}|j                  |t        j                  d      j                               }|j	                  |j                  ||g            }|S )N@   r
   r   s           r   r   zgrab_uint64_t.<locals>.impl   sL    	coodBJJrN$=$=$?@\\'++cC512	r   )r   uint64r   r   r   s        r   grab_uint64_tr(      s+    
 ,,u}}ejj
1C9r   c                     d }t        j                  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                     |\  }}}}}}	|j                  ||g      }
|j                  ||g      }t        j                  |||
||	       | j                         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_ptrs               r   codegenzmemcpy_region.<locals>.codegen'   sb    	.'>:	++g'78++g'787GWj)L&&((r   )r   voidr   r   )	r    dst
dst_offsetsrc
src_offsetnbytesalignr5   r"   s	            r   memcpy_regionr=   $   sF    ) **U]]EJJuzzZZ-C<r   N)__doc__numba.core.extendingr   llvmliter   
numba.corer   r   r#   r(   r=    r   r   <module>rC      sQ   
 +  % 	 	    r   