Bump version to 19.1.0 (final)
[llvm-project.git] / mlir / docs / Dialects / ArmSME.md
blobce0a76ed60f19cf5dc0673f86f8df3742e6d931d
1 # 'ArmSME' Dialect
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)
9 operation to Arm SME
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:
19 ```bash
20   -DMLIR_INCLUDE_INTEGRATION_TESTS=On
21   -DMLIR_RUN_ARM_SME_TESTS=On
22   -DARM_EMULATOR_EXECUTABLE=<path-to-emulator> 
23 ```
25 These tests are run "post-commit" by the
26 [clang-aarch64-sve-vla](https://lab.llvm.org/buildbot/#/builders/197) LLVM
27 BuildBot worker.
29 **References:**
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)
34 [TOC]
36 ## Operations
38 [include "Dialects/ArmSMEOps.md"]
40 ## Operations for LLVM IR Intrinsics
42 [include "Dialects/ArmSMEIntrinsicOps.md"]