From 8c5559c134abcf432ec59db842404087b9906c1a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?K=C3=A9vin=20Petit?= <kevin.petit@arm.com>
Date: Wed, 20 May 2026 16:39:51 +0100
Subject: [PATCH 16/26] Add ArmExperimentalMLOperations instruction set (#602)

Change-Id: Id5e6f036ed0a1653ea9817c1d5b193c58403fe1d

Signed-off-by: Kevin Petit <kevin.petit@arm.com>
---
 BUILD.bazel                                   |  6 +++++
 .../unified1/ArmExperimentalMLOperations.h    | 26 +++++++++++++++++++
 ...rm.experimental-ml-operations.grammar.json | 25 ++++++++++++++++++
 tools/buildHeaders/bin/makeExtinstHeaders.py  |  1 +
 4 files changed, 58 insertions(+)
 create mode 100644 include/spirv/unified1/ArmExperimentalMLOperations.h
 create mode 100644 include/spirv/unified1/extinst.arm.experimental-ml-operations.grammar.json

diff --git a/BUILD.bazel b/BUILD.bazel
index 61ef7e8..db21aeb 100644
--- a/BUILD.bazel
+++ b/BUILD.bazel
@@ -143,6 +143,11 @@ filegroup(
     srcs = ["include/spirv/unified1/extinst.nonsemantic.graph.debuginfo.grammar.json"],
 )
 
+filegroup(
+    name = "spirv_ext_inst_arm_experimental_ml_operations",
+    srcs = ["include/spirv/unified1/extinst.arm.experimental-ml-operations.grammar.json"],
+)
+
 cc_library(
     name = "spirv_common_headers",
     hdrs = [
@@ -152,6 +157,7 @@ cc_library(
         "include/spirv/1.1/OpenCL.std.h",
         "include/spirv/1.2/GLSL.std.450.h",
         "include/spirv/1.2/OpenCL.std.h",
+        "include/spirv/unified1/ArmExperimentalMLOperations.h",
         "include/spirv/unified1/ArmMotionEngine.100.h",
         "include/spirv/unified1/GLSL.std.450.h",
         "include/spirv/unified1/NonSemanticClspvReflection.h",
diff --git a/include/spirv/unified1/ArmExperimentalMLOperations.h b/include/spirv/unified1/ArmExperimentalMLOperations.h
new file mode 100644
index 0000000..64b0e70
--- /dev/null
+++ b/include/spirv/unified1/ArmExperimentalMLOperations.h
@@ -0,0 +1,26 @@
+// SPDX-FileCopyrightText: 2025 Arm Ltd.
+// SPDX-License-Identifier: MIT
+
+#ifndef SPIRV_UNIFIED1_ArmExperimentalMLOperations_H_
+#define SPIRV_UNIFIED1_ArmExperimentalMLOperations_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+enum {
+    ArmExperimentalMLOperationsRevision = 1,
+    ArmExperimentalMLOperationsRevision_BitWidthPadding = 0x7fffffff
+};
+
+enum ArmExperimentalMLOperationsInstructions {
+    ArmExperimentalMLOperationsCALL = 0,
+    ArmExperimentalMLOperationsInstructionsMax = 0x7fffffff
+};
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // SPIRV_UNIFIED1_ArmExperimentalMLOperations_H_
diff --git a/include/spirv/unified1/extinst.arm.experimental-ml-operations.grammar.json b/include/spirv/unified1/extinst.arm.experimental-ml-operations.grammar.json
new file mode 100644
index 0000000..169dfe9
--- /dev/null
+++ b/include/spirv/unified1/extinst.arm.experimental-ml-operations.grammar.json
@@ -0,0 +1,25 @@
+{
+  "copyright": [
+    "SPDX-FileCopyrightText: 2025 Arm Ltd.",
+    "SPDX-License-Identifier: MIT"
+  ],
+  "revision": 1,
+  "instructions": [
+    {
+      "opname": "CALL",
+      "opcode": 0,
+      "operands": [
+        {
+          "kind": "LiteralInteger",
+          "name": "Opcode"
+        },
+        {
+          "kind": "IdRef",
+          "quantifier": "*",
+          "name": "Parameters"
+        }
+      ]
+    }
+  ],
+  "operand_kinds": []
+}
diff --git a/tools/buildHeaders/bin/makeExtinstHeaders.py b/tools/buildHeaders/bin/makeExtinstHeaders.py
index 1c9fbfd..863fca1 100755
--- a/tools/buildHeaders/bin/makeExtinstHeaders.py
+++ b/tools/buildHeaders/bin/makeExtinstHeaders.py
@@ -32,3 +32,4 @@ mk_extinst('NonSemanticVkspReflection', 'extinst.nonsemantic.vkspreflection.gram
 mk_extinst('TOSA', 'extinst.tosa.001000.1.grammar.json', 'TOSA.001000.1')
 mk_extinst('ArmMotionEngine', 'extinst.arm.motion-engine.100.grammar.json', 'ArmMotionEngine.100')
 mk_extinst('NonSemanticGraphDebugInfo', 'extinst.nonsemantic.graph.debuginfo.grammar.json')
+mk_extinst('ArmExperimentalMLOperations', 'extinst.arm.experimental-ml-operations.grammar.json')
-- 
2.54.0

