
    ΅iT                     $    S SK r S rS r SS jrg)    Nc                 v   U R                  5       S:w  a  [        SU R                  5        S35      eU R                  S   S-  S:w  a  [        SU R                  S    35      eU R                  [        R
                  :w  a  [        SU R                   35      eU S S 2SS S24   S-  S	-  U S S 2SS S24   S-  -  $ )
N   weight must be 2D, got D   r   z"weight.shape[1] must be even, got weight.dtype must be int8, got       )dimAssertionErrorshapedtypetorchint8weights    c/home/james-whalen/.local/lib/python3.13/site-packages/torch/quantization/_quantized_conversions.pypack_int4_to_int8r      s    zz|q6vzz|nAFGG||AaA&,,q/ARSTT||uzz!>v||nMNNAqt!tG_s"q(VAqt!tG_s-BCC    c                 j   U R                  5       S:w  a  [        SU R                  5        S35      eU R                  [        R                  :w  a  [        SU R                   35      e[        R
                  " U S-  U S-	  S-  4SS9R                  U R                  S   SU R                  S	   -  5      $ )
Nr   r   r   r   r	   r
   )r   r   r   )r   r   r   r   r   stackviewr   r   s    r   unpack_int8_to_int4r      s    zz|q6vzz|nAFGG||uzz!>v||nMNN;;v{c&9:BGGQV\\!_, r   c                    U R                  5       S:w  a  [        SU R                  5        S35      eU R                  [        R                  :w  a  [        SU R                   35      eU[        R                  :w  a"  U[        R
                  :w  a  [        SU 35      eU R                  R                  S:w  a"  [        SU R                  R                   35      eU R                  nU(       dq  U[        R                  :X  a  U R                  nORU[        R
                  :X  a;  [        [        U R                  [        R                  5      5      R                  5      nOU nWR                  u  pVU[        R
                  :X  a  SOS	nXg-  S
:w  a  [        SU SU 35      eUS	-  S
:w  a  [        SU 35      eU[        R
                  :X  ag  [        R                  " / SQUS9[        R                  " S
US-  US9R                  SS5      S-  R!                  US-  S5      -   R                  S5      nOf[        R                  " / SQUS9[        R                  " S
US-  US9R                  SS5      S-  R!                  US-  S5      -   R                  S5      nUR#                  SX5      nU[        R
                  :X  a  SOSn	SU	-  n
[        R                  " S
XY-  US9US-  U	-  -  R                  SS5      R%                  SUS-  U	-  5      R                  S5      n[        R                  " S
US-  U
-  US9X-  -  R                  SS5      R%                  SU
5      R                  S5      R%                  U5      n[        R                  " S
XS9U
-  R                  SS5      R%                  SUS-  5      R                  S5      R%                  XY-  5      n[        R                  " S
XS9R%                  US-  U-  U
-  5      nX-   U-   U-   nUR                  S5      R                  [        R&                  5      n[        R(                  " U5      nUR+                  S
UU5        UR                  U R                  5      nUR                  S5      n[        R,                  " U5      nU[        R                  :X  at  UR/                  [        R0                  5      S-   R/                  UR                  5      nUS
S S2   US
S S2'   USS S2   USS S2'   USS S2   USS S2'   USS S2   USS S2'   OU[        R
                  :X  ay  US-  S-   S-  nUSS S2   S-  US
S S2   -  nUS-	  S-  S-   S-  nUSS S2   S-  US
S S2   -  nUS
S S2   US
S S2'   USS S2   USS S2'   US
S S2   USS S2'   USS S2   USS S2'   U[        R
                  :X  a
  US-  nUS-  nUR                  Xe5      R                  [        R2                  5      $ )Nr   r   r   r   z%dtypeq must be int8 or quint4x2, got cudazweight must be on CUDA, got     @   r   znrows must be divisible by z, got z#ncols must be divisible by 64, got )r   r
         r      	      r      
               r	   )device   r   )r   r   r
   r    r   r!   r   r"   r   r&   r#   r'   r$   r(   r%   r	   r
      r&   r	   r   )r   r   r   r   r   quint4x2r)   typeTr   r   r   r   tensorarangereshapeexpand
index_copyrepeatint32
zeros_likescatter_
empty_liketointuint8)r   dtypeq	transposer)   outpncolsnrowsdivisorcols_permutedmagic0magic1tmp0tmp1tmp2tmp3outp_offsetstmps                    r   8quantized_weight_reorder_for_mixed_dtypes_linear_cutlassrL   "   s    zz|q6vzz|nAFGG||uzz!>v||nMNN%.. 8DVHMNN}}V#;FMM<N<N;OPQQ]]F UZZ88Du~~%$%8UZZ9P%Q%S%STD::LEenn,b"G!:7)6%QRRrzQB5'JKK LLF ||Au{6:BB2qIBNVVR	 $r( 	 LLF ||Au{6:BB2qIBNVVR	 $r( 	 ??1m2D ENN*QF6\F 
a	8EQJ<O	P	b!	5A:&	'	b	 	 
a!v-f	=	Q	b!	6		b	 	 
a	/&	8	b!	5A:		b		  	 <<6188!e9Kv9UVD;%,L
))B-

U[[
)CC DMM!\3'99V\\"D ))B-CC Dvveii 3&**3995AYQTT
AYQTT
AYQTT
AYQTT
	5>>	!sa3&QTT
a41:-(c!Q&#-QTT
a41:-!$Q$ZQTT
!$Q$ZQTT
!$Q$ZQTT
!$Q$ZQTT

!99U"''44r   )F)r   r   r   rL    r   r   <module>rN      s    D $p5r   