[mlir][ArmSME] Introduce custom TypeConverter for ArmSME
authorAndrzej Warzynski <andrzej.warzynski@arm.com>
Fri, 14 Jul 2023 11:55:13 +0000 (11:55 +0000)
committerAndrzej Warzynski <andrzej.warzynski@arm.com>
Tue, 18 Jul 2023 09:35:32 +0000 (09:35 +0000)
commit3fa5ee67babad11a88943ede42a4123299acf31a
tree43148cbca0d0499c468a3d6bd58d9e70a9aa5fd1
parente65cabbbb577c8e5a93227d071e325c0d248df4c
[mlir][ArmSME] Introduce custom TypeConverter for ArmSME

At the moment, SME-to-LLVM lowerings rely entirely on
`LLVMTypeConverter`. This patch introduces a dedicated `TypeConverter`
that inherits from `LLVMTypeConverter` (it will also be used when
lowering ArmSME Ops to LLVM).

The new type converter merely disables lowerings for `VectorType` to
prevent 2-d scalable vectors (common in the context of ArmSME), e.g.

   `vector<[16]x[16]xi8>`,

entering the LLVM Type converter. LLVM does not support arrays of
scalable vectors and hence the need for specialisation. In the case of
SME such types are effectively eliminated when emitting LLVM IR
intrinsics for SME.

Differential Revision: https://reviews.llvm.org/D155365
mlir/include/mlir/Dialect/ArmSME/Transforms/Passes.h
mlir/lib/Conversion/VectorToLLVM/CMakeLists.txt
mlir/lib/Conversion/VectorToLLVM/ConvertVectorToLLVMPass.cpp
mlir/lib/Dialect/ArmSME/Transforms/ArmSMETypeConverter.cpp [new file with mode: 0644]
mlir/lib/Dialect/ArmSME/Transforms/CMakeLists.txt