xref: /minix3/common/lib/libc/arch/x86_64/string/bcmp.S (revision 0a6a1f1d05b60e214de2f05a7310ddd1f0e590e7)
1b6cbf720SGianluca Guida#include <machine/asm.h>
2b6cbf720SGianluca Guida
3b6cbf720SGianluca Guida#if defined(LIBC_SCCS)
4*0a6a1f1dSLionel Sambuc	RCSID("$NetBSD: bcmp.S,v 1.3 2014/03/22 19:16:34 jakllsch Exp $")
5b6cbf720SGianluca Guida#endif
6b6cbf720SGianluca Guida
7b6cbf720SGianluca GuidaENTRY(bcmp)
8b6cbf720SGianluca Guida	xorl	%eax,%eax		/* clear return value */
9b6cbf720SGianluca Guida
10b6cbf720SGianluca Guida	movq	%rdx,%rcx		/* compare by words */
11b6cbf720SGianluca Guida	shrq	$3,%rcx
12b6cbf720SGianluca Guida	repe
13b6cbf720SGianluca Guida	cmpsq
14b6cbf720SGianluca Guida	jne	L1
15b6cbf720SGianluca Guida
16b6cbf720SGianluca Guida	movq	%rdx,%rcx		/* compare remainder by bytes */
17b6cbf720SGianluca Guida	andq	$7,%rcx
18b6cbf720SGianluca Guida	repe
19b6cbf720SGianluca Guida	cmpsb
20b6cbf720SGianluca Guida	je	L2
21b6cbf720SGianluca Guida
22b6cbf720SGianluca GuidaL1:	incl	%eax
23b6cbf720SGianluca GuidaL2:	ret
24*0a6a1f1dSLionel SambucEND(bcmp)
25