root/src/pkg/runtime/memmove_nacl_amd64p32.s

/* [<][>][^][v][top][bottom][index][help] */
// Copyright 2013 The Go Authors.  All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

#include "../../cmd/ld/textflag.h"

TEXT runtime·memmove(SB), NOSPLIT, $0-12
        MOVL    to+0(FP), DI
        MOVL    fr+4(FP), SI
        MOVL    n+8(FP), BX

        CMPL    SI, DI
        JLS back

forward:
        MOVL    BX, CX
        SHRL    $3, CX
        ANDL    $7, BX
        REP; MOVSQ
        MOVL    BX, CX
        REP; MOVSB
        RET

back:
        MOVL    SI, CX
        ADDL    BX, CX
        CMPL    CX, DI
        JLS forward

        ADDL    BX, DI
        ADDL    BX, SI
        STD
        
        MOVL    BX, CX
        SHRL    $3, CX
        ANDL    $7, BX
        SUBL    $8, DI
        SUBL    $8, SI
        REP; MOVSQ
        ADDL    $7, DI
        ADDL    $7, SI
        MOVL    BX, CX
        REP; MOVSB
        CLD

        RET

/* [<][>][^][v][top][bottom][index][help] */