I thought it might be nice to provide a consolidated update of progress on LLVM’s libc, so here it is.
Math updates:
- Landed:
- Nearest integer instructions to speed up math implementations:
- Correctly rounded sinf
- ⚙ D123154 [libc] Implement sinf function that is correctly rounded to all rounding modes.
- Changed range reduction of sinf to be shared with cosf: ⚙ D130629 [libc] Change sinf range reduction to mod pi/16 to be shared with cosf.
- Improve expf performance: ⚙ D130498 [libc] Use nearest_integer instructions to improve expf performance.
- Improve expm1f performance: ⚙ D130502 [libc] Use nearest_integer instructions to improve expm1f performance.
- Universal exp function for cosh/sinh: ⚙ D129215 [libc][math] Universal exp function for cosh/sinh calculation.
Stdio updates
- Printf Conversion status: Decimal floating point conversions are still in progress.
- Printf compiled size (with size saving enabled) was evaluated, size is approximately 5.8KB in a final binary
Thread library updates
- Working on pthread_setspecific and related API.
Misc updates
- Added POSIX dirent functions opendir, closefir, readdir and dirfd.
- Errno wrapper - ⚙ D130662 [libc] Read and write errno via special getter and setter functions.
- More arm32 entrypoints have been added - ⚙ D129821 [libc][arm32] add string stdlib & math entrypoints