git: 1c7e291da65a - stable/15 - libmd aarch64: Use ands instead of bics to round down the length

From: John Baldwin <jhb_at_FreeBSD.org>
Date: Fri, 24 Apr 2026 17:55:51 UTC
The branch stable/15 has been updated by jhb:

URL: https://cgit.FreeBSD.org/src/commit/?id=1c7e291da65a1dd30edc59e6ecc4b5bdc5e49af2

commit 1c7e291da65a1dd30edc59e6ecc4b5bdc5e49af2
Author:     John Baldwin <jhb@FreeBSD.org>
AuthorDate: 2026-02-09 16:26:29 +0000
Commit:     John Baldwin <jhb@FreeBSD.org>
CommitDate: 2026-04-24 15:32:43 +0000

    libmd aarch64: Use ands instead of bics to round down the length
    
    GNU as does not accept bics with two register operands but instead
    requires three register operands.  However, clang assembles the bics
    instruction to ands anyway, so just use ands directly.
    
    Reviewed by:    fuz
    Differential Revision:  https://reviews.freebsd.org/D55155
    
    (cherry picked from commit 244f498074b5574d18d4518583863580498b8d3b)
---
 lib/libmd/aarch64/md5block.S | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lib/libmd/aarch64/md5block.S b/lib/libmd/aarch64/md5block.S
index b928c8dd795a..297db7f6bdbd 100644
--- a/lib/libmd/aarch64/md5block.S
+++ b/lib/libmd/aarch64/md5block.S
@@ -134,7 +134,7 @@ d_	.req	m5
 	stp	x23, x24, [sp, #0x20]
 	stp	x25, x26, [sp, #0x30]
 
-	bics	len, len, #63		// length in blocks
+	ands	len, len, #~63		// length in blocks
 	add	end, buf, len		// end pointer
 
 	beq	.Lend			// was len == 0 after BICS?