Hi,
I’m Bonsthie — a low-level enthusiast and compiler enjoyer!
I started coding 2 years ago ,and in the last 6 months I began focusing on compiler development and performance with a focus on LLVM.
What’s here
On this website, you’ll find various things I’ve worked on, mostly a place for me to store notes and write-ups.
Main Work
SIMPL project
This is a GitHub foundation I started with my friend at0m741 that aims to build a low-level ecosystem: a libc, compiler, and kernel.
SIMPL Libc
This is the most advanced part of the SIMPL project.
Currently done:
- The library setup and build system are fully implemented, with symbol optimization inside the build.
- Simple string functions optimized for vectorization and IFUNC resolution.
- Basic
mallocfamily functions. - Some syscalls implemented.
- A simple
pthreadimplementation.
SIMPLV
This is a header-only vectorization library that uses the C preprocessor to help write vectorized code that is architecture-agnostic and size-agnostic (upscaling 128-bit vectors to 256-bit when appropriate).
Currently it handles SSE and AVX, it still needs to be extended to NEON intrinsics.
This library exists mainly to simplify the libc code by providing a single implementation for vectorized algorithms. Of course this leads to slightly less aggressive hand-tuned optimizations than glibc, but for a function like strlen we reach ~90% of the glibc asm implementation’s performance.
SCC — SIMPL C Compiler
This is currently closed-source, but the name explains itself: it’s the compiler of the SIMPL project, a C compiler that will target/use the SIMPL libc.
LLVM work
Clang walkthrough
A write-up exploring the Clang main path to better understand how the Clang frontend works.
LLVM tutorial backend
A backend implemented by following Quentin Collombet’s LLVM Code Generation book, it helped me understand the LLVM backend flow.
- Designed the backend architecture, including instruction formats, register classes, and calling conventions; integrated it into LLVM’s code generation pipeline.
- Implemented GlobalISel support, covering legalization, register-bank info, instruction selection, and a
- pre-legalizer combiner; wired it into the H2BLB pass pipeline.
- Added a target-specific optimization pass for H2BLB, implementing constant propagation and integrating it with both the legacy and new pass managers.
more info in the source code readme
Contributions
I contributed to the x86 GlobalISel backend in LLVM. I’m currently (in my free time, which is limited) working on fixing issues around vector index instructions
Professional work
FRAG (current)
Automatically analyzes documents to detect the correct folder, organizes files instantly, enables users to ask questions directly on documents, and allows files to be forwarded into a colleague’s panier for handling, all through a simple interface and seamless plugins for tools like Konica Minolta and Outlook.