
    h#                     0   S SK Jr  S SKJrJr  S SKJrJr  / SQrS r	 " S S5      r
\" SS	9 " S
 S\
5      5       r\" SS	9 " S S\
5      5       r\" SS	9 " S S\
5      5       r " S S5      r\" SS	9 " S S\5      5       r\" SSS9 " S S\5      5       rg)    )	dataclass)ListOptional)_unwrap_if_constexpr_unwrap_shape)BlockedLayoutSliceLayoutDistributedLinearLayoutNVMMASharedLayoutSwizzledSharedLayoutc                     U=(       d    S/U -  nU=(       d    S/U -  nU=(       d    [        [        [        U 5      5      5      nXU4$ )N   )listreversedrange)rankctas_per_cgacta_split_num	cta_orders       e/var/www/fran/franai/venv/lib/python3.13/site-packages/triton/experimental/gluon/language/_layouts.py_realize_cta_layoutr      sE    -A3:L!/aS4ZM8T(5;"78I	11    c                       \ rS rSrSrg)DistributedLayout    N__name__
__module____qualname____firstlineno____static_attributes__r   r   r   r   r          r   r   T)frozenc                      ^  \ rS rSr% \\   \S'   \\   \S'   \\   \S'   \\   \S'   Sr\\\      \S'   Sr	\\\      \S'   Sr
\\\      \S	'   U 4S
 jrS rS\4S jrSrU =r$ )r      size_per_threadthreads_per_warpwarps_per_ctaorderNr   r   r   c                   > [         TU ]  S[        U R                  5      5        [         TU ]  S[        U R                  5      5        [         TU ]  S[        U R
                  5      5        [         TU ]  S[        U R                  5      5        [         TU ]  S[        U R                  5      5        [         TU ]  S[        U R                  5      5        [         TU ]  S[        U R                  5      5        [        U R                  5      n[        U R                  5      U:X  d   e[        U R
                  5      U:X  d   e[        U R                  5      U:X  d   eU R                  b  [        U R                  5      U:X  d   eU R                  b  [        U R                  5      U:X  d   eU R                  b  [        U R                  5      U:X  d   eg g )Nr'   r(   r)   r*   r   r   r   )super__setattr__r   r'   r(   r)   r*   r   r   r   lenselfr   	__class__s     r   __post_init__BlockedLayout.__post_init__#   s   -/CDDXDX/YZ.0DTEZEZ0[\O-A$BTBT-UVG%9$**%EFN,@ARAR,STO-A$BTBT-UVK)=dnn)MN4''(4(()T1114%%&$...4::$&&&  (C0A0A,Bd,JJJ!!)S1C1C-D-LLL~~%T^^)<)DDD)D%r   c           	         [        U R                  5      n[        X R                  U R                  U R
                  5      u  p4nUR                  U R                  U R                  U R                  U R                  UUU5      $ N)
r.   r'   r   r   r   r   get_blocked_layoutr(   r)   r*   r0   builderr   r   r   r   s         r   _to_irBlockedLayout._to_ir4   sx    4''(1DTK\K\^b^p^pEI^^2U.Y))  !!JJ
 	
r   returnc                 4   S nU" U R                   5      nU" U R                  5      nU" U R                  5      nU" U R                  5      nU" U R                  5      nU" U R
                  5      nU" U R                  5      nSU SU SU SU SU SU SU S3$ )Nc                 H    U c  gSR                  [        [        U 5      5      $ N _joinmapstrxs    r   	stringify'BlockedLayout.mangle.<locals>.stringifyD       y88CQK((r   B)r'   r(   r)   r*   r   r   r   )	r0   rG   r'   r(   r)   r*   r   r   r   s	            r   mangleBlockedLayout.mangleB   s    	)
 $D$8$89$T%:%:;!$"4"45$**% !2!23!$"4"45dnn-	?#1%5$6aawaP\~]^_l^mmnoxnyyz{{r   r   )r   r   r    r!   r   int__annotations__r   r   r   r   r2   r9   rD   rK   r"   __classcell__r1   s   @r   r   r      s    #Y3i99(,L(49%,)-M8DI&-%)IxS	")E"
| | |r   r   c                   R   ^  \ rS rSr% \\S'   \\S'   U 4S jrS rS\	4S jr
SrU =r$ )	r	   S   dimparentc                    > [         TU ]  S[        U R                  5      5        [         TU ]  S[        U R                  5      5        g )NrS   rT   )r,   r-   r   rS   rT   )r0   r1   s    r   r2   SliceLayout.__post_init__X   s5    E#7#ABH&:4;;&GHr   c                 l    UR                  U R                  U R                  R                  U5      5      $ r5   )get_slice_layoutrS   rT   r9   r0   r8   s     r   r9   SliceLayout._to_ir\   s.    ''HHKKw'
 	
r   r;   c                 X    SU R                    SU R                  R                  5        S3$ )NSLr@   )rS   rT   rK   r0   s    r   rK   SliceLayout.mangleb   s)    DHH:Qt{{1134B77r   r   )r   r   r    r!   rM   rN   r   r2   r9   rD   rK   r"   rO   rP   s   @r   r	   r	   S   s*    	HI
8 8 8r   r	   c                      ^  \ rS rSr% \\\      \S'   \\\      \S'   \\\      \S'   \\\      \S'   \\   \S'   U 4S jrS rS	 r	S
r
U =r$ )r
   f   	reg_bases
lane_bases
warp_basesblock_basesshapec                   > [         TU ]  S[        U R                  5      5        [         TU ]  S[        U R                  5      5        [         TU ]  S[        U R
                  5      5        [         TU ]  S[        U R                  5      5        [         TU ]  S[        U R                  5      5        [        U R                  5      nU R                   H  n[        U5      U:X  a  M   e   U R                   H  n[        U5      U:X  a  M   e   U R
                   H  n[        U5      U:X  a  M   e   U R                   H  n[        U5      U:X  a  M   e   g )Nra   rb   rc   rd   re   )	r,   r-   r   ra   rb   rc   rd   re   r.   )r0   r   basisr1   s      r   r2   %DistributedLinearLayout.__post_init__n   s   Kt~~)FGL-*HIL-*HIM=9I9I+JKG]4::%>?4::^^Eu:%%% $__Eu:%%% %__Eu:%%% %%%Eu:%%% &r   c                     UR                  U R                  U R                  U R                  U R                  U R
                  5      $ r5   )get_distributed_linear_layoutra   rb   rc   rd   re   rY   s     r   r9   DistributedLinearLayout._to_ir   s<    44T^^T__VZVeVegkgwgw59ZZA 	Ar   c                     SU R                    SU R                   SU R                   SU R                   SU R                   S3$ )NDLLr@   )ra   rb   rc   rd   re   r]   s    r   rK   DistributedLinearLayout.mangle   sI    T^^$Adoo%6a7H$JZJZI[[\]a]g]g\hhkllr   r   )r   r   r    r!   r   rM   rN   r2   r9   rK   r"   rO   rP   s   @r   r
   r
   f   s\    DIT#YT#Yd3i 9&$Am mr   r
   c                       \ rS rSrSrg)SharedLayout   r   Nr   r   r   r   rp   rp      r#   r   rp   c                      ^  \ rS rSr% \\S'   \\S'   \\S'   Sr\\S'   Sr\\S'   Sr	\
\\      \S	'   Sr\
\\      \S
'   Sr\
\\      \S'   U 4S jrS rS\4S jrSrU =r$ )r      swizzle_byte_widthelement_bitwidthr   F
transposed
fp4_paddedNr   r   r   c                   > [         TU ]  S[        U R                  5      5        [         TU ]  S[        U R                  5      5        [         TU ]  S[        U R
                  5      5        [         TU ]  S[        U R                  5      5        [         TU ]  S[        U R                  5      5        [         TU ]  S[        U R                  5      5        [         TU ]  S[        U R                  5      5        [         TU ]  S[        U R                  5      5        U R                  S	;   d   eU R                  S
;   d   eU R
                  nU R                  b  [        U R                  5      U:X  d   eU R                  b  [        U R                  5      U:X  d   eU R                  b  [        U R                  5      U:X  d   eg g )Nrt   ru   r   rv   rw   r   r   r   )          @   )r   r{   r|      )r,   r-   r   rt   ru   r   rv   rw   r   r   r   r.   r/   s     r   r2   NVMMASharedLayout.__post_init__   su   02FtG^G^2_`.0DTEZEZ0[\F$8$CDL*>t*OPL*>t*OPN,@ARAR,STO-A$BTBT-UVK)=dnn)MN$$777&&*::::yy  (C0A0A,Bd,JJJ!!)S1C1C-D-LLL~~%T^^)<)DDD)D%r   c           	          [        U R                  U R                  U R                  U R                  5      u  p#nUR                  U R                  U R                  U R                  U R                  UUU5      $ r5   )
r   r   r   r   r   get_nvmma_shared_layoutrt   ru   rv   rw   )r0   r8   r   r   r   s        r   r9   NVMMASharedLayout._to_ir   sm    1DTYYPTPaPacgcucuEI^^2U.Y..##!!OOOO
 	
r   r;   c           	      p    SU R                    SU R                   SU R                   SU R                   S3	$ )NNVMMA_r@   _NVMMA)rt   ru   rv   rw   r]   s    r   rK   NVMMASharedLayout.mangle   s@    //0$2G2G1H$//IZZ[\`\k\k[llrssr   r   )r   r   r    r!   rM   rN   rv   boolrw   r   r   r   r   r   r2   r9   rD   rK   r"   rO   rP   s   @r   r   r      s    
IJJ(,L(49%,)-M8DI&-%)IxS	")E"
t t tr   r   )r$   eqc                      ^  \ rS rSr% \\S'   \\S'   \\S'   \\   \S'   Sr\\\      \S'   Sr	\\\      \S'   Sr
\\\      \S	'   U 4S
 jrS rS\4S jrSrU =r$ )r      vec	per_phase	max_phaser*   Nr   r   r   c                   > [         TU ]  S[        U R                  5      5        [         TU ]  S[        U R                  5      5        [         TU ]  S[        U R
                  5      5        [         TU ]  S[        U R                  5      5        [         TU ]  S[        U R                  5      5        [         TU ]  S[        U R                  5      5        [         TU ]  S[        U R                  5      5        [        U R                  5      nU R                  b  [        U R                  5      U:X  d   eU R                  b  [        U R                  5      U:X  d   eU R                  b  [        U R                  5      U:X  d   eg g )Nr   r   r   r*   r   r   r   )r,   r-   r   r   r   r   r*   r   r   r   r.   r/   s     r   r2   "SwizzledSharedLayout.__post_init__   s1   E#7#ABK)=dnn)MNK)=dnn)MNG%9$**%EFN,@ARAR,STO-A$BTBT-UVK)=dnn)MN4::  (C0A0A,Bd,JJJ!!)S1C1C-D-LLL~~%T^^)<)DDD)D%r   c           	      <   [        U R                  5      n[        X R                  U R                  U R
                  5      u  p4nUR                  [        U R                  5      [        U R                  5      [        U R                  5      U R                  UUU5      $ r5   )r.   r*   r   r   r   r   get_swizzled_shared_layoutr   r   r   r   r7   s         r   r9   SwizzledSharedLayout._to_ir   s~    4::1DTK\K\^b^p^pEI^^2U.Y11 * 0 0JJ
 	
r   r;   c                     S nSU R                    SU R                   SU R                   SU" U R                  5       SU" U R                  5       SU" U R
                  5       SU" U R                  5       S3$ )Nc                 H    U c  gSR                  [        [        U 5      5      $ r>   rA   rE   s    r   rG   .SwizzledSharedLayout.mangle.<locals>.stringify   rI   r   SSS_r@   _SSS)r   r   r   r*   r   r   r   )r0   rG   s     r   rK   SwizzledSharedLayout.mangle   s    	)
 dhhZq 0$..1A9TZZCXBYYZ[deievev[wZxxy  {D  EI  EW  EW  {X  zY  YZ  [d  ei  es  es  [t  Zu  uy  z  	zr   r   )r   r   r    r!   rM   rN   r   r   r   r   r   r2   r9   rD   rK   r"   rO   rP   s   @r   r   r      st    	HNN9(,L(49%,)-M8DI&-%)IxS	")E
z z zr   r   N)dataclassesr   typingr   r   triton.language.corer   r   __all__r   r   r   r	   r
   rp   r   r   r   r   r   <module>r      s    ! ! D2	 	 $6|% 6| 6|r $8# 8 8$ $m/ m mB	 	 $)t )t )tX $4 ,z< ,z !,zr   