From: Wolfgang Hospital Date: Sat, 18 May 2024 13:02:51 +0000 (+0200) Subject: AVR: target/115065 - Tweak __clzhi2. X-Git-Tag: basepoints/gcc-16~8908 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=988838da722dea09bd81ee9d49800a6f24980372;p=thirdparty%2Fgcc.git AVR: target/115065 - Tweak __clzhi2. The libgcc implementation of __clzhi2 can be tweaked by one cycle in some situations by re-arranging the instructions. It also reduces the WCET by 1 cycle. libgcc/ PR target/115065 * config/avr/lib1funcs.S (__clzhi2): Tweak. --- diff --git a/libgcc/config/avr/lib1funcs.S b/libgcc/config/avr/lib1funcs.S index 04a4eb01ab4..d48b04747da 100644 --- a/libgcc/config/avr/lib1funcs.S +++ b/libgcc/config/avr/lib1funcs.S @@ -2921,11 +2921,9 @@ DEFUN __clzhi2 clr r26 tst r25 brne 1f - subi r26, -8 or r25, r24 - brne 1f - ldi r24, 16 - ret + breq 0f + subi r26, -8 1: cpi r25, 16 brsh 3f subi r26, -3 @@ -2936,6 +2934,8 @@ DEFUN __clzhi2 mov r24, r26 clr r25 ret +0: ldi r24, 16 + ret ENDF __clzhi2 #endif /* defined (L_clzhi2) */