// Copyright (c) 2019-2020 Khronos Group.
//
// SPDX-License-Identifier: CC-BY-4.0

include::{generated}/meta/{refprefix}VK_KHR_shader_integer_dot_product.txt[]

=== Other Extension Metadata

*Last Modified Date*::
    2021-06-16
*Interactions and External Dependencies*::
  - This extension requires
    {spirv}/KHR/SPV_KHR_integer_dot_product.html[`SPV_KHR_integer_dot_product`].
  - This extension interacts with `apiext:VK_KHR_shader_float16_int8`.
*IP Status*::
    No known IP claims.
*Contributors*::
  - Kévin Petit, Arm Ltd.
  - Jeff Bolz, NVidia
  - Spencer Fricke, Samsung
  - Jesse Hall, Google
  - John Kessenich, Google
  - Graeme Leese, Broadcom
  - Einar Hov, Arm Ltd.
  - Stuart Brady, Arm Ltd.
  - Pablo Cascon, Arm Ltd.
  - Tobias Hector, AMD
  - Jeff Leger, Qualcomm
  - Ruihao Zhang, Qualcomm
  - Pierre Boudier, NVidia
  - Jon Leech, The Khronos Group
  - Tom Olson, Arm Ltd.

=== Description

This extension adds support for the integer dot product SPIR-V instructions
defined in SPV_KHR_integer_dot_product.
These instructions are particularly useful for neural network inference and
training but find uses in other general purpose compute applications as
well.

include::{generated}/interfaces/VK_KHR_shader_integer_dot_product.txt[]

=== New SPIR-V Capabilities

  * <<spirvenv-capabilities-table-DotProductInputAllKHR,DotProductInputAllKHR>>
  * <<spirvenv-capabilities-table-DotProductInput4x8BitKHR,DotProductInput4x8BitKHR>>
  * <<spirvenv-capabilities-table-DotProductInput4x8BitPackedKHR,DotProductInput4x8BitPackedKHR>>
  * <<spirvenv-capabilities-table-DotProductKHR,DotProductKHR>>

=== Version History

  * Revision 1, 2021-06-16 (Kévin Petit)
    - Initial revision
