3 Basic dialect to target Arm SME.
5 This dialect defines custom and LLVM IR intrinsic operations that are used to
6 target Arm Scalable Matrix Extension. Through the available conversion and
7 ArmSME passes you can, for example, lower a
8 [linalg.matmul](https://mlir.llvm.org/docs/Dialects/Linalg/#linalgmatmul-linalgmatmulop)
10 [FMOPA](https://developer.arm.com/documentation/ddi0602/2023-03/SME-Instructions/FMOPA--widening---Half-precision-floating-point-sum-of-outer-products-and-accumulate-)
11 (floating-point outer product) operations. See one of the in-tree end-to-end
12 integration tests for reference:
14 * [Linalg/CPU/ArmSME/matmul.mlir](https://github.com/llvm/llvm-project/blob/main/mlir/test/Integration/Dialect/Linalg/CPU/ArmSME/matmul.mlir)
15 * [Vector/CPU/ArmSME/test-outerproduct-f64.mlir](https://github.com/llvm/llvm-project/blob/main/mlir/test/Integration/Dialect/Vector/CPU/ArmSME/test-outerproduct-f64.mlir)
17 In order to run ArmSME integration tests, include these flags in the CMake
18 invocation when configuring LLVM and MLIR:
20 -DMLIR_INCLUDE_INTEGRATION_TESTS=On
21 -DMLIR_RUN_ARM_SME_TESTS=On
22 -DARM_EMULATOR_EXECUTABLE=<path-to-emulator>
25 These tests are run "post-commit" by the
26 [clang-aarch64-sve-vla](https://lab.llvm.org/buildbot/#/builders/197) LLVM
31 * [The Scalable Matrix Extension (SME), for Armv9-A](https://developer.arm.com/documentation/ddi0616)
32 * [A64 -- SME Instructions (alphabetic order)](https://developer.arm.com/documentation/ddi0602/2023-03/SME-Instructions)
38 [include "Dialects/ArmSMEOps.md"]
40 ## Operations for LLVM IR Intrinsics
42 [include "Dialects/ArmSMEIntrinsicOps.md"]