 
 M: x86 %zero-vector
     {
-        { double-2-rep [ dup XORPD ] }
+        { double-2-rep [ dup XORPS ] }
         { float-4-rep [ dup XORPS ] }
         [ drop dup PXOR ]
     } case ;

    rep unsign-rep {
        { double-2-rep [
            dst src1 double-2-rep %copy
            dst src2 UNPCKLPD
        ] }
        { longlong-2-rep [
            dst src1 longlong-2-rep %copy

M: x86 %log2    BSR ;

GENERIC: copy-register* ( dst src rep -- )
GENERIC: copy-unaligned* ( dst src rep -- )

M: int-rep copy-register* drop MOV ;
M: tagged-rep copy-register* drop MOV ;
M: float-rep copy-register* drop MOVAPS ;
M: double-rep copy-register* drop MOVAPS ;
M: float-4-rep copy-register* drop MOVAPS ;
M: double-2-rep copy-register* drop MOVAPS ;
M: vector-rep copy-register* drop MOVDQA ;

M: object copy-unaligned* copy-register* ;
M: float-rep copy-unaligned* drop MOVSS ;
M: double-rep copy-unaligned* drop MOVSD ;
M: float-4-rep copy-unaligned* drop MOVUPS ;
M: double-2-rep copy-unaligned* drop MOVUPS ;
M: vector-rep copy-unaligned* drop MOVDQU ;

M: x86 %copy ( dst src rep -- )
    2over eq? [ 3drop ] [
        [ [ dup spill-slot? [ n>> spill@ ] when ] bi@ ] dip
        2over [ register? ] both? [ copy-register* ] [ copy-unaligned* ] if
    ] if ;

M: x86 %fixnum-add ( label dst src1 src2 -- )
