
    Upf                         d dl Z d dlmZ d dlmZ ddlT ddlmZmZ ddl	m
Z
mZ dd	lmZmZmZmZmZ d
 Zd Zd ZeZdddddededededee         f
dZdS )    N)
accumulate)Optional   )*)_dispatch_mixed_valuesMixedValues)
ConstantOp_is_integer_like_type   )Value
MemRefTypeStridedLayoutAttr
ShapedType	Operationc                     t          | t                    oLt          | j        t                    o2t          | j        j        t
                    ot          | j                  S N)
isinstancer   ownerr   opviewr	   r
   typeis    [/var/www/html/nettyfy-visnx/env/lib/python3.11/site-packages/jaxlib/mlir/dialects/memref.py_is_constant_int_liker      sR    1e 	*qw	**	*qw~z22	* "!&))	    c                 t    t          | t                    ot          j        |            pt	          |           S r   )r   intr   is_dynamic_sizer   r   s    r   _is_static_int_liker      s7    1c@:#=a#@#@@"	q	!	!"r   c           	      `   |                                  \  }}t          t          ||||f          \  }}}}t          d |||fD                       st	          d          |||fD ]:}t          |          D ](\  }}t          |          r|j        j        j	        ||<   );t          d ||gz   D                       rt          j                    }	n |}	t          ||          D ]\  }
}|	|
|z  z  }	g }t          ||          D ]\  }}|                    ||z             t          t          |dd          d d d         t           j                            d d d         dgz   }||k    r	|	dk    rd }nt%          j        |	|          }|||t)          j        || j        || j                  fS )Nc              3   H   K   | ]}t          d  |D                       V  dS )c              3   4   K   | ]}t          |          V  d S r   r   .0r   s     r   	<genexpr>z>_infer_memref_subview_result_type.<locals>.<genexpr>.<genexpr>'   +      ..q""......r   Nallr%   ss     r   r&   z4_infer_memref_subview_result_type.<locals>.<genexpr>&   sM         	..A.....     r   zAOnly inferring from python or mlir integer constant is supported.c              3   6   K   | ]}t          |           V  d S r   r#   r$   s     r   r&   z4_infer_memref_subview_result_type.<locals>.<genexpr>7   s.      
I
I!"1%%%
I
I
I
I
I
Ir   r   r   )get_strides_and_offsetmaplistr)   
ValueError	enumerater   r   r   literal_valueanyr   get_dynamic_sizezipappendr   operatormulr   getr   element_typememory_space)source_memref_typeoffsetsstatic_sizesstatic_stridessource_stridessource_offsetr+   idxr   target_offsetoffsettarget_stridetarget_stridessource_stridestatic_stridedefault_strideslayouts                    r   !_infer_memref_subview_result_typerL      s;    %7$M$M$O$O!NM<?wnnE= =9G\>>    
     

 O
 
 	
 |^4 6 6ll 	6 	6FC$Q'' 65#	6 
I
Iw-/H
I
I
III 4"355%%(.%A%A 	4 	4!FMVm33MMN(+NN(K(K = =$}mm;<<<< :l122&6ttt&<hlKKLLTTrTRVWUXXO((]a-?-?"&}nEE++		
 	
	
 
r   )result_typelocipsourcer>   sizesstridesrM   c                   |g }|g }|g }| j                                         \  }}|9t          d |||fD                       rt          | j         |||          \  }}}}n|t	          d          t          |          \  }}	}
t          |          \  }}}t          |          \  }}}t          || ||||
||||
  
        S )Nc              3   H   K   | ]}t          d  |D                       V  dS )c              3   4   K   | ]}t          |          V  d S r   r#   r$   s     r   r&   z$subview.<locals>.<genexpr>.<genexpr>j   r'   r   Nr(   r*   s     r   r&   zsubview.<locals>.<genexpr>i   sJ       # #34..A.....# # # # # #r   zHmixed static/dynamic offset/sizes/strides requires explicit result type.)rN   rO   )r   r.   r)   rL   r1   r   _generated_subview)rP   r>   rQ   rR   rM   rN   rO   rA   rB   _packed_offsetsstatic_offsets_packed_sizesr?   _packed_stridesr@   s                  r   subviewr[   X   s)    }$*K$F$F$H$H!NMs # #9>8X# # #     .fk7E7SS	
K		V
 
 	
 0Fg/N/N,G_n)?)F)F&E=,/Eg/N/N,G_n   r   )r8   	itertoolsr   typingr   _memref_ops_gen_ods_commonr   r   arithr	   r
   irr   r   r   r   r   r   r   rL   r[   rV    r   r   <module>rc      s6                          < < < < < < < < 4 4 4 4 4 4 4 4 L L L L L L L L L L L L L L  " " "5 5 5p   )-0 0 000 0 	0 *%0 0 0 0 0 0r   