nuttx/include
ligd 7fc03e0084 lib: generic optimization for constant divisor on 32-bit machines
64-by-32-bit divisions are prominent in the NuttX, even on 32-bit
machines.  Luckily, many of them use a constant divisor that allows
for a much faster multiplication by the divisor's reciprocal.

The compiler already performs this optimization when compiling a 32-by-32
division with a constant divisor. Unfortunately, on 32-bit machines, gcc
does not optimize 64-by-32 divisions in that case, except for constant
divisors that happen to be a power of 2.

Let's avoid the slow path whenever the divisor is constant by manually
computing the reciprocal ourselves and performing the multiplication
inline.  In most cases, this improves performance of 64-by-32 divisions
by about two orders of magnitude compared to the __div64_32() fallback,
especially on architectures lacking a native div instruction.

Signed-off-by: ligd <liguiding1@xiaomi.com>
2024-09-12 18:14:39 +08:00
..
android
arpa
crypto nuttx/crypto: export Diffie-Hellman algorithm 2024-09-09 23:55:33 +08:00
cxx add rint and expm1 function to cmath from libm 2024-07-12 12:05:54 +08:00
net netlib/route: add length for add/del route-func to reduce caller stack usage 2024-08-26 01:54:10 +08:00
netinet Expose IPTOS_xxx to the application layer 2024-09-12 17:15:31 +08:00
netpacket can: Merge netpacket/can.h into nuttx/can.h 2024-08-26 05:05:31 -04:00
nuttx lib: generic optimization for constant divisor on 32-bit machines 2024-09-12 18:14:39 +08:00
ssp
sys usbdev: Add fastboot boardctl 2024-09-10 23:35:58 +08:00
.gitignore .gitignore: add ignore 2024-03-14 22:47:55 +08:00
aio.h aio: change aio_fildes int type 2023-09-08 00:59:31 +03:00
alloca.h libs/alloca: add alloca implement for MSVC 2023-08-28 11:10:08 -03:00
assert.h Restore ASSERT/VERIFY semantics 2024-09-09 15:25:04 +08:00
byteswap.h
ctype.h Add basic support for locales in order to C++ streams to build and work for simple cases (POSIX / C locale). 2024-04-29 17:34:10 +08:00
debug.h include/debug.h: fix _alert log level error 2024-08-24 11:20:59 +08:00
dirent.h
dlfcn.h dlfcn: Add stub for dladdr 2024-07-26 14:39:10 -03:00
dsp.h nuttx: resolve various 'FAR' and 'CODE' issues 2024-08-26 10:21:03 +08:00
dspb16.h libdsp: fix gcc14 error and clean up includes 2024-06-02 09:27:36 -03:00
elf32.h Fix and improve dynamic loader 2023-07-13 10:11:58 +08:00
elf64.h Fix loading of ET_DYN type of shared objects 2023-09-20 09:35:28 -04:00
elf.h coredump:support coredump aligned access registers 2024-08-12 02:02:25 +08:00
endian.h
err.h
errno.h
execinfo.h libc/execinfo: extract a common backtrace format function 2024-06-29 22:44:39 +08:00
fcntl.h drivers/pipes: add fcntl(F_SETPIPE_SZ/F_GETPIPE_SZ) support 2024-09-10 11:35:15 +08:00
fixedmath.h fixedmath: add abs and sign operations 2023-10-07 21:25:56 +08:00
fnmatch.h
ftw.h
getopt.h
glob.h
grp.h
hex2bin.h libs/libc/hex2bin: enhance 64-bit compatibility 2023-08-11 19:43:37 +08:00
iconv.h
ifaddrs.h
inttypes.h libs/libc/inttypes: add support for imaxdiv 2024-04-23 10:26:48 -03:00
iso646.h
langinfo.h The character U+ff0c "," could be confused with the ASCII character U+002c ",", which is more common in source code. 2023-10-03 16:53:12 -04:00
libgen.h
libintl.h
limits.h clock: replace all up_perf_xx with perf_xx 2023-10-02 16:11:43 +02:00
locale.h
lzf.h
malloc.h mm: record the maximum system memory usage 2023-11-09 09:08:49 +08:00
mqueue.h fs/mqueue: Fix the wrong field type in mq_attr as the spec and add the logical judgment to deal with the condition when mq_maxmsg or mq_msgsize is less than zero or equal to zero. 2023-08-03 03:10:56 -07:00
netdb.h
nl_types.h
nxflat.h
obstack.h
poll.h
pthread.h pthread/realtime: export interfaces about pthread ceiling priority 2024-09-10 01:26:31 +08:00
pty.h
pwd.h pwd: Add initial implementation of getpwent 2023-07-31 07:50:10 -07:00
regex.h
resolv.h
sched.h sched.h: add SCHED_BATCH and SCHED_IDLE definition 2024-07-14 13:20:53 -03:00
search.h hcreate: add alloc/free func hook for user to deallocate memory 2024-08-22 20:25:30 +08:00
semaphore.h semaphore: export priority ceiling interfaces in semaphore 2024-09-10 01:26:31 +08:00
signal.h sigaction: Expand si_user for non-kernel signals 2023-11-22 08:00:43 -08:00
spawn.h libs/libc/spawn: Add minimal implementation for posix_spawnattr_destory. 2023-10-31 13:42:00 +08:00
stdbool.h nuttx/atomic.h:Fix missing type declarations at compile time 2024-08-22 01:44:29 +08:00
stddef.h
stdint.h
stdio.h libc: add support for open_memstream 2023-11-29 02:13:19 -08:00
stdlib.h libc: add support for reallocarray 2024-04-17 11:36:39 -03:00
stdnoreturn.h
string.h
strings.h nuttx: resolve various 'FAR' and 'CODE' issues 2024-08-26 10:21:03 +08:00
syscall.h
syslog.h
termios.h
threads.h Fix typo in mtx_timedlock 2024-02-02 09:03:18 -08:00
time.h libc:Add macro restrictions to code that uses floating point numbers 2024-08-21 13:33:45 +08:00
unistd.h libc/sysconf: add _SC_GETPW_R_SIZE_MAX 2024-08-29 09:05:45 +08:00
utime.h
uuid.h nuttx: fix multiple 'FAR', 'CODE' and style issues 2024-08-25 19:22:15 +08:00
wchar.h include/wchar:Fix mbstate_t Redeclaration in MSVC 2024-08-22 01:44:29 +08:00
wctype.h