xref: /openbsd-src/sys/lib/libkern/arch/amd64/bcmp.S (revision 5cd8e87fa7cd53a2131a2fe6e6551a2efe02ce90)
1f5df1827Smickey#include <machine/asm.h>
2f5df1827Smickey
3f5df1827SmickeyENTRY(bcmp)
41d66f0a0Smortimer	RETGUARD_SETUP(bcmp, r11)
5f5df1827Smickey	xorl	%eax,%eax		/* clear return value */
6f5df1827Smickey
7f5df1827Smickey	movq	%rdx,%rcx		/* compare by words */
8f5df1827Smickey	shrq	$3,%rcx
9f5df1827Smickey	repe
10f5df1827Smickey	cmpsq
11*5cd8e87fSguenther	jne	1f
12f5df1827Smickey
13f5df1827Smickey	movq	%rdx,%rcx		/* compare remainder by bytes */
14f5df1827Smickey	andq	$7,%rcx
15f5df1827Smickey	repe
16f5df1827Smickey	cmpsb
17*5cd8e87fSguenther	je	2f
18f5df1827Smickey
19*5cd8e87fSguenther1:	incl	%eax
20*5cd8e87fSguenther2:	RETGUARD_CHECK(bcmp, r11)
211d66f0a0Smortimer	ret
22fc541c5dSguenther	lfence
23*5cd8e87fSguentherEND(bcmp)
24