o
    h                     @   s   d dl Z d dlZd dlZd dlZd dlZedZedZedZedZ	dd Z
dd	 Ze  dd
dZdd Zdd ZdS )    Nz1\s*/\*\w{4}\*/\s*([^;]*;)\s*/\* 0x(\w{16}) \*/\s*z\s*/\* 0x(\w{16}) \*/\s*z\s*Function : (\w+)\s*z(.*BRA(?:\.U)? )(0x\w+);c              
   C   s   t t| dd}|d? d@ }|d? d@ }|d? d@ }|d? d@ }|d	? d
@ }|dkr/dnd}|dkr7dnt|}|dkrAdnt|}	|dkrKdn|d}
|
 d|	 d| d| d|d	S )N      )      -   .      1   4   ?   r   Y-z--02d:x)intSLINE_REmatchgroupstr)slineencstallyldwrtdbreadbwatdbyld_str	wrtdb_str	readb_str	watdb_str r!   N/var/www/html/scripts/venv/lib/python3.10/site-packages/triton/tools/disasm.py	parseCtrl#   s   "r#   c                 C   sx   t | d}|dr|d d d }t|}t|d ur6tt|dd}||v r0nt|||< | | fS )Nr   z ;;   r   )FLINE_REr   r   endswithr#   BRA_REr   len)fliner   labelsasmctrltargetr!   r!   r"   processSassLines2   s   
r0   c              	   C   sh   t  \}}z't|d}||  W d    n1 sw   Y  t||}W t| |S t| w )Nwb)tempfilemkstempopenwriteextractosremove)	cubin_asmfunfdpathcubinsassr!   r!   r"   get_sassB   s   
r?   c                  C   s   ddl m}  | jjjS )Nr   knobs)tritonrA   nvidia	cuobjdumpr<   r@   r!   r!   r"   path_to_cuobjdumpN   s   
rE   c                 C   s  t  }|d u rt|d| g}n
t|d|d| g}| }d}|t|k r||  }t|d u rM|d7 }|t|k rD||  }nd S t|d u s3t|d}d}|d| d7 }|d7 }||  }i }	g }
t	|d ur||  }|d7 }||  }|d7 }|

t|||	 ||  }t	|d ustt|
D ]I\}\}}|d	 }||	v rd
|	|  }|| d7 }||d 7 }t|rtt|dd	}d
|	|  }td| d|}||d 7 }q|d7 }|S d S )Nz-sassz-funr   r    z	Function:
r&   r   LBBz:
	z\1r%   )rE   
subprocesscheck_output
splitlinesr*   decodeFNAME_REr   r   r'   appendr0   	enumerater)   r   sub)	file_pathr:   rD   sass_str
sass_linesline_idxlinefnameretr,   
asm_bufferr+   r   idxr.   r-   offset
label_namer/   target_namer!   r!   r"   r6   S   sV   
r6   )N)	functoolsr7   rerJ   r2   compiler'   r   rN   r)   r#   r0   	lru_cacher?   rE   r6   r!   r!   r!   r"   <module>   s   



