Compiler Engineer

Overview:
We are looking for a compiler engineer to contribute to the evolution of our Polygeist-based compiler infrastructure. The ideal candidate will have a solid understanding of the Clang and LLVM ecosystems, strong experience with MLIR dialects and passes, and the ability to design robust IR transformation pipelines.

Key Responsibilities

  • Extend and maintain compiler frontend infrastructure that lowers high-level language constructs (via Clang AST) into structured MLIR operations.
  • Develop and refine lowering pipelines across various levels of abstraction, including SCF, CF, Affine, MemRef, and LLVM dialects.
  • Design and integrate new MLIR dialect operations. Implement folding and canonicalization for existing and new operations.
  • Write and maintain lit tests and FileCheck-based verification for the generated MLIR and passes.
  • Stay up-to-date with upstream MLIR/LLVM evolution to keep our compiler compatible with new APIs and dialect changes.

Required Skills and Qualifications

  • Fluent spoken and written English, capable of discussing technical compiler topics clearly.
  • Strong experience with MLIR:
    • Dialects, operations, regions, blocks, and SSA arguments.
    • Familiarity with MemRefSCFCFAffine, and LLVM dialects.
    • Experience with key MLIR mechanisms such as canonicalization and folding.
  • Solid understanding of LLVM IR:
    • Concepts like GEPallocaload/store, calling conventions, and SSA form.
  • Good understanding of the Clang AST, including Expr, Stmt, Decl, and visitor traversal patterns.
  • Solid C++ programming skills.

Comfortable working in large, fast- evolving compiler infrastructures and debugging across multiple abstraction levels (Clang → MLIR → LLVM).
 

Nice to Have

  • Previous contributions to Clang or LLVM or MLIR projects.
  • Experience with analysis or optimization passes at any level.
  • Experience with Vectorization: Familiarity with vector-level optimizations, SIMD instruction sets, or auto-vectorization..
  • LLVM backend familiarity, like:
  • The SelectionDAG and GlobalISel frameworks.
  • Handling of FrameIndex operands, stack frame layout, and prologue/epilogue emission.
  • Understanding of register classes, spilling, and calling convention lowering.

If you’re interested in helping us design and develop our groundbreaking Flow Parallel Processing Unit (PPU), powering up the next generation of high-performance CPUs, apply and send email to careers@flow-computing.com and we will get back to you as soon as we can.

Contact usX