Version 1

Contact

To report problems with this extended instruction set, please open a new issue at:

Contributors

  • Kévin Petit, Arm Ltd.

  • Jan-Harald Fredriksen, Arm Ltd.

  • Derek Lamberti, Arm Ltd.

  • Davide Grohmann, Arm Ltd.

Notice

Copyright (c) 2022-2026 Arm Ltd.

Status

Draft.

Version

Last Modified Date

2026-05-15

Revision

1

Dependencies

This instruction set requires SPIR-V 1.0.

This instruction set requires SPV_KHR_non_semantic_info.

This instruction set requires SPV_ARM_graph.

1. Introduction

This document specifies the NonSemantic.Graph.DebugInfo extended instruction set. This instruction set can be used to record information about the higher-level graph representation a SPIR-V graph was produced from.

Import this extended instruction set using an OpExtInstImport NonSemantic.Graph.DebugInfo.<ver> instruction, where <ver> indicates the version.

2. Version

This extended instruction set is versioned. The version is specified via the import string. It must be an integer between 1 and the version specified at the beginning of this instruction set. Differences between the version are specified below.

3. Binary Form

The return type for all instructions must be OpTypeVoid.

None of the instructions support forward references in their operands.

Instructions

DebugGraph

Describe a graph.

Graph must be an OpGraphARM.

Name must be an OpString specifying the name of the graph as it appears in the source format.

7

12

<id>
Result Type

Result
<id>

<id>
Set

1

<id>
Graph

<id>
Name

DebugOperation

Describe an operation.

DebugGraph must be an the Result Id of a DebugGraph instruction specifying the graph the operation is a part of.

Name must be an OpString specifying the name of the operation.

Instructions must be the Result Id of instructions within the graph described by DebugGraph.

8+

12

<id>
Result Type

Result
<id>

<id>
Set

2

<id>
DebugGraph

<id>
Name

<id>, <id>, …​
Instructions

DebugTensor

Describe a tensor.

Tensor must be an <id> of a value whose type is OpTypeTensorARM or a composite type whose top-level constituents all are of OpTypeTensorARM type. If Tensor is a composite, then Index must be present.

Name must be an OpString specifying the name of the tensor.

Index must be a 32-bit unsigned integer and must come from a constant instruction. When Index is present, Tensor must be a value of composite type and Index specifies the individual constituent being described.

7+

12

<id>
Result Type

Result
<id>

<id>
Set

3

<id>
Tensor

<id>
Name

Optional <id>
Index

Issues

1) Why is this a separate instruction set and not included in NonSemantic.Shader.DebugInfo?

RESOLVED: Graphs are still a fairly new construct and currently defined by a vendor extension. A separate instruction set allows for greater freedom of exploration and makes it easier to deprecate and/or remove functionality in the future with a lower impact on the users of NonSemantic.Shader.DebugInfo.

Revision History

Rev Date Author Changes

1

2026-05-15

Kevin Petit

Initial revision