PSA: LLVM dialect types are now based on built-in types

A series of recently landed changes replaced LLVM dialect types with compatible built-in types:

  • (singless) integers;
  • bf16 / bfloat;
  • f16 / half;
  • f32 / float;
  • f64 / double;
  • 1D fixed vectors of any types above;

as discussed in Exposing LLVM ops to the MLIR type system. This results in the removal of the corresponding C++ classes and some syntax changes. Utility functions provide drop-in replacements for previous functionality such as isa<LLVM::LLVMType> -> LLVM::isCompatibleType or cast<LLVM::LLVMVectorType>().getElementType -> LLVM::getVectorElementType. ⚙ D94485 [mlir] Update LLVM dialect type documentation is the final diff updating the documentation to reflect these changes.

The parser temporarily keeps accepting the syntax for LLVM types, e.g. !llvm.i32, but produces built-in types instead. This functionality allows for (semi-)automatically updating the tests that use the existing syntax by round-tripping them through mlir-opt. It will be removed soon.

4 Likes

awesome, congrats! This is a huge move!

This is huge! Thanks Alex!!!