]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
AVR: target/115065 - Tweak __clzhi2.
authorWolfgang Hospital <Wolfgang.Hospital@arcor.de>
Sat, 18 May 2024 13:02:51 +0000 (15:02 +0200)
committerGeorg-Johann Lay <avr@gjlay.de>
Sat, 18 May 2024 13:12:10 +0000 (15:12 +0200)
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.

libgcc/config/avr/lib1funcs.S

index 04a4eb01ab4372a2068abf2881f1f989fabc0453..d48b04747da89f65bfa974d75b3aae340312f71e 100644 (file)
@@ -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) */