[gcc r14-10217] AVR: target/115065 - Tweak __clzhi2.
Georg-Johann Lay
gjl@gcc.gnu.org
Sat May 18 13:15:37 GMT 2024
https://gcc.gnu.org/g:3b88dade7ff8a07fd0843ac1281e095cfd94453e
commit r14-10217-g3b88dade7ff8a07fd0843ac1281e095cfd94453e
Author: Wolfgang Hospital <Wolfgang.Hospital@arcor.de>
Date: Sat May 18 15:02:51 2024 +0200
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.
(cherry picked from commit 988838da722dea09bd81ee9d49800a6f24980372)
Diff:
---
libgcc/config/avr/lib1funcs.S | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/libgcc/config/avr/lib1funcs.S b/libgcc/config/avr/lib1funcs.S
index a0854139a0a3..1d04fed72644 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) */
More information about the Gcc-cvs
mailing list