
    uki              	       H   d dl  d dl mZ d dl ddlmZ ddlmZ 	 ddl d dlm	Z
mZmZ ddlmZmZmZ dedefdZdedee   fdZdefdZdefdZ ej6                  ed       G d de             Zd
d
ddedeeeeef   de fdZ!y
# e$ rZ ed	      ed
Z[ww xY w)   )*)_Dialect    )array)overload   )get_default_loc_context_cextget_op_result_or_op_results)AnyListUnionz+Error loading imports from extension moduleNobjclsc                 4    	  ||        y# t         $ r Y yw xY w)NFT)
ValueError)r   r   s     U/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/jaxlib/mlir/dialects/arith.py_isar      s'    C   s    	classesc                 ,     t         fd|D              S )Nc              3   6   K   | ]  }t        |        y wN)r   ).0r   r   s     r   	<genexpr>z_is_any_of.<locals>.<genexpr>!   s     1#tC~1s   )any)r   r   s   ` r   
_is_any_ofr       s    1111    typec                 .    t        | t        t        g      S r   )r   IntegerType	IndexTyper   s    r   _is_integer_like_typer#   $   s    d[)455r   c                 B    t        | t        t        t        t        g      S r   )r   BF16TypeF16TypeF32TypeF64Typer"   s    r   _is_float_typer)   (   s    dXwABBr   T)replacec            	            e Zd ZdZeddddefd       Zeddddedee	e
ef   fd       Zddd fd
Zedddde	fd	       Zed
        Zed        Zedee	e
f   fd       Z xZS )
ConstantOpz)Specialization for the constant op class.Nlocipvaluec                     y r    )selfr0   r.   r/   s       r   __init__zConstantOp.__init__0   s    r   resultc                     y r   r2   )r3   r5   r0   r.   r/   s        r   r4   zConstantOp.__init__4   s     	r   c                $   |%t        |t              sJ t        |   |||       y t        |t              r't        |   t
        j                  ||      ||       y t        |t              r't        |   t        j                  ||      ||       y t        |t              rd|j                  z  |j                  j                  k7  r3t        dd|j                  z   d|j                  j                   d      |j                  dv r%t        |   t        j                  ||             y |j                  dv r%t        |   t         j                  ||             y t        d	|j                   d
      t        |   |||       y )Nr-      zMismatching array element (z) and type (z) width.)ilqr"   )fdzUnsupported typecode: "z".)
isinstance	Attributesuperr4   intIntegerAttrgetfloat	FloatAttr_arrayitemsizeelement_typewidthr   typecodeDenseIntElementsAttrDenseFPElementsAttr)r3   r5   r0   r.   r/   	__class__s        r   r4   zConstantOp.__init__:   sd   =fi000GV4eS!G[__VU;Lu%GY]]659srJv&5>>!V%8%8%>%>> 1!enn2D1E\RXReReRkRkQlltu  ~~0 !5!9!9%f!9!MN:- !4!8!8V!8!LM #:5>>:J"!MNNGU3r   c                T     | t         j                  t        |            |||      S )zCreate an index-typed constant.)contextr-   )r!   rC   _get_default_loc_context)r   r0   r.   r/   s       r   create_indexzConstantOp.create_indexR   s,     MM":3"?M@%SUW
 	
r   c                 4    | j                   d   j                  S )Nr   )resultsr   r3   s    r   r   zConstantOp.typeY   s    ||A###r   c                 4    | j                   j                  d   S )Nr0   )	operation
attributesrT   s    r   r0   zConstantOp.value]   s    ~~((11r   returnc                     t        | j                        rt        | j                        j                  S t	        | j                        rt        | j                        j                  S t        d      )Nz4only integer and float constants have literal values)r#   r   rB   r0   r)   rE   r   rT   s    r   literal_valuezConstantOp.literal_valuea   sP     +tzz*000DII&TZZ(...STTr   )__name__
__module____qualname____doc__r   r?   r4   Typer   rA   rD   rF   classmethodrQ   propertyr   r0   rZ   __classcell__)rM   s   @r   r,   r,   ,   s    304 i   EId#(eV);#< 
 .2d 40 -1d 
 
 
 $ $ 2 2 UuS%Z0 U Ur   r,   r-   r5   r0   rX   c                2    t        t        | |||            S )Nr-   )_get_op_result_or_op_resultsr,   )r5   r0   r.   r/   s       r   constantre   k   s     (
65cb(QRRr   )"_arith_ops_genr   _arith_enum_genr   rF   typingr   ir_ods_commonr	   rP   r
   	_ods_cextr   rd   r   r   r   ImportErroreRuntimeErrorr   r   r   r_   r#   r)   register_operationr,   rA   rD   r?   Valuere   r2   r   r   <module>rq      s   
  $  ! 
M  ('
c  2C 2$t* 26 6C C h5;U ;U 6;U~ GKtSSsE9f<=S
So  M
D
E1LMs   B B!	BB!