blob: 50f327b4ed0201f3456d38666c07483b613b1a93 [file] [log] [blame]
Anthony Martin8303a132014-03-12 18:12:25 -07001// Copyright 2014 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
Russ Coxcb040d52014-09-04 23:05:18 -04005#include "textflag.h"
Anthony Martin8303a132014-03-12 18:12:25 -07006
7// void runtime·memclr(void*, uintptr)
8TEXT runtime·memclr(SB), NOSPLIT, $0-8
9 MOVL ptr+0(FP), DI
10 MOVL n+4(FP), BX
11 XORL AX, AX
12
Russ Coxb55791e2014-10-28 21:50:16 -040013tail:
Anthony Martin8303a132014-03-12 18:12:25 -070014 TESTL BX, BX
Russ Coxb55791e2014-10-28 21:50:16 -040015 JEQ _0
Anthony Martin8303a132014-03-12 18:12:25 -070016 CMPL BX, $2
Russ Coxb55791e2014-10-28 21:50:16 -040017 JBE _1or2
Anthony Martin8303a132014-03-12 18:12:25 -070018 CMPL BX, $4
Russ Coxb55791e2014-10-28 21:50:16 -040019 JBE _3or4
Anthony Martin8303a132014-03-12 18:12:25 -070020 CMPL BX, $8
Russ Coxb55791e2014-10-28 21:50:16 -040021 JBE _5through8
Anthony Martin8303a132014-03-12 18:12:25 -070022 CMPL BX, $16
Russ Coxb55791e2014-10-28 21:50:16 -040023 JBE _9through16
Anthony Martin8303a132014-03-12 18:12:25 -070024 MOVL BX, CX
25 SHRL $2, CX
26 REP
27 STOSL
28 ANDL $3, BX
Russ Coxb55791e2014-10-28 21:50:16 -040029 JNE tail
Anthony Martin8303a132014-03-12 18:12:25 -070030 RET
31
Russ Coxb55791e2014-10-28 21:50:16 -040032_1or2:
Anthony Martin8303a132014-03-12 18:12:25 -070033 MOVB AX, (DI)
34 MOVB AX, -1(DI)(BX*1)
Josh Bleecher Snyderbc9e1602014-08-01 06:21:08 -070035 RET
Russ Coxb55791e2014-10-28 21:50:16 -040036_0:
Anthony Martin8303a132014-03-12 18:12:25 -070037 RET
Russ Coxb55791e2014-10-28 21:50:16 -040038_3or4:
Anthony Martin8303a132014-03-12 18:12:25 -070039 MOVW AX, (DI)
40 MOVW AX, -2(DI)(BX*1)
41 RET
Russ Coxb55791e2014-10-28 21:50:16 -040042_5through8:
Anthony Martin8303a132014-03-12 18:12:25 -070043 MOVL AX, (DI)
44 MOVL AX, -4(DI)(BX*1)
45 RET
Russ Coxb55791e2014-10-28 21:50:16 -040046_9through16:
Anthony Martin8303a132014-03-12 18:12:25 -070047 MOVL AX, (DI)
48 MOVL AX, 4(DI)
49 MOVL AX, -8(DI)(BX*1)
50 MOVL AX, -4(DI)(BX*1)
51 RET