Stefan Mada

Languages, Compilers, and more!

Hey! I'm Stefan. Welcome to my blog. I work primarily on compiler performance verification work, and I write about things that generally interest me at the time. Enjoy!

My Posts

Exploring Suboptimal Lattice Transfer Functions in LLVM with KnownBits

Transfer functions for abstract lattices are what allows many analyses such as LLVM's Known Bits analysis to give correct information. However, by operating in the abstract domain, these transfer functions leave possible information on the table. I explore lattices, concretization, abstraction, and optimality through the example of saturated signed addition.

Read More

Unique Brainfuck Optimizations

Brainfuck is an infamous esoteric language, but there are unique optimizations that can be performed on it, such as vector scan optimizations for loops like [>>], that can improve performance beyond what an LLVM backend can achieve natively.

Read More

Loop Unrolling: GPU vs CPU

Loop unrolling is an essential optimization performed by compilers, and it is also essential on both CPUs and GPUs alike. However, due to the differences in architecture, the potential benefits of loop unrolling are greater on GPUs than on CPUs, especially due to load batching.

Read More