From 66ecb9d7e4a85f3ae22b4fa3e89ad928b859dc9c Mon Sep 17 00:00:00 2001 From: mykola2312 <49044616+mykola2312@users.noreply.github.com> Date: Thu, 19 May 2022 01:31:33 +0300 Subject: [PATCH] implement _cu_memcmp in AArch64 --- arch/AArch64.S | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/arch/AArch64.S b/arch/AArch64.S index 9a98e09..14bbbc3 100644 --- a/arch/AArch64.S +++ b/arch/AArch64.S @@ -73,6 +73,32 @@ _cu_memmove: ret _cu_memcmp: + // x0 - dst, x1 - src, x2 - size + mov x3, x2, lsr #3 + tst x3, x3 + beq .cmp1_ +.cmp8: + ldr x4, [x0], #8 + ldr x5, [x1], #8 + cmp x4, x5 + bne .cmpnot + subs x3, x3, #1 + bne .cmp8 +.cmp1_: + and x3, x2, #7 + beq .cmpok +.cmp1: + ldrb w4, [x0], #1 + ldrb w5, [x1], #1 + cmp w4, w5 + bne .cmpnot + subs x3, x3, #1 + bne .cmp1 +.cmpok: + mov x0, xzr + ret +.cmpnot: + mov x0, #1 ret _cu_memset: