From aa1e471f9aa05f56edd00a0bf70bb416efa0529f Mon Sep 17 00:00:00 2001 From: Nils Wallménius Date: Wed, 12 May 2010 12:32:34 +0000 Subject: Coldfire strlen, slight optimization pointed out by amiconn, eliminate some unconditionla branches by rearranging the code handling the head bytes git-svn-id: svn://svn.rockbox.org/rockbox/trunk@25968 a1c6a512-1295-4272-9138-f99709370657 --- firmware/target/coldfire/strlen-coldfire.S | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/firmware/target/coldfire/strlen-coldfire.S b/firmware/target/coldfire/strlen-coldfire.S index f1e5aca981..765969da04 100644 --- a/firmware/target/coldfire/strlen-coldfire.S +++ b/firmware/target/coldfire/strlen-coldfire.S @@ -31,21 +31,14 @@ strlen: move.l %a0, %a1 /* %a1 = start address */ move.l %a0, %d0 andi.l #3, %d0 /* %d0 = %a0 & 3 */ - jmp.l (2,%pc,%d0.l*2) - bra.b .bytes0 - bra.b .bytes3 - bra.b .bytes2 - bra.b .bytes1 -.bytes3: + beq.b 1f /* already aligned */ + jmp.l (-2,%pc,%d0.l*4) tst.b (%a0)+ beq.b .done -.bytes2: tst.b (%a0)+ beq.b .done -.bytes1: tst.b (%a0)+ beq.b .done -.bytes0: 1: move.l (%a0)+, %d0 /* load %d0 increment %a0 */ -- cgit v1.2.3