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.