Revision history for SPIRV-Tools

v2018.2 2018-03-07
 - General:
   - Support SPIR-V 1.3 and Vulkan 1.1.
     - Default target environment is now SPIR-V 1.3.  For command-line tools,
       use the --target-env option to override the default.  Examples:
	  # Generate a SPIR-V 1.0 binary instead of SPIR-V 1.3
	  spirv-as --target-env spv1.0 a.spvasm -o a.spv
	  spirv-as --target-env vulkan1.0 a.spvasm -o a.spv
	  # Validate as Vulkan 1.0
	  spirv-val --target-env vulkan1.0 a.spv
   - Support SPV_GOOGLE_decorate_string and SPV_GOOGLE_hlsl_functionality1
 - Fixes:
   - Fix Android.mk build. Compilation was failing due to missing definitions of
     SpvCapabilityFloat16ImageAMD and other enumerated values.
   - Optimizer: Avoid generating duplicate names when merging types.
   - #1375: Validator: SPV_AMD_gpu_shaer_half_float implicitly allows declaration
     of the 16-bit floating point type.
   - #1376: Optimizer: Avoid folding half-precision float.

v2018.1 2018-03-02
 - General:
   - Support Visual Studio 2013 again. (Continue support for VS 2015 and VS 2017.)
   - Support building SPIRV-Tools as a shared library.
   - Improve the HLSL legalization optimization recipe. #1311
 - Optimizer:
   - General speedups.
   - Remove generic dead code elimination functionality from transforms:
       --eliminate-local-single-block
       --eliminate-local-single-store
       --eliminate-local-multi-store
     To recover the previous behaviour, a recipe using those transforms should now
     also invoke the --eliminate-dead-code-aggressive transform.
   - Improve folding, including coverage for floating point, OpSelect, and arithmetic
     with non-trivial constant operands.
   - Add loop-invariant code motion pass.
   - Add loop-unrolling pass, for honouring unroll hits.
   - Add loop-unswitch pass.
   - Add instruction simplification pass.
   - Aggressive dead code elimination: Understands capability hierarchy when finding
     instructions it can eliminate (combinators). (PR #1268)
   - CCP can now fold floating point arithmetic. #1311
 - Validator:
   - Validate barrier instructions.
   - Check Vulkan-specific rules for atomics.
   - Check Vulkan prohibition of Location or Component decorations on BuiltIn variables.
 - Linker:
   - Add --verify-ids option
   - Add option to allow a resulting module to be partially linked.
   - Handle OpModuleProcessed (instructions in SPIR-V layout section 7c)
 - Fixes:
   - #1265: Optimizer: Fix use-after free bug in if-conversion. (Fix object lifecycle bug
     in type manager.)
   - #1282: Fix new warnings found by GCC 8.0.1.
   - #1285: Optimizer: Fix random failures during inlining.  (Dangling references in DefUseManager)
   - #1295: Optimizer: Fix incorrect handling of Phi nodes in CCP.
   - #1300: Fix CCP: avoid bad CCP transitions and unsettled values.
   - #1304: Avoid static-duration variables of class type (with constructors).
   - #1323: Fix folding of an insert composite feeding a composite extract.
   - #1339: Fix CCP: Handle OpConstantNull boolean values as conditions.
   - #1341: DCEInst: Keep atomic instructions (and some others with side effects).
   - #1354: Don't fold integer division.
   - #1357: Support OpConstantNull in folding.
   - #1361: CCP: Fix handling of non-constant module-scope values

v2018.0 2018-02-02
 - General
   - VisualStudio 2013 is no longer supported.  VisualStudio 2015 is supported.
   - Use "include/unified1" directory from SPIRV-Headers.  Requires recent SPIRV-Headers source.
 - Disassembler: spirv-dis adds --color option to force color disassembly.
 - Optimizer:
   - Add pass to eliminate dead insertions.
   - Aggressive dead code elimination now removes OpSwitch constructs.
   - Block merging occurs in more cases.
   - Add driver workaround transform: replace OpUnreachable with harmless branch to merge.
   - Improve instruction folding framework.
   - Add loop analysis.
   - Add scalar replacement of aggregates to size-optimization recipe.
   - Add pass to replace instructions invalid for a shader stage, with a harmless value.
     This changes the semantics of the program!  Not for general use!
   - Rearragne and add passes to performance-optimization recipe, to produce better results.
 - Validator:
   - Validate OpenCL extended instructions.
   - Shaders can't perform atomics on floats.
   - Validate memory semantics values in atomics.
   - Validate instruction-adjacency constraints, e.g. OpPhi predecessors, merge instructions
     immediately precede branches.
 - Fixes:
   - PR 1198: Optimizer: Fix CCP in presence of matrix constants.
   - #1199: Optimizer: Fix CCP: don't propagate spec constants.
   - #1203: Optimizer: Fix common uniform elim bug introduced by refactoring.
   - #1210: Optimizer: Aggressive dead code elimination: Fix 'break' identification.
   - #1212: Optimizer: Aggressive dead code elimination: Was skipping too many instructions.
   - #1214: Optimizer: Aggressive dead code elimination: Fix infinite loop.
   - #1228: Optimizer: Fix CCP: Handling of varying Phi nodes; was resulting in infinite loop.
   - #1245: Optimizer: Dead branch elimination: Avoid a null pointer dereference.
   - #1250: Optimizer: Dead branch elimination: Avoid spuriously reporting a change.

v2017.3 2018-01-12
 - General:
   - Support DebugInfo extended instruction set, targeted at OpenCL environments.
     See the SPIR-V Registry.
   - Generate a SPIRV-Tools.pc file for pkg-config.
 - Optimizer:
   - Progress for legalization of code generated from HLSL (issue #1118):
     - Add --legalize-hlsl option to run transforms used to transform intermediate
       code generated by HLSL to SPIR-V for Vulkan compilers.  Those compilers
       normally run these transforms automatically.  This option is used for developing
       those transforms.
     - Add Private-to-Function variable conversion for modules with logical
       addressing.
   - Add --ccp: SSA Conditional Constant Propagation (CCP)
   - Add --print-all to show disassembly for each optimization pass.
   - Internal: Add loop descriptors and post-order tree iterator.
   - Generalized dead branch elimination
   - Aggressive dead code elimination (ADCE) now removes dead functions and
     module-scope variables.
   - Vector extract/insert elimination now optimizes through some cases of
     VectorShuffle, and GLSL.std.450 Mix extended instruction.
 - Validator:
   - Add validation for GLSL.std.450 extended instruction set.
   - Check out of bounds composite accesses, where that's statically computable.
     Fixes #1112.
   - Check upper bits of literal numbers that aren't a multiple of 32-bits wide.
   - More validation of primitive instructions
   - Add optional "relaxed" checking logical addressing mode to permit some
     cases of pointer-to-pointer.  Contributes to HLSL legalization (issue #1118).
 - Fixes:
   #1100: Validator: Image operand Sample can be used with OpImageSparseFetch,
     OpImageSparseRead.
   #1108: Remove duplicates transform was incorrectly removing non-duplicate
     decorations.
   #1111: Optimizer's type manager could reference deleted memory.
   #1112: Fix decoration equality check, e.g. it is now symmetric.
   #1129: Validator now disallows Dim=SupbassData for OpImageSparseRead.
   #1143: Fix CCP: Was generating incorrect code for loops.
   #1153: Fix CCP crash.
   #1154: Optimizer's internal instruction-to-block mappings were sometimes
       inconsistent.
   #1159: Fix CCP infinite loop.
   #1168: Fix dead branch elimination intermittently generating incorrect code.
       Fixes https://github.com/KhronosGroup/glslang/issues/1205
   #1186: Fix validation of PackDouble2x32 and UnpackDouble2x32

v2017.2 2017-12-15
 - General:
   - Support OpenCL 1.2, 2.0 target environments, including embedded profiles
   - Add CONTRIBUTING.md
   - Fix exit status code for spirv-link
   - Disassember: Enable emitting ANSI colour codes to a string
   - Library avoids polluting global namespace.  The libraries can export C and C++
     symbols starting with "spv", or in a C++ namespace.  Add a test for this.
   - Linux release builds include debug information, for easier profiling
   - Build bots no longer test VisualStudio 2013
     - Testing dependency RE2 requires VisualStudio 2015 or later
   - Build bots check code formatting
 - Optimizer:
   - Add --skip-validation to spirv-opt
   - Add dominance tree analysis
   - Add generic value propagation engine
   - Add global redundancy elimination within a function
   - Add scalar replacement of function-scope variables of composite type
   - Aggressive dead code elimination: Remove empty loops
   - Killing an instruction notifies the IRContext
   - IRContext::KillInst deletes the instruction
   - Move CFG analysis to IRContext
   - Add constant manager
   - Fix: Don't consider derivative instructions as combinators.
   - Fix: Don't delete an instruction twice in local dead-code-elimination
   - Fix: Don't consider derivative instructions as combinators.
 - Validator:
   - Finish checking of image instructions (Section 3.32.10)
     - Check sparse image instructions
     - Check OpTypeImage, OpTypeSampleImage
   - Check composite instructions (Section 3.32.12)
   - Check atomic instructions (Section 3.32.18)
   - Check OpEmitStreamVertex, OpEndStreamPrimitive instructions
   - Re-enable validation of OpCopyObject
   - OpKill, image ImplicitLod and QueryLod instructions can only be used in Fragment
     shaders.
   - Fixes for image instruction validation:
     - Lod image operand only usable with ExplicitLod and OpImageFetch
     - ExplicitLod Lod image operand must be float scalar
     - OpImageFectch Lod image operand must be int scalar
     - OpImageGather component operand must be 32-bits (integer scalar)
     - OpImageQuerySizeLod Lod must be integer scalar
 - Fixes:
   #622: Remove names and decorations when inlining
   #989: Aggressive dead code elim: Don't optimize away live breaks from a loop
   #991: Fix validation of SPV_AMD_shader_ballot
   #1004: Use after free of an instruction, in remove-duplicates transform
   #1007: OpImageRead not required to return 4-component vector
   #1009: OpImageRead can return scalar int/float types
   #1011: OpImageWrite should allow scalar int/float texel types
   #1012: Fix validat Dref type check
   #1017: Load-store elimination considers variable initializations
   #1034: Fix Windows debug build: operator< should be a weak ordering
   #1083: Inlining: Set parent (function) for each inlined basic block.
   #1075: Aggressive dead code elimination: Was leaving dangling references to
     removed blocks.

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
