
    `i'                        d dl Z d dlmZ d dlZd dlZd dlmZ ddlmZ ddl	m
Z
 dedefd	Zd
eej                 defdZdedeeef         dee         deeej        f         deeeej                 f         ddfdZdeddfdZdS )    N)Any)ValueRanges   )LoopBody)dominated_nodesvalreturnc                    t          | dd          rdS t          | t          j                  r6| j        sJ | j        s| j        rt          |           } nt          |           } t          | t                    r| dk    o| dk    S t          | t                    r4t          j
        t          j                  }| |j        k    o
| |j        k    S t          d|            )N
is_BooleanFTi   i   zUnexpected value )getattr
isinstancesympyExpr	is_number
is_Integerr   intfloattorchiinfoint32maxmin	TypeError)r   r   s     u/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/torch/_inductor/optimize_indexing.pyval_expressable_in_32_bitsr      s    sL%(( t#uz"" }}> 	S^ 	c((CC**C #u 2u~1#/1#s 5EK((ei4C59$44
---
.
..    rangec                 R    t          | j                  ot          | j                  S )N)r   lowerupper)r   s    r   range_expressable_in_32_bitsr!   #   s+    %ek22 7Q8 8 r   nodeboundsindirect_varsindicesreplacement_valsc                     dt           dt          fd}t          | g|          D ]1}|j        dv rt	          |j        t
                    rd|j        v rt          |j        t          d          d                    }||         }|                                D ]\  }	}
||
j	        v r||	         }t          j        |j                  st          j        |j                  r  d S t          t          j                 t          |j                  t          |j                            }t#          |          s  d S t#          ||                   s d S 3t%          | j                  }t(          j        |d<   t-          |          | _        d S )Nr"   r	   c                 x    | j         dk    o/| j        d         t          j        t          j        t          j        fv S )Nto_dtype   )targetargsr   r   float32float64)r"   s    r   skip_filterz,try_to_reduce_precision.<locals>.skip_filter3   s7    {j( 
TYq\KMM>
 .
 	
r   )storeoutputset_indirectr*   )r   boolr   r+   r   strr   lenitemsfree_symbolsmathisinfr   r    r   r   r   r!   listr,   r   r   tuple)r"   r#   r$   r%   r&   r/   	dominatedidxindirect_varindexexpr	index_valindex_val_intr,   s                 r   try_to_reduce_precisionrC   )   s   
# 
$ 
 
 
 
 %dV[99  	222i&,, 	9CS1S1Si&s>':':'<'<=>>C(-L  '}}  t4#444 0 7Iz)/22 dj6Q6Q  %0
$;IO,,c)/.B.B% %M 8FF +F9,=>> 	FF	 	??DkDGdDIIIr   	loop_bodyc                     |                                  fd|                                 D             }|sdS                                 }|D ]$}t          ||| j        | j        j                   %dS )z|
    Performs Value Range Analysis on LoopBody's fx graph to reduce precision of
    intermediaries from int64 to int32
    c                 r    g | ]3}|j         d k    r&|j        d         t          j        k    r|j        v1|4S )r)   r*   )r+   r,   r   int64unbounded_vars).0r"   bvs     r   
<listcomp>z5indexing_dtype_strength_reduction.<locals>.<listcomp>g   sS       K:%%	!++B--- 	
 .--r   N)r#   	get_nodes
get_boundsrC   r$   indexing_exprsr&   )rD   int64_dtype_nodesr#   r"   rJ   s       @r   !indexing_dtype_strength_reductionrP   `   s    
 
				B   ''))    ]]__F " 
 
#$	
 	
 	
 	

 
r   )r8   typingr   r   r   torch.utils._sympy.value_rangesr   rD   r   utilsr   r3   r   r   r!   dictr:   rC   rP    r   r   <module>rV      sT            7 7 7 7 7 7       " " " " " "/C /D / / / /,EJ(? D    4
4cN4 94 #uz/"	4
 3EJ 7784 
4 4 4 4n
 
d 
 
 
 
 
 
r   