Lessons in TableGen

by Nicolai Hähnle At: FOSDEM 2019 https://video.fosdem.org/2019/K.4.201... TableGen is LLVM's DSL for describing intrinsics, backends' machine instructions, physical registers, machine scheduling models, and a bunch of other things. It is extremely flexible and powerful, but can also be rather aggravating. Most people who spend a significant amount of time working on an LLVM backend probably develop a love/hate-relationship with it. The goal of this talk is to give a brief overview of what TableGen offers -- frontend, application-specific backends, generic table emission backend, idiosyncratic type system, and these days even limited functional-style programming -- and a brief introduction on how to use it. The focus will be mostly on the frontend -- that is, syntax and semantics of the TableGen DSL itself -- rather than on specific backends. Along the way, I want to share some lessons learned and decisions made during a major refactoring of the TableGen frontend that I undertook in early 2018 to iron out many of TableGen's quirks and shortcomings that had accumulated over the years, as well as some glimpses of the advanced TableGen uses in the AMDGPU backend that motivated that refactoring. Room: K.4.201 Scheduled start: 2019-02-03 12:00:00+01

3Geonames.org An open source Geocoding system for the simple communication of locations with a reso…
▶︎

3Geonames.org An open source Geocoding system for the simple communication of locations with a reso…

2018 LLVM Developers’ Meeting: A. Bradbury “LLVM backend development by example (RISC-V)”
▶︎

2018 LLVM Developers’ Meeting: A. Bradbury “LLVM backend development by example (RISC-V)”

2019 EuroLLVM Developers’ Meeting: T. Shpeisman & C. Lattner “MLIR: Multi-Level Intermediate Repr..”
▶︎

2019 EuroLLVM Developers’ Meeting: T. Shpeisman & C. Lattner “MLIR: Multi-Level Intermediate Repr..”

2017 LLVM Developers’ Meeting: M. Braun “Welcome to the back-end: The LLVM machine representation”
▶︎

2017 LLVM Developers’ Meeting: M. Braun “Welcome to the back-end: The LLVM machine representation”

Zig 2026: No-AI Policy, $670K Foundation, Left GitHub & Why Zig Isn’t 1.0 - Andrew Kelley Explains
▶︎

Zig 2026: No-AI Policy, $670K Foundation, Left GitHub & Why Zig Isn’t 1.0 - Andrew Kelley Explains

Co-Creator of Haskell: Useless vs Useful Languages, Rust vs C, Functional Programming | Simon Jones
▶︎

Co-Creator of Haskell: Useless vs Useful Languages, Rust vs C, Functional Programming | Simon Jones

The Man Who Worked At Subway, Then Solved An "Impossible" Problem
▶︎

The Man Who Worked At Subway, Then Solved An "Impossible" Problem

Why birth rates are falling everywhere all at once | FT
▶︎

Why birth rates are falling everywhere all at once | FT

Tips for C Programming
▶︎

Tips for C Programming

How (and why) to take a logarithm of an image
▶︎

How (and why) to take a logarithm of an image

2021 LLVM Dev Mtg “How to write a TableGen backend”
▶︎

2021 LLVM Dev Mtg “How to write a TableGen backend”

2019 EuroLLVM Developers’ Meeting: V. Bridgers & F. Piovezan “LLVM IR Tutorial - Phis, GEPs ...”
▶︎

2019 EuroLLVM Developers’ Meeting: V. Bridgers & F. Piovezan “LLVM IR Tutorial - Phis, GEPs ...”

LLVM Backend for m68k - by Min-Yih Hsu
▶︎

LLVM Backend for m68k - by Min-Yih Hsu

2023 LLVM Dev Mtg - MLIR Is Not an ML Compiler, and Other Common Misconceptions
▶︎

2023 LLVM Dev Mtg - MLIR Is Not an ML Compiler, and Other Common Misconceptions

The Insane Genius of a Formula 1 Gearbox
▶︎

The Insane Genius of a Formula 1 Gearbox

Is the AI Boom About to COLLAPSE?
▶︎

Is the AI Boom About to COLLAPSE?

Unbelievable Smart Worker & Hilarious Fails | Construction Compilation #8 #adamrose #smartworkers
▶︎

Unbelievable Smart Worker & Hilarious Fails | Construction Compilation #8 #adamrose #smartworkers

2020 LLVM Developers’ Meeting: M. Amini & R. Riddle “MLIR Tutorial”
▶︎

2020 LLVM Developers’ Meeting: M. Amini & R. Riddle “MLIR Tutorial”

Creator of C++: Bell Labs, Negative Overhead Abstraction, Mistakes | Bjarne Stroustrup
▶︎

Creator of C++: Bell Labs, Negative Overhead Abstraction, Mistakes | Bjarne Stroustrup

I Gave ChatGPT a Body
▶︎

I Gave ChatGPT a Body