diff options
author | Wolfgang Hospital <Wolfgang.Hospital@arcor.de> | 2024-05-18 15:02:51 +0200 |
---|---|---|
committer | Georg-Johann Lay <avr@gjlay.de> | 2024-05-18 15:14:58 +0200 |
commit | 3b88dade7ff8a07fd0843ac1281e095cfd94453e (patch) | |
tree | b5bee7efefef3d884e3c2c0f0b4a23bc910a577f /libgcc | |
parent | c887341432bb71cf5540d54955ad7265b0aaca77 (diff) | |
download | gcc-3b88dade7ff8a07fd0843ac1281e095cfd94453e.zip gcc-3b88dade7ff8a07fd0843ac1281e095cfd94453e.tar.gz gcc-3b88dade7ff8a07fd0843ac1281e095cfd94453e.tar.bz2 |
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)
Diffstat (limited to 'libgcc')
-rw-r--r-- | libgcc/config/avr/lib1funcs.S | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/libgcc/config/avr/lib1funcs.S b/libgcc/config/avr/lib1funcs.S index a085413..1d04fed 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) */ |