Revision history for SPIRV-Tools

v2017.1 2017-11-23
 - Update README with details on the public_spirv_tools_dev@khronos.org mailing list.
 - General:
   - Automatically deploy built artifacts to GitHub Releases
   - Add a Linker (module combiner). Under development.
   - Add Android.mk for Android NDK builds.
   - Add the 'effcee' library as an optional dependency for use in tests.
     Eventually it will be a required dependency, once downstream projects have
     a chance to adjust.  Requires 're2' library.
   - Avoid static-duration variables of class type (with constructors).
   - Hack around bugs in gcc-4.8.1 template handling
   - Faster opcode lookup
 - Validator:
   - Recognize extensions listed on SPIR-V registry,
     through #25 SPV_AMD_shader_fragment_mask
   - Validator issues an info message when it sees an unrecognized extension.
   - Type check basic arithmetic operations
   - Type check carry/extended arithmetic operations
   - Type check vector arithmetic operations
   - Type check Relational and Logical instructions
   - Type check Bit instructions
   - Check type uniqueness rules
   - Check conversion instructions
   - Check image instructions
   - Check derivative instructions
   - Check OpVectorShuffle
   - Check OpBranchConditional
   - OpModuleProcessed is only allowed after debug names section and before annotations
     section.
   - Checks the right kind of return is called for each function (void or non-void).
   - Add option to relax type check when storing structs (--relax-store-struct)
 - Optimizer:
   - Refactoring internal representation of the module, including:
     - IRContext: owns a module and manages analyses
     - Instructions are owned by intrusive lists, and have unique IDs
     - BasicBlock owns its instruction list.
     - DefUseManager: change representation of uses, for faster processing
       on large modules.
   - Add high level recipes: -O, -Os, and -Oconfig
     Recipes for -O and -Os are under development.
   - Add eliminate-dead-function transform
   - Add strength reduction transform: For now, convert multiply by power of 2
     to a bit shift.
   - Add CFG cleanup transform
   - Add removal of dead module-scope variables
   - Add merge-return transform for modules without structured control flow
   - Add redundancy elimination within a basic block (local value numbering)
   - Extract-insert elimination:
     - Recognize the case where the first instruction in the sequence is an
       OpCompositeConstruct or OpConstantComposite
     - Handle some cases of nested structs
   - Dead branch elimination now can eliminate entire selection constructs
     when all arms are dead.
 - Compressing codec:
   - Updated algorithm to 1.01, 1.02, 1.03
   - Not built by default.  Use -DSPIRV_BUILD_COMPRESSION=ON to build.
   - Codec can be parameterized by a customized model.
 - Fixes:
   #728: Fix decoration of inlined functions
   #798: spirv-as should fail when given unrecognized long option
   #800: Inliner: Fix inlining function into header of multi-block loop
   #824: Eliminate-local-multi-store: Fix a crash
   #826: Elimiante-local-multi-store: Fix a crash
   #827: Fix crash when compact-ids transform runs before another transform.
   #834: Add Cmake option to build the compressing codec. Off by default.
   #911: Fix classification of Line and NoLine instructions

v2017.0 2017-09-01
 - Update README to describe that assembler, disassembler, and binary parser support
   are based on grammar files from the SPIRV-Headers repository.

v2016.7 2017-09-01
 - Add SPIR-V 1.2
 - OpenCL 2.2 support is now based on SPIR-V 1.2
 - Support AMD extensions in assembler, disassembler:
    SPV_AMD_gcn_shader
    SPV_AMD_shader_ballot
    SPV_AMD_shader_explicit_vertex_parameter
    SPV_AMD_shader_trinary_minmax
    SPV_AMD_gpu_shader_half_float
    SPV_AMD_texture_gather_bias_lod
    SPV_AMD_gpu_shader_int16
 - Optimizer: Add support for:
   - Inline all function calls in entry points.
   - Flatten decoration groups.  Fixes #602
   - Id compaction (minimize Id bound).  Fixes #624
   - Eliminate redundant composite insert followed by extract
   - Simplify access chains to local variables
   - Eliminate local variables with a single store, if possible
   - Eliminate local variables with a several stores, if possible
   - Eliminate loads and stores in same block to local variables
   - Eliminate redundant insert/extract to composite values
   - Aggressive dead instruction elimination
   - Eliminate dead branches
   - Merge blocks when the second can only be preceded by the first
   - Eliminate ommon uniform loads
 - Assembler: Add option to preserve numeric ids. Fixes #625
 - Add build target spirv-tools-vimsyntax to generate spvasm.vim, a SPIR-V
   assembly syntax file for Vim.
 - Version string: Allow overriding of wall clock timestamp with contents
   of environment variable SOURCE_DATE_EPOCH.
 - Validator implements relaxed rules for SPV_KHR_16bit_storage.
 - CMake installation rules use GNUInstallDirs.  For example, libraries
   will be installed into a lib64 directory if that's the norm for the
   current system.
 - Fixes:
   #500: Parameterize validator limit checks
   #508: Support compilation under CYGWIN
   #517: Fix validation when continue (or case) contstruct is also the head of a
     nested control construct.
   #551: If a merge block is reachable, it must be *strictly* dominated by its
     header.
   #548: Validator: Error when the reserved OpImageSparseSampleProj* opcodes
     are used.
   #611: spvtools::Optimizer was failing to save the module to the output
     binary vector when all passes succeded without changes.
   #629: The inline-entry-points-all optimization could generate invalidly
     structured code when the inlined function had early returns.
   #697: Optimizer's Instruction::ForEachInId method was skipping semantics-id
     and scope-id.
   #755: Inliner: Fix inlining of callee with single Return appearing before
     the end of the function.
   #776: Fix dead branch elimination in presence of complex but dead control
     flow.
   #781: SPV_KHR_variable_pointers allows duplicate pointer types
   #782: Inliner: Fix remapping of non-label forward references in callee
   #787: Inliner: Fix remapping of inlined entry block when called from
     single block loop.
   #790: Inliner: Fix remapping of inlined entry block when callee has
     multiple returns.

v2016.6 2016-12-13
 - Published the C++ interface for assembling, disassembling, validation, and
   optimization.
 - Support SPV_KHR_shader_draw_parameters in assembler, disassembler, parser.
 - Validator:
   - Add validator API accepting raw binary words
   - Increased coverage:
     - Checks "Data rules" in Universal Validation Rules, section 2.16.1
     - WIP: Universal Limits.
       - The minimum mandated upper bounds are checked.
       - TODO: Parameterize the validator to allow larger limits accepted by
         a more than minimally capable implementation.
   - OpSampledImage checks
   - OpConstantComposite checks
   - Id bound check
 - Disasssembler:
   - Generates friendly GLSL-based names for more builtin variables
   - Generates friendly names for numeric OpConstant values
   - Vendor tool info extracted from SPIR-V XML registry file.
 - Fixes issues:
   #429: Validator: Allow OpTypeForwardPointer and OpTypeStruct to reference
     undefined IDs
   #482: Validator: OpVariable initializer can be an ID of a module-scope variable

v2016.5 2016-09-16
 - Support SPV_KHR_shader_ballot in assembler, disassembler, parser.
 - Disassembler: Generate friendly names for built-in variables.
 - Partial fixes:
   #359: Add Emacs helper for automatically diassembling/assembling a SPIR-V
     binary on file load/save.
 - Fixes:
   #414: Validator: Allow OpUndef for composite constants
   #415: Validator: Phi can use its own value in some cases.

v2016.4 2016-09-01
 - Relicensed under Apache 2.0
 - Add optimization passes (in API and spirv-opt command)
   - Fold spec constants defined with OpSpecConstantOp and
       OpSpecConstantComposite to normal constants with fixed value(s).
 - Fixes issues:
   #318: Relicensed under Apache 2.0

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
