MLIR

Multi-Level IR Compiler Framework

Open Projects

Below is a list of projects that can be suitable for Google Summer of Code (GSOC) or just for someone to get started with contributing to MLIR. See also the “beginner” issues on the bugtracker. If you’re interested in one of these projects, feel free to discuss it on the MLIR section of the LLVM forums or on the MLIR channel of the LLVM discord server. The mentors are indicative and suggestion of first point of contact for starting on these projects.

  • bugpoint/llvm-reduce and llvm-canon kind of tools for MLIR (mentor: Mehdi Amini)
  • Rework the MLIR python bindings, add a C APIs for core concepts (mentor: Nicolas Vasilache, Alex Zinenko)
  • Automatic formatter for TableGen (similar to clang-format for C/C++)
  • Custom printer/parser syntax in TableGen (mentor: Nicolas Vasilache, River Riddle, Alex Zinenko)
  • LLVM IR declaratively defined. (mentor: Alex Zinenko)
  • MLIR Binary serialization / bitcode format (Mehdi Amini)
  • SPIR-V module combiner
    • Basic: merging modules and remove identical functions
    • Advanced: comparing logic and use features like spec constant to reduce similar but not identical functions
  • GLSL to SPIR-V dialect frontend
    • Requires: building up graphics side of the SPIR-V dialect
    • Purpose: give MLIR more frontends :) improve graphics tooling
    • Potential real-world usage: providing a migration solution from WebGL (shaders represented as GLSL) to WebGPU (shaders represented as SPIR-V)
  • Making MLIR interact with existing polyhedral tools: isl, pluto (mentor: Alex Zinenko)