Skip to Main Content
Talk Beginner First Talk

LLVM IR Is A Reasonable Programming Language

Rejected
Session Description

This talk will demonstrate that LLVM IR as a programming language of its own right and not just a tool for building compilers. We will explore its strong type system, how basic blocks structure control flow, and the formation Static Single Assignment (SSA) along with phi nodes. We will also exhibit how common optimisations like inlining, tail call elimination, and leveraging SIMD instructions manifest at this level.

Systems programming languages offer significant speed advantages due to compile-time analyses and optimisations. Given that a good number of systems languages are built on the LLVM toolchain, examining how language front-ends like C/C++ (clang), Rust, and others represent code in their compilers’ intermediate compilation passes can unlock a whole new perspective in understanding optimisations that follow (and what optmisations can be introduced!).

It is surprisingly easy to treat LLVM IR as a readable and understandable programming language. With the right knowledge of how LLVM constructs maps to assembly, one can write blazingly fast code without needing a language (front-end) at all!

In cases where extreme performance is paramount, such as in High-Frequency Trading (HFT) or High-Performance Computing (HPC), writing code in a level lower than the programming language itself will enable you to harness machine- and context-specific optimisations that language front-ends may fail to realise.

To illustrate this practically, our talk will showcase a hand-optimised base64 decoder [tool](https://github.com/MainKt/base64-ll) written directly in LLVM IR that makes use of its SIMD intrinsics. We will demonstrate how explicitly leveraging low-level features like SIMD operations can yield significant performance gains over a conventionally compiled version.

Expected duration: 20 - 22 mins.

Key Takeaways
  • Ability to read and understand LLVM IR.

  • Insight into compiler optimisation techniques from the IR level.

  • A burning desire to ditch your favourite low-level programming language in favour of a compiler IR!!!

References

Session Categories

Technology architecture
Engineering practice - productivity, debugging
Which track are you applying for?
Compilers, Programming Languages and Systems Devroom

Speakers

Vyasa M Nayak Software Development Engineer | Verifone Inc.

Vyasa M Nayak is a programming language enthusiast with a particular interest in how they are designed and implemented. He enjoys understanding how programming languages and tools operate behind the scenes, and how that knowledge can help developers write better, faster code.

He founded The Sceptix Club, a student-led group at St Joseph Engineering College that encourages open-source contributions and hands-on learning. As President, he has hosted sessions on Git & GitHub, Linux basics, programming with Vim, competitive coding, and web development, reaching over 1200 students so far.

He has been a lead organiser for two editions of the national-level HackToFuture hackathon that brought together hundreds of engineering students to build solutions around themes such as Healthcare, Energy & Sustainability, Blockchain, Education, AI, and Cyber Security.

Vyasa M Nayak
https://www.linkedin.com/in/vyasa-m-nayak/
Muhammad Saheed Student | GSoC Contributor | FreeBSD

I like open source software, enjoy tinkering with code, and learning and playing with CLI tools. I love linux and *BSDs, I daily drive arch linux and also use FreeBSD btw.

I love ricing and optimizing my workflow in my free time with window managers and vim, but maybe it's a vice.

I also love low-level systems programming and enjoy building and rewriting tools that I find fun in Zig and Rust. I'm also a fan of Erlang and it's concurrency model.

I am a GSoC 2025 contributor for the FreeBSD project.

I am also an advisor at The Sceptix Club.

Muhammad Saheed
https://saheed.tech/

Reviews

No reviews yet.