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.

my github

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 malloc family functions.
  • Some syscalls implemented.
  • A simple pthread implementation.

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.