shithub: riscv

ref: 0aae832ac3f3ae5d136563e980e9c32ceb0d1444
dir: /sys/src/libc/amd64/memset.s/

View raw version
TEXT	memset(SB),$0

	CLD
	MOVQ	RARG, DI
	MOVBLZX	c+8(FP), AX
	MOVQ	n+16(FP), BX
/*
 * if not enough bytes, just set bytes
 */
	CMPQ	BX, $9
	JLS	c3
/*
 * if not aligned, just set bytes
 */
	MOVQ	RARG, CX
	ANDL	$3,CX
	JNE	c3
/*
 * build word in AX
 */
	MOVB	AL, AH
	MOVL	AX, CX
	SHLL	$16, CX
	ORL	CX, AX
/*
 * set whole longs
 */
c1:
	MOVQ	BX, CX
	SHRQ	$2, CX
	ANDL	$3, BX
	REP;	STOSL
/*
 * set the rest, by bytes
 */
c3:
	MOVL	BX, CX
	REP;	STOSB
ret:
	MOVQ	RARG,AX
	RET