Name Strings
SPV_VALVE_mixed_float_dot_product
Contact
To report problems with this extension, please open a new issue at:
Contributors
-
Georg Lehmann, Valve
Notice
Copyright (c) 2026, Valve Corporation
Status
-
Complete
Version
Last Modified Date |
2026-02-04 |
Revision |
1 |
Dependencies
This extension is written against the SPIR-V Specification, Version 1.6 Revision 6.
This extension requires SPIR-V 1.0.
If DotProductBFloat16AccVALVE is used, SPV_KHR_bfloat16 is required.
If DotProductFloat8AccFloat32VALVE is used, SPV_EXT_float8 is required.
Overview
This extension introduces support for dot product operations on low precision inputs with potentially higher precision accumulation. The specific types accepted as inputs are constrained by capabilities of which this extension introduces four:
-
2 component vector of 16bit float inputs with 32bit accumulation
-
2 component vector of 16bit float inputs with 16bit accumulation
-
2 component vector of bfloat16 inputs with 32bit or bfloat16 accumulation
-
4 component vector of 8bit float inputs with 32bit accumulation
Extension Name
To use this extension within a SPIR-V module, the following OpExtension must be present in the module:
OpExtension "SPV_VALVE_mixed_float_dot_product"
Modifications to the SPIR-V Specification, Version 1.6
Capabilities
Modify Section 3.2.30, "Capability", adding these rows to the Capability table (these capabilities enable specific input types):
| Capability | Implicitly declares | |
|---|---|---|
6912 |
DotProductFloat16AccFloat32VALVE |
Float16 |
6913 |
DotProductFloat16AccFloat16VALVE |
Float16 |
6914 |
DotProductBFloat16AccVALVE |
BFloat16TypeKHR |
6915 |
DotProductFloat8AccFloat32VALVE |
Float8EXT |
Instructions
Add the following new instructions:
OpFDot2MixAcc32VALVE |
Capability: |
|||||
6 |
6916 |
<id> Result Type |
<id> Vector 1 |
<id> Vector 2 |
<id> Accumulator |
|
OpFDot2MixAcc16VALVE |
Capability: |
|||||
6 |
6917 |
<id> Result Type |
<id> Vector 1 |
<id> Vector 2 |
<id> Accumulator |
|
OpFDot4MixAcc32VALVE |
Capability: |
|||||
6 |
6918 |
<id> Result Type |
<id> Vector 1 |
<id> Vector 2 |
<id> Accumulator |
|
Issues
-
How to define precision?
Leave it implementation defined, like cooperative matrix multiply-add. Precision varies across supported hardware.
Revision History
| Rev | Date | Author | Changes |
|---|---|---|---|
1 |
2026-02-04 |
Georg Lehmann |
Initial revision |