SPIRV-Tools/CHANGES
qining 380f36eae1 Fold spec constants to normal constants (values fixed)
For the spec constants defined by OpSpecConstantOp and
OpSpecContantComposite, if all of their operands are constants with
determined values (normal constants whose values are fixed), calculate
the correct values of the spec constants and re-define them as normal
constants.

In short, this pass replaces all the spec constants defined by
OpSpecContantOp and OpSpecConstantComposite with normal constants when
possible. So far not all valid operations of OpSpecConstantOp are
supported, we have several constriction here:

1) Only 32-bit integer and boolean (both scalar and vector) are
supported for any arithmetic operations. Integers in other width (like
64-bit) are not supported.
2) OpSConvert, OpFConvert, OpQuantizeToF16, and all the
operations under Kernel capability, are not supported.
3) OpCompositeInsert is not supported.

Note that this pass does not unify normal constants. This means it is
possible to have new generatd constants defining the same values.
2016-08-29 08:58:53 -04:00

78 lines
3.3 KiB
Plaintext

Revision history for SPIRV-Tools
v2016.4-dev 2016-08-24
- Add optimization passes (in API and spirv-opt command)
- Fold spec constants defined with OpSpecConstantOp and
OpSpecConstantComposite to normal constants with fixed value(s).
v2016.3 2016-08-24
- Add target environment enums for OpenCL 2.1, OpenCL 2.2,
OpenGL 4.0, OpenGL 4.1, OpenGL 4.2, OpenGL 4.3, OpenGL 4.5.
- Add spirv-cfg, an experimental tool to dump the control flow graph
as a GraphiViz "dot" graph
- Add optimization pass: Eliminate dead constants.
- Add spirv-lesspipe.sh filter utility
- Fixes issues:
#288: Check def-use dominance rules for OpPhi (variable,parent) operands
#339: Allow OpUndef in types-constants-global-vars section, as required
by SPIR-V 1.0 Rev7, 1.1 Rev 3.
#340: Avoid race on mkdir during build
#365: Relax PointSize, ClipDistance, CullDistance capability check in all
environments not just Vulkan 1.0.
v2016.2 2016-08-05
- Validator is incomplete
- Checks ID use block is dominated by definition block
- Add optimization passes (in API and spirv-opt command)
- Strip debug info instructions
- Freeze spec constant to their default values
- Allow INotEqual as operation for OpSpecConstantOp
- Fixes bugs:
#270: validator: crash when continue construct is unreachable
#279: validator: infinite loop when analyzing some degenerate control
flow graphs
#286: validator: don't incorrectly generate def-use error for
(variable,parent) parameters to OpPhi
#290: disassembler: never generate bare % for an identifier
#295: validator: def-use dominance check should ignore unreachable uses
#276: validator: allow unreachable continue constructs
#297: validator: allow an unreachable block to branch to a reachable
merge block
v2016.1 2016-07-19
- Fix https://github.com/KhronosGroup/SPIRV-Tools/issues/261
Turn off ClipDistance and CullDistance capability checks for Vulkan.
- The disassembler can emit friendly names based on debug info (OpName
instructions), and will infer somewhat friendly names for most types.
This is turned on by default for the spirv-dis command line tool.
- Updated to support SPIR-V 1.1 rev 2
- Input StorageClass, Sampled1D capability, and SampledBuffer capability
do not require Shader capability anymore.
v2016.0 2016-07-04
- Adds v<year>.<index> versioning, with "-dev" indicating
work in progress. The intent is to more easly report
and summarize functionality when SPIRV-Tools is incorporated
in downstream projects.
- Summary of functionality (See the README.md for more):
- Supports SPIR-V 1.1 Rev 1
- Supports SPIR-V 1.0 Rev 5
- Supports GLSL std450 extended instructions 1.0 Rev 3
- Supports OpenCL extended instructions 1.0 Rev 2
- Assembler, disassembler are complete
- Supports floating point widths of 16, 32, 64 bits
- Supports integer widths up to 64 bits
- Validator is incomplete
- Checks capability requirements in most cases
- Checks module layout constraints
- Checks ID use-definition ordering constraints,
ignoring control flow
- Checks some control flow graph rules
- Optimizer is introduced, with few available transforms.
- Supported on Linux, OSX, Android, Windows
- Fixes bugs:
- #143: OpenCL pow and pown arguments