
    iF)              	      H   d Z ddlmZ ddlmZmZmZmZmZ ddl	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZ ddlmZmZmZmZmZmZ dD ]DZ eeed            eeeged	e
            eeegede
            eeeegede
           EdD ]&Z eeegeded          Z  eeegeded           ' eegede          Z!eefdodZ" e"dd e!          Z# e"d"d#e!          Z$ e"d$d%e!          Z% e"d&d'e!          Z& e"d(d)e!          Z' e"d*d+e!          Z(eefdpd/Z) e)d0d1            e)d2d3            e)d4d5            e)d6d7            e)d8d9            e)d:d;            e)d<d=e>            e)d?d@e>            e)dAdBe>            e)dCdDe>            e)dEdFeeG            e)dHd1            e)dId3            e)dJd5            e)dKd7            e)dLd9            e)dMd;            e)dNd=e>            e)dOd@e>            e)dPdBe>            e)dQdDe>           dqdRZ* e*d2dS          Z+ e*dTdU          Z, eeegedVedWX          Z- eeegedYedWX          Z. eeegedZe          Z/ eeeged[e          Z0 eeeged\e          Z1 eeeged]e          Z2 eeeged^e          Z3 eeeged_e          Z4 eeged`e          Z5 eegedae          Z6 eegedbe          Z7 eegedce          Z8 eg edde          Z9 eg edee          Z: eg edfe          Z; edgegedhe
          Z< eeeegedie          Z= eeeegedje          Z> eeeeegedke          Z? edlegedme
           dnS )ra<  Arbitrary-precision integer primitive ops.

These mostly operate on (usually) unboxed integers that use a tagged pointer
representation (CPyTagged) and correspond to the Python 'int' type.

See also the documentation for mypyc.rtypes.int_rprimitive.

Use mypyc.ir.ops.IntOp for operations on fixed-width/C integers.
    )annotations)
ERR_ALWAYS	ERR_MAGICERR_MAGIC_OVERLAPPING	ERR_NEVERPrimitiveDescription)RTypebit_rprimitivebool_rprimitivebytes_rprimitivec_pyssize_t_rprimitivefloat_rprimitiveint16_rprimitiveint32_rprimitiveint64_rprimitiveint_rprimitiveobject_rprimitivestr_rprimitive
void_rtype)	binary_op	custom_opfunction_opload_address_op	method_opunary_op)zbuiltins.intzmypy_extensions.i64zmypy_extensions.i32zmypy_extensions.i16zmypy_extensions.u8PyLong_Type)nametypesrcCPyTagged_FromFloatr   	arg_typesreturn_typec_function_name
error_kindCPyLong_FromStrCPyLong_FromStrWithBase)zbuiltins.strzbuiltins.reprCPyTagged_Str   )r   r"   r#   r$   r%   priorityCPyBool_Str   CPyTagged_AsciiBytes)r"   r#   r$   r%   opstrprimitive_namer#   r	   r%   intreturnr   c                B    t          | t          t          g|||          S )N)r   r"   r#   r0   r%   r   r   )r.   r0   r#   r%   s       W/root/projects/qq-shell/venv/lib64/python3.11/site-packages/mypyc/primitives/int_ops.pyint_binary_primitiver6   t   s/     !>2%       z==int_eq)r.   r0   r#   z!=int_ne<int_ltz<=int_le>int_gtz>=int_ger   r$   Nonec                F    t          | t          t          g|||           d S )Nr!   r4   )r   r$   r#   r%   s       r5   int_binary_oprB      s9     !>2'     r7   +CPyTagged_Add-CPyTagged_Subtract*CPyTagged_Multiply&CPyTagged_And|CPyTagged_Or^CPyTagged_Xorz//CPyTagged_FloorDivide)r%   %CPyTagged_Remainderz>>CPyTagged_Rshiftz<<CPyTagged_Lshift/CPyTagged_TrueDivide)r#   r%   z+=z-=z*=z&=z|=z^=z//=z%=z>>=z<<=c                H    t          | t          t          |t                    S )N)r   arg_typer#   r$   r%   )r   r   r   )r   r$   s     r5   int_unary_oprX      s(    "'   r7   CPyTagged_Negate~CPyTagged_InvertCPyTagged_IsEq_T)r"   r#   r$   r%   is_pureCPyTagged_IsLt_CPyInt64_DivideCPyInt64_RemainderCPyInt32_DivideCPyInt32_RemainderCPyInt16_DivideCPyInt16_RemainderCPyLong_AsInt64CPyTagged_FromSsize_tCPyTagged_FromInt64CPyLong_AsInt32CPyInt32_OverflowCPyInt16_OverflowCPyUInt8_Overflowzbuiltints.isinstancePyLong_CheckCPyTagged_ToBigEndianBytesCPyTagged_ToLittleEndianBytesCPyTagged_ToBytes
bit_lengthCPyTagged_BitLengthN)
r.   r/   r0   r/   r#   r	   r%   r1   r2   r   )
r   r/   r$   r/   r#   r	   r%   r1   r2   r@   )r   r/   r$   r/   r2   r   )@__doc__
__future__r   mypyc.ir.opsr   r   r   r   r   mypyc.ir.rtypesr	   r
   r   r   r   r   r   r   r   r   r   r   r   mypyc.primitives.registryr   r   r   r   r   r   int_namer   int_to_str_opint_to_ascii_opr6   r8   r9   r;   r<   r>   r?   rB   rX   
int_neg_opint_invert_op
int_equal_int_less_than_int64_divide_opint64_mod_opint32_divide_opint32_mod_opint16_divide_opint16_mod_opint_to_int64_opssize_t_to_int_opint64_to_int_opint_to_int32_opint32_overflowint16_overflowuint8_overflowisinstance_intint_to_big_endian_opint_to_little_endian_opint_to_bytes_op r7   r5   <module>r      s    # " " " " "                                                          ( (H O(9}MMMM K#$"-    K!"%)    K!>2%1     .  DK!""'  M K"#"%     ) *	   8FYb	 	 	 	 	 
	hN	[	[	[		hN	[	[	[		X>	Z	Z	Z		hN	[	[	[		X>	Z	Z	Z		hN	[	[	[ (	    $ c? # # # c' ( ( ( c' ( ( ( c? # # # c> " " " c? # # # d+	 B B B B c(Y ? ? ? ? d&9 = = = = d&9 = = = = 	-=J_    dO $ $ $ d( ) ) ) d( ) ) ) dO $ $ $ dN # # # dO $ $ $ e, C C C C d)i @ @ @ @ e'I > > > > e'I > > > >    \#122
S"455 Y~.%  
 ~.%   )!12 %$	   y!12 ($	   )!12 %$	   y!12 ($	   )!12 %$	   y!12 ($	   ) ! %$	   I%&+	    ) )	   ) ! %$	   '	   '	   '	   	 !"   !y5G 0	    $)5G 3	    )5~W '	   
		)     r7   