+
    "Ý³j/  ã                   óP   € ^ RI t ^ RIHt R R lt ! R R] P                  4      tR# )é    N)Útree_mapc                ó<   € V ^8„  d   QhR\         R\         R\         /# )é   ÚsizeÚalignment_valueÚreturn)Úint)Úformats   "Ú_/home/luca/screen-checking/.venv/lib/python3.14/site-packages/torchao/swizzle/swizzle_tensor.pyÚ__annotate__r      s&   € ÷ Cñ CœSð C´3ð C¼3ñ Có    c                 ó>   € ^V ^,
          V,          ,           V,          # ©é   © )r   r   s   &&r   Ú_get_min_alignmentr      s   € Ø�$˜•(˜Õ.Õ/°?ÕBÐBr   c                   ó²   a € ] tR t^t o RtRV 3R lR lltRR ltR tR tR t	R t
]R	 4       tR
 t]RR l4       t]P"                  P$                  tRtV tR# )ÚSwizzleTensorz”
A Python-only swizzled tensor subclass.

Intended usage of this abstraction:
Swizzle weight Tensor to avoid LDS use during GEMMs on ROCm hardware.
c                ó:   <€ V ^8„  d   QhRS[ P                  RS[/# )r   ÚoriginalÚshallow)ÚtorchÚTensorÚbool)r
   Ú__classdict__s   "€r   r   ÚSwizzleTensor.__annotate__   s#   ø€ ÷ 9ñ 9á—,‘,ð9ñ ñ9r   c                óp   € \         P                  ! VR R7      p\         P                  P                  W4      # )Úmeta)Údevice)r   Ú
empty_liker   Ú_make_subclass)Úclsr   r   Úwrappers   &&& r   Ú__new__ÚSwizzleTensor.__new__   s+   € ô
 ×"Ò" 8°FÔ;ˆÜ�|‰|×*Ñ*¨3Ó8Ð8r   c                óì  € V'       d   R # VP                   ^8X  g   Q R4       hVP                  ^8X  g   VP                  ^8X  g   Q hVP                  ^8X  d   ^ M^@pVP                  ^8X  d   ^M^pVP                   ^8X  d   VP                  w  rV^ pVP                   ^8X  d   VP                  w  rup\        X^4      p\        XV4      p	W…,
          p
W–,
          p\        P
                  P                  P                  V^ V^ V
3R^ 4      pVP                   ^8X  d8   VP                  V^,          ^W“,          ^V4      pVP                  ^ ^^^^4      pVP                   ^8X  d:   VP                  XV^,          ^W“,          ^V4      pVP                  ^ ^^^^^4      pVP                  4       V n        XV n        WPn        W`n        W€n        W�n        W n        W°n        VP                   V n        RV n        R # )Nz"SwizzleTensor only supports ndim 2ÚconstantF)ÚndimÚitemsizeÚshaper   r   ÚnnÚ
functionalÚpadÚviewÚpermuteÚ
contiguousÚxÚBÚMÚKÚalignedMÚalignedKÚpaddedMÚpaddedKÚoriginal_ndimÚis_transposed)Úselfr   r   ÚkdivÚlastdimr3   r4   r2   r5   r6   r7   r8   r1   s   &&&          r   Ú__init__ÚSwizzleTensor.__init__    s¶  € ßÙà�}‰} Ô!ÐGÐ#GÓGÐ!Ø× Ñ  AÔ%¨×):Ñ):¸aÔ)?Ð?Ð?Ø×&Ñ&¨!Ô+‰r°ˆØ×(Ñ(¨AÔ-‘!°2ˆØ�=‰=˜AÔØ—>‘>‰DˆAØˆAØ�=‰=˜AÔØ—n‘n‰GˆA�!Ü% a¨Ó,ˆÜ% a¨Ó.ˆØ•,ˆØ•,ˆÜ�H‰H×Ñ×#Ñ# H¨q°'¸1¸gÐ.FÈ
ÐTUÓVˆØ�=‰=˜AÔØ—‘�x 2•~ r¨8Õ+;¸QÀÓHˆAØ—	‘	˜!˜Q  1 aÓ(ˆAØ�=‰=˜AÔØ—‘�q˜( b�.¨"¨hÕ.>ÀÀ7ÓKˆAØ—	‘	˜!˜Q  1 a¨Ó+ˆAØ—‘“ˆŒØˆŒØŒØŒØ ŒØ ŒØŒØŒØ%Ÿ]™]ˆÔØ"ˆÖr   c                óV   € V P                   P                   R V P                  4        R2# )z
(original=Ú))Ú	__class__Ú__name__Ú	unswizzle©r;   s   &r   Ú__repr__ÚSwizzleTensor.__repr__C   s(   € Ø—.‘.×)Ñ)Ð*¨*°T·^±^Ó5EÐ4FÀaÐHÐHr   c                óB  € R pV P                   ^8X  d»   V P                  P                  ^ ^^^^4      P                  4       pVP	                  V P
                  V P                  4      pV^ V P                  1^ V P                  13,          pVP	                  V P                  V P                  4      pV P                  '       d   VP                  pV P                   ^8X  dÁ   V P                  P                  ^ ^^^^^4      P                  4       pVP	                  V P                  V P
                  V P                  4      pV^ V P                  1^ V P                  1^ V P                  13,          pVP	                  V P                  V P                  V P                  4      pV# ©N)r9   r1   r/   r0   Úreshaper5   r6   r3   r4   r:   ÚTr2   )r;   Úundones   & r   rD   ÚSwizzleTensor.unswizzleF   s9  € ØˆØ×Ñ Ô"Ø—V‘V—^‘^ A q¨!¨Q°Ó2×=Ñ=Ó?ˆFØ—^‘^ D§M¡M°4·=±=ÓAˆFØ˜A §¡˜J¨¨D¯F©F¨
Ð2Õ3ˆFØ—^‘^ D§F¡F¨D¯F©FÓ3ˆFØ×!×!Ð!ØŸ™�Ø×Ñ Ô"Ø—V‘V—^‘^ A q¨!¨Q°°1Ó5×@Ñ@ÓBˆFØ—^‘^ D§F¡F¨D¯M©M¸4¿=¹=ÓIˆFØ˜A §¡˜J¨¨D¯F©F¨
°A¸¿¹°JÐ>Õ?ˆFØ—^‘^ D§F¡F¨D¯F©F°D·F±FÓ;ˆFØˆr   c                ó   € V P                   ^8X  dQ   V P                  P                  V P                  V P                  4      pV P
                  '       d   VP                  pV# V P                   ^8X  d\   V P                  P                  V P                  V P                  V P                  4      pV P
                  '       d   VP                  pV# R# )r   N)r9   r1   rJ   r5   r6   r:   rK   r2   )r;   Útmps   & r   Ú	as_tensorÚSwizzleTensor.as_tensorV   s•   € à×Ñ Ô"Ø—&‘&—.‘. §¡°·±Ó>ˆCØ×!×!Ð!Ø—e‘e�ØˆJØ×Ñ Ô"Ø—&‘&—.‘. §¡¨¯©¸¿¹ÓFˆCØ×!×!Ð!Ø—e‘e�ØˆJñ	 #r   c                ón  € V P                   ^8X  d   V P                  V P                  3M"V P                  V P                  V P                  33p\	        \
        P                  ! VRV P                  RV P                  RR/ R4      pV P                  Vn	        V P                  Vn        V P                  Vn        V P                  Vn        V P                  Vn
        V P                  Vn        V P                  Vn        V P                  Vn        V P                   Vn         V P                  '       * Vn        V# )r   ÚdtypeÚlayoutr   r   T)r9   r3   r4   r2   r   r   ÚemptyrS   rT   r1   r5   r6   r7   r8   r:   )r;   r*   Únew_objs   &  r   Úshallow_transposeÚSwizzleTensor.shallow_transposec   sí   € à $× 2Ñ 2°aÔ 7ˆT�V‰V�T—V‘VÑ¸d¿f¹fÀdÇfÁfÈdÏfÉfÐ=Uð
ˆô  Ü�KŠK˜ÐT d§j¡jÐT¸¿¹ÐTÈVÑTØó
ˆð —F‘FˆŒ	Ø—F‘FˆŒ	Ø—F‘FˆŒ	Ø—F‘FˆŒ	ØŸ=™=ˆÔØŸ=™=ˆÔØŸ,™,ˆŒØŸ,™,ˆŒØ $× 2Ñ 2ˆÔØ$(×$6Ñ$6Ô 6ˆÔØˆr   c                ó¶   € \         P                  ! V P                  '       d   V P                  V P                  34      # V P                  V P                  34      # rI   )r   ÚSizer:   r4   r3   rE   s   &r   r*   ÚSwizzleTensor.shapew   s>   € ä�zŠz¨d×.@×.@Ð.@˜4Ÿ6™6 4§6¡6Ð*ÓWÐWÀtÇvÁvÈtÏvÉvÐFVÓWÐWr   c                ó^   € V P                   '       d   ^V P                  3# V P                  ^3# r   )r:   r4   rE   s   &r   ÚstrideÚSwizzleTensor.stride{   s(   € Ø"×0×0Ð0��4—6‘6ˆ{ÐA°t·v±v¸q°kÐAr   Nc                óŠ   € ^ RI Hp W9   d   WQ,          ! WV4      # R pR p\        Wq! \        Wc4      / \        Wd4      B 4      # )r   )ÚSWIZZLE_OPS_TABLEc                 óR   € \        V \        4      '       d   V P                  4       # T # rI   )Ú
isinstancer   rD   ©Úes   &r   ÚunwrapÚ0SwizzleTensor.__torch_dispatch__.<locals>.unwrap†   s   € Ü$.¨q´-×$@Ò$@�1—;‘;“=ÐGÀaÐGr   c                 ó\   € \        V \        P                  4      '       d   \        V 4      # T # rI   )rb   r   r   r   rc   s   &r   ÚwrapÚ.SwizzleTensor.__torch_dispatch__.<locals>.wrap‰   s"   € Ü'1°!´U·\±\×'BÒ'B”= Ó#ÐIÈÐIr   )Útorchao.swizzle.swizzle_opsr`   r   )r"   ÚfuncÚtypesÚargsÚkwargsr`   re   rh   s   &&&&&   r   Ú__torch_dispatch__Ú SwizzleTensor.__torch_dispatch__~   sM   € õ 	BàÔ$Ø$Ö*¨4°vÓ>Ð>ò	Hò	Jô ˜˜d¤H¨VÓ$:ÐW¼hÀvÓ>VÑWÓXÐXr   )
r2   r4   r3   r6   r5   r:   r9   r8   r7   r1   )FrI   )rC   Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r$   r>   rF   rD   rP   rW   Úpropertyr*   r]   Úclassmethodro   r   Ú_CÚ_disabled_torch_function_implÚ__torch_function__Ú__static_attributes__Ú__classdictcell__)r   s   @r   r   r      ss   ø‡ € ñ÷9ò 9ô!#òFIòò òð( ñXó ðXòBð óYó ðYð  Ÿ™×?Ñ?Ör   r   )r   Útorch.utils._pytreer   r   r   r   r   r   r   Ú<module>r}      s'   ðó Ý (õCô@�E—L‘Lö @r   