rockbox/firmware
William Wilgus 231d552972 isdigit replace with a slightly faster and shorter conditional
in testing of three ways of doing this
current: ((_ctype_+1)[(unsigned char)(c)]&_N)

alt1(this patch): (((unsigned int) (c) - '0') < 10)

alt2: ((unsigned int)(c ^ 0x30) < 10)

alt1 and alt2 are the same in terms of speed and instructions (on arm v7) but alt2 has one more
instruction on mips

(across several archs in godbolt mips, armv7v8, x86) and on ARM7 (clipzip) device about 9% faster

less false positives for both alt1 and 2 when you start supplying more than 8bits
not sure if that matters in practice though

I tried similar with isxdigit but could only get to within 1 instruction of the ctype implementation
although it negated the array lookup I saw no discernable speed difference on device

https://godbolt.org/z/qGvh4hqnG

Change-Id: I5c9e8fd3915709853e0e33427038e20a068058b6
2025-02-02 13:57:58 -05:00
..
asm build: Various LTO fixes 2024-11-24 08:43:23 -05:00
common short circuit is_diacritic for 5-15% text drawing speed-up 2025-01-31 21:48:44 -05:00
drivers short circuit is_diacritic for 5-15% text drawing speed-up 2025-01-31 21:48:44 -05:00
export Remove NVRAM infavor of a separate cfg file 2025-01-21 00:04:32 -05:00
include short circuit is_diacritic for 5-15% text drawing speed-up 2025-01-31 21:48:44 -05:00
kernel kernel: Add queue_full() API call 2024-10-06 11:17:54 -04:00
libc isdigit replace with a slightly faster and shorter conditional 2025-02-02 13:57:58 -05:00
target erosqnative: hw4 units prefer egauge battery percentage 2025-01-19 17:30:21 -05:00
usbstack storage: rename MAX_LOG_SECTOR_SIZE to MAX_VIRT_SECTOR_SIZE 2024-11-09 16:32:40 -05:00
arabjoin.c
arabjoin.h
ata_idle_notify.c Fix reds. 2014-03-14 23:43:45 +01:00
backlight-sw-fading.c For backlights that have a wide control, support skipping steps. 2020-10-02 02:45:43 +00:00
backlight.c [Bugfix] call lcd_awake() unconditioanlly on shutdown for devices with HAVE_LCD_SLEEP 2025-01-05 10:59:46 -05:00
bidi.c bidi.c: Check buffer sizes. 2014-01-09 23:30:32 +01:00
buflib_malloc.c buflib_malloc: fixed signed/unsigned comparison 2023-01-16 16:57:23 +00:00
buflib_mempool.c buflib: Add pinned get/put data functions 2023-01-15 11:06:27 +00:00
chunk_alloc.c [BugFix] chunk_alloc pass NULL to buflib_shrink 2023-03-09 20:15:38 -05:00
COPYING
core_alloc.c buflib: Add CONFIG_BUFLIB_BACKEND for selecting a buflib backend 2023-01-15 10:04:13 +00:00
debug.c [1/4] Remove SH support and all archos targets 2020-07-24 21:20:13 +00:00
eeprom_settings.c
enc_base.c FS#12378 : Remove various unused code, and comment out some unused code and data for reference or future use. 2011-12-14 21:45:25 +00:00
events.c events.c clean-up 2022-12-30 07:23:29 -05:00
firmware.make build: Various LTO fixes 2024-11-24 08:43:23 -05:00
font.c short circuit is_diacritic for 5-15% text drawing speed-up 2025-01-31 21:48:44 -05:00
font_cache.c fonts: Do not unload completely on USB. 2014-01-15 23:37:39 +01:00
general.c replace strlcpy with strmemccpy 2022-11-14 23:56:16 -05:00
hangul.c
linuxboot.c buflib_shrink use NULL to signal start isn't changing 2023-01-13 09:50:29 -05:00
load_code.c Fix various reds. Some includes needed fixup. 2014-03-03 19:10:48 +01:00
logf.c logf: Fix an incorrect fix in 835d0c737a 2021-08-15 09:03:16 -04:00
lru.c
panic.c panicf: Add version info 2025-01-01 20:48:03 -05:00
pcm.c Rework auto playback frequency switch 2023-10-28 15:11:07 -04:00
pcm_mixer.c pcm_mixer: Fix an idle frame calculation bug introduced in 2e708c48c5 2020-10-24 02:00:50 +00:00
pcm_sampr.c pcm: Missed a file for the 192/176K playback. 2020-09-30 22:03:34 -04:00
pcm_sw_volume.c move PCM_NATIVE_BITDEPTH definiton into global config code 2021-08-07 11:18:19 -04:00
powermgmt.c powermgmt: adjust sleep timer behavior 2025-02-02 13:00:30 -05:00
profile.c
README
rolo.c ErosQNative: Add v3 LCD support, conditional on bootloader 2024-09-02 13:29:43 -04:00
rom.lds h300: add support for ROM image generation 2020-10-26 01:37:42 +00:00
screendump.c Fix path buffer overflow in screendump 2021-08-06 15:46:53 +00:00
scroll_engine.c Fix red fbc8b2156f 2024-08-28 21:26:06 -04:00
sdmmc.c
sound.c Remove NVRAM infavor of a separate cfg file 2025-01-21 00:04:32 -05:00
SOURCES sdl: Keep texture around, upload LCD-parts only 2024-12-25 08:34:40 -05:00
storage.c ata: Rework how flushing, sleeping, and power off interacts 2024-10-31 12:51:54 -04:00
system.c Add ability to dump cpu boost log to disk, include thread names 2021-09-30 21:13:22 -04:00
timer.c Fix timer Agptek Rocker (other hosted players) 2019-10-17 21:19:00 +02:00
tuner.c [1/4] Remove SH support and all archos targets 2020-07-24 21:20:13 +00:00
usb.c usb: add debounce interval for USB status by event 2022-09-25 06:49:11 -04:00

See docs/README