36 lines
706 B
ArmAsm
36 lines
706 B
ArmAsm
|
/* cmp64*() - 64 bit compare Author: Kees J. Bot */
|
||
|
/* 7 Dec 1995 */
|
||
|
.text
|
||
|
.globl _cmp64, _cmp64u, _cmp64ul
|
||
|
|
||
|
_cmp64:
|
||
|
/* int cmp64(u64_t i, u64_t j); */
|
||
|
movl %esp, %ecx
|
||
|
0:
|
||
|
xorl %eax, %eax
|
||
|
movl 4(%ecx), %edx
|
||
|
subl 12(%ecx), %edx
|
||
|
movl 8(%ecx), %edx
|
||
|
sbbl 16(%ecx), %edx
|
||
|
sbbl %eax, %eax /* eax = - (i < j) */
|
||
|
movl 12(%ecx), %edx
|
||
|
subl 4(%ecx), %edx
|
||
|
movl 16(%ecx), %edx
|
||
|
sbbl 8(%ecx), %edx
|
||
|
adcl $0, %eax /* eax = (i > j) - (i < j) */
|
||
|
ret
|
||
|
|
||
|
_cmp64u:
|
||
|
/* int cmp64u(u64_t i, unsigned j); */
|
||
|
_cmp64ul:
|
||
|
/* int cmp64ul(u64_t i, unsigned long j); */
|
||
|
movl %esp, %ecx
|
||
|
push 16(%ecx)
|
||
|
movl $0, 16(%ecx)
|
||
|
call 0b
|
||
|
pop 16(%ecx)
|
||
|
ret
|
||
|
|
||
|
/* */
|
||
|
/* $PchId: cmp64.ack.s,v 1.2 1996/04/11 18:59:57 philip Exp $ */
|