Home | History | Annotate | Download | only in runtime
      1 // Copyright 2013 The Go Authors.  All rights reserved.
      2 // Use of this source code is governed by a BSD-style
      3 // license that can be found in the LICENSE file.
      4 
      5 #include "textflag.h"
      6 
      7 TEXT runtimememmove(SB), NOSPLIT, $0-12
      8 	MOVL	to+0(FP), DI
      9 	MOVL	from+4(FP), SI
     10 	MOVL	n+8(FP), BX
     11 
     12 	CMPL	SI, DI
     13 	JLS back
     14 
     15 forward:
     16 	MOVL	BX, CX
     17 	SHRL	$3, CX
     18 	ANDL	$7, BX
     19 	REP; MOVSQ
     20 	MOVL	BX, CX
     21 	REP; MOVSB
     22 	RET
     23 
     24 back:
     25 	MOVL	SI, CX
     26 	ADDL	BX, CX
     27 	CMPL	CX, DI
     28 	JLS forward
     29 
     30 	ADDL	BX, DI
     31 	ADDL	BX, SI
     32 	STD
     33 
     34 	MOVL	BX, CX
     35 	SHRL	$3, CX
     36 	ANDL	$7, BX
     37 	SUBL	$8, DI
     38 	SUBL	$8, SI
     39 	REP; MOVSQ
     40 	ADDL	$7, DI
     41 	ADDL	$7, SI
     42 	MOVL	BX, CX
     43 	REP; MOVSB
     44 	CLD
     45 
     46 	RET
     47