Name Strings
SPV_AMD_gpu_shader_half_float
Contact
See Issues list in the Khronos SPIRVHeaders repository: https://github.com/KhronosGroup/SPIRVHeaders
Contributors

Dominik Witczak, AMD

Rex Xu, AMD

Qun Lin, AMD

Daniel Rakos, AMD

Donglin Wei, AMD

Graham Sellers, AMD
Notice
Copyright (c) 2016 The Khronos Group Inc. Copyright terms at http://www.khronos.org/registry/speccopyright.html
Status
Proposed.
Version
Modified Date: June 22, 2017 Revision: 2
Dependencies
This extension is written against Revision 1 of the version 1.10 of the SPIRV Specification.
The extension is written against Revision 1 of the OpenGL extension AMD_gpu_shader_half_float.
Overview
This extension is written to provide the functionality of the AMD_gpu_shader_half_float, OpenGL Shading Language Specification extension, for SPIRV.
This extension introduces 16bit floating point support to extended instructions described in the GLSL.std.450 extended instruction set.
Extension Name
To enable SPV_AMD_gpu_shader_half_float extension in SPIRV, use
OpExtension "SPV_AMD_gpu_shader_half_float"
Summary
This extension adds support for 16bit floatingpoint component types for the following instructions described in the GLSL.std.450 extended instruction set:
Acos
Acosh
Asin
Asinh
Atan2
Atanh
Asin
Atan
Cos
Cosh
Degrees
Exp
Exp2
InterpolateAtCentroid
InterpolateAtSample
InterpolateAtOffset
Log
Log2
Pow
Radians
Sin
Sinh
Tan
Tanh
Modifications to the OpenGL Shading Language 4.50 Extended Instruction Set Specification, Version 1.00
Modify Section 2, Binary Form
Acos
(Replace the following sentence:)
The operand x must be a scalar or vector whose component type is 32bit floatingpoint.
(with:)
The operand x must be a scalar or vector whose component type is 16 or 32bit
floatingpoint.
Acosh
(Replace the following sentence:)
The operand x must be a scalar or vector whose component type is 32bit floatingpoint.
(with:)
The operand x must be a scalar or vector whose component type is 16 or 32bit
floatingpoint.
Asin
(Replace the following sentence:)
The operand x must be a scalar or vector whose component type is 32bit floatingpoint.
(with:)
The operand x must be a scalar or vector whose component type is 16 or 32bit
floatingpoint.
Asinh
(Replace the following sentence:)
The operand x must be a scalar or vector whose component type is 32bit floatingpoint.
(with:)
The operand x must be a scalar or vector whose component type is 16 or 32bit
floatingpoint.
Atan
(Replace the following sentence:)
The operand y_over_x must be a scalar or vector whose component type is 32bit floatingpoint.
(with:)
The operand y_over_x must be a scalar or vector whose component type is 16 or 32bit
floatingpoint.
Atan2
(Replace the following sentence:)
The operand x and y must be a scalar or vector whose component type is 32bit floatingpoint.
(with:)
The operand x and y must be a scalar or vector whose component type is 16 or 32bit
floatingpoint.
Atanh
(Replace the following sentence:)
The operand x must be a scalar or vector whose component type is 32bit floatingpoint.
(with:)
The operand x must be a scalar or vector whose component type is 16 or 32bit
floatingpoint.
Cos
(Replace the following sentence:)
The operand x must be a scalar or vector whose component type is 32bit floatingpoint.
(with:)
The operand x must be a scalar or vector whose component type is 16 or 32bit
floatingpoint.
Cosh
(Replace the following sentence:)
The operand x must be a scalar or vector whose component type is 32bit floatingpoint.
(with:)
The operand x must be a scalar or vector whose component type is 16 or 32bit
floatingpoint.
Degrees
(Replace the following sentence:)
The operand degrees must be a scalar or vector whose component type is 32bit floatingpoint.
(with:)
The operand degrees must be a scalar or vector whose component type is 16 or 32bit
floatingpoint.
Exp
(Replace the following sentence:)
The operand x must be a scalar or vector whose component type is 32bit floatingpoint.
(with:)
The operand x must be a scalar or vector whose component type is 16 or 32bit
floatingpoint.
Exp2
(Replace the following sentence:)
The operand x must be a scalar or vector whose component type is 32bit floatingpoint.
(with:)
The operand x must be a scalar or vector whose component type is 16 or 32bit
floatingpoint.
InterpolateAtCentroid
(Replace the following sentence:)
The operand interpolant must be a pointer to a scalar or vector whose component type is 32bit floatingpoint.
(with:)
The operand interpolant must be a pointer to a scalar or vector whose component type is 16 or
32bit floatingpoint.
InterpolateAtSample
(Replace the following sentence:)
The operand interpolant must be a pointer to a scalar or vector whose component type is 32bit floatingpoint.
(with:)
The operand interpolant must be a pointer to a scalar or vector whose component type is 16 or
32bit floatingpoint.
InterpolateAtOffset
(Replace the following sentence:)
The operand interpolant must be a pointer to a scalar or vector whose component type is 32bit floatingpoint.
(with:)
The operand interpolant must be a pointer to a scalar or vector whose component type is 16 or
32bit floatingpoint.
(Replace the following sentence:)
The offset operand must be a vector of 2 components of 32bit floatingpoint type.
(with:)
The offset operand must be a vector of 2 components of 16 or 32bit floatingpoint type.
Log
(Replace the following sentence:)
The operand x must be a scalar or vector whose component type is 32bit floatingpoint.
(with:)
The operand x must be a scalar or vector whose component type is 16 or 32bit
floatingpoint.
Log2
(Replace the following sentence:)
The operand x must be a scalar or vector whose component type is 32bit floatingpoint.
(with:)
The operand x must be a scalar or vector whose component type is 16 or 32bit
floatingpoint.
Pow
(Replace the following sentence:)
The operand x and y must be a scalar or vector whose component type is 32bit floatingpoint.
(with:)
The operand x and y must be a scalar or vector whose component type is 16 or
32bit floatingpoint.
Radians
(Replace the following sentence:)
The operand degrees must be a scalar or vector whose component type is 32bit floatingpoint.
(with:)
The operand degrees must be a scalar or vector whose component type is 16 or 32bit
floatingpoint.
Sin
(Replace the following sentence:)
The operand x must be a scalar or vector whose component type is 32bit floatingpoint.
(with:)
The operand x must be a scalar or vector whose component type is 16 or 32bit
floatingpoint.
Sinh
(Replace the following sentence:)
The operand x must be a scalar or vector whose component type is 32bit floatingpoint.
(with:)
The operand x must be a scalar or vector whose component type is 16 or 32bit
floatingpoint.
Tan
(Replace the following sentence:)
The operand x must be a scalar or vector whose component type is 32bit floatingpoint.
(with:)
The operand x must be a scalar or vector whose component type is 16 or 32bit
floatingpoint.
Tanh
(Replace the following sentence:)
The operand x must be a scalar or vector whose component type is 32bit floatingpoint.
(with:)
The operand x must be a scalar or vector whose component type is 16 or 32bit
floatingpoint.
Validation Rules
None.
Issues
None
Revision History
Rev  Date  Author  Changes 

2 
June 22, 2017 
Dominik Witczak 
Removed incorrect language regarding accessing the new functionality. 
1 
September 21, 2016 
Dominik Witczak 
Initial revision based on AMD_gpu_shader_half_float. 