
    h                     b   % S SK JrJr  S SKrS SKrS SKJr  \R                  R                  r	0 r
\\\4   \S'   S r\" \	R                  R                  \	R                  R                  /5      SS j5       r\" \	R"                  R                  /5      SS j5       r\" \	R&                  R                  /5      SS j5       r\" \	R*                  R                  /5      SS	 j5       r\" \	R.                  R                  /5      SS
 j5       r\" \	R2                  R                  /5      SS j5       rg)    )AnyDictN)SwizzleTensorSWIZZLE_OPS_TABLEc                    ^  U 4S jnU$ )z)Register aten ops to the swizzle op tablec                 ,   > T H  nU [         U'   M     U $ N)r   )funcopaten_opss     U/home/james-whalen/.local/lib/python3.13/site-packages/torchao/swizzle/swizzle_ops.py	decoratorimplements.<locals>.decorator   s    B$(b!      )r   r   s   ` r   
implementsr      s    
 r   c                 \   US   nUS   n[         R                  " U5      (       a  [         R                  " U5      (       a  UR                  S:X  a  UR                  S:X  at  SnSn[        U[        5      (       a  UR                  5       nSn[        U[        5      (       a  UR                  5       nSn[        R                  R                  X4XV5      nU$ [        U[        5      (       a  UR                  5       OUn[        U[        5      (       a  UR                  5       OUnU " X440 UD6nU$ )Nr         FT)
torchis_floating_pointndim
isinstancer   	as_tensortorchaoops
swizzle_mm	unswizzle)aten_opargskwargsaba_is_swizzledb_is_swizzled
tensor_outs           r   r   r      s    QAQA 	""##A&&FFaKFFaKa''A Ma''A M[[++A-O

  (=99AKKMq'=99AKKMqQ,V,
r   c                     US   nUS   n[        U[        5      (       a  UR                  5       OUn[        U[        5      (       a  UR                  5       OUnU " X440 UD6$ )Nr   r   r   r   r   )r   r    r!   r"   r#   s        r   swizzle_bmmr)   7   sV    QAQA#A}551A#A}551A1"6""r   c                     US   nUS   nUS   n[        U[        5      (       a  UR                  5       OUn[        U[        5      (       a  UR                  5       OUnU " X4XQSS  40 UD6$ )Nr   r   r      r(   )r   r    r!   biasr"   r#   s         r   swizzle_addmmr-   A   sg    7DQAQA#A}551A#A}551A4AABx2622r   c                    US   nUS   nUS   nUS   n[        U5      S::  a  S OUS   n[        U5      S::  a  S OUS   n[        U5      S::  a  S OUS   n	Sn
Sn[        U[        5      (       a  UR                  5       nS	n
[        U[        5      (       a  UR                  5       nS	n[        R
                  R                  " UUU
UUUUUU	4	0 UD6$ )
Nr   r   r   r+            FT)lenr   r   r   r   r   swizzle_scaled_mm)r   r    r!   r"   r#   scale_ascale_br,   scale_result	out_dtyper$   r%   s               r   r3   r3   K   s    QAQA1gG1gGt9>4tAwDt9>4tAwLD	QDGIMM!]##KKM!]##KKM;;((		  r   c                     US   nUS   n[        U5      S:X  a"  US   S:X  a  US   S:X  a  UR                  5       $ U " UR                  5       U5      $ )Nr   r   r   )r2   shallow_transposer   )r   r    r!   tensordimss        r   swizzle_permuter<   k   sX    !WF7D
4yA~$q'Q,47a<''))6##%t,,r   c                 ,    US   nUR                  5       $ )Nr   )r9   )r   r    r!   r:   s       r   swizzle_numpy_Tr>   t   s    !WF##%%r   r	   )typingr   r   r   torchao.opsr   torchao.swizzle.swizzle_tensorr   r   atenr   __annotations__r   mmdefaultmatmulr   bmmr)   addmmr-   
_scaled_mmr3   permuter<   numpy_Tr>   r   r   r   <module>rL      s)       8yy~~$& 4S> & TWW__dkk1123 44 TXX#  # TZZ !3 "3 T__$$%& '> T\\!!"#- $- T\\!!"#& $&r   