Name Strings
SPV_ALTERA_fpga_latency_control
Contact
To report problems with this extension, please open a new issue at:
Contributors
Shuo Niu, Intel
Notice
Copyright (c) 2022 Intel Corporation. All rights reserved.
Status
Final Draft
Version
Last Modified Date |
2022-11-28 |
Revision |
1 |
Dependencies
This extension is written against the SPIR-V Specification, Version 1.6 Revision 2.
This extension requires SPIR-V 1.0.
This extension specifies interaction with the SPV_ALTERA_blocking_pipes extension.
Overview
This extension adds two decorations to represent latency controls on the pointer accessed by load, store, pipe read and pipe write instructions.
The behavior is implementation-defined if the combination of constraints specified by the decorations cannot be satisfied. For example, if one constraint specifies instruction A should be scheduled after instruction B, while another constraint specifies instruction B should be scheduled after instruction A then that set of constraints is unsatisfiable.
Extension Name
To use this extension within a SPIR-V module, the following OpExtension must be present in the module:
OpExtension "SPV_ALTERA_fpga_latency_control"
New Capabilities
This extension introduces a new capability:
FPGALatencyControlALTERA
New Decorations
Decorations added under the FPGALatencyControlALTERA capability:
LatencyControlLabelALTERA LatencyControlConstraintALTERA
Token Number Assignments
FPGALatencyControlALTERA |
6171 |
LatencyControlLabelALTERA |
6172 |
LatencyControlConstraintALTERA |
6173 |
Modifications to the SPIR-V Specification, Version 1.6
Decoration
Modify Section 3.20, Decoration, adding these rows to the Decoration table:
| Decoration | Extra Operands | Enabling Capabilities | |||
|---|---|---|---|---|---|
6172 |
LatencyControlLabelALTERA Latency Label is a 32-bit signed integer type scalar that labels the labeled instruction so that it may be referred to in LatencyControlConstraintALTERA decorations. |
Literal Number |
FPGALatencyControlALTERA |
||
6173 |
LatencyControlConstraintALTERA Relative To, Control Type, and Relative Cycle constrain the cycle on which the constrained instruction can be scheduled. Relative To is a 32-bit signed integer type scalar that identifies the labeled instruction relative to which the constrained instruction associated with this decoration is being constrained. It corresponds to the Latency Label operand of a LatencyControlLabelALTERA decoration. Relative Cycle is a 32-bit signed integer type scalar whose meaning depends on Control Type. Control Type is a 32-bit signed integer type scalar that represents the type of the constraint. If Control Type is equal to 1, it indicates that the latency between the labeled instruction and the constrained instruction should be exactly Relative Cycle cycles. If Control Type is equal to 2, it indicates that the latency between the labeled instruction and the constrained instruction should be at most Relative Cycle cycles. If Control Type is equal to 3, it indicates that the latency between the labeled instruction and the constrained instruction should be at least Relative Cycle cycles. |
Literal Number |
Literal Number |
Literal Number |
FPGALatencyControlALTERA |
Note that both of these decorations are ignored for target devices that are not FPGA.
Capability
Modify Section 3.31, Capability, adding a row to the Capability table:
| Capability | Implicitly Declares | |
|---|---|---|
6171 |
FPGALatencyControlALTERA |
|
Issues
None.
Revision History
| Rev | Date | Author | Changes |
|---|---|---|---|
1 |
2022-11-28 |
Shuo Niu |
Initial public release |