Revision history for SPIRV-Tools

v2019.4-dev 2019-05-15
 - Start v2019.4-dev

v2019.3 2019-05-14
 - General:
   - Require Python 3 since Python 2 will out of service soon.
   - Add a continuous test that does memory checks using the address sanitizer.
   - Fix the build files so the SPIRV_USE_SANITIZER=address build works.
   - Packaging top of tree build artifacts again.
   - Added support for SPIR-V 1.4. (#2550)
 - Optimizer
   - Remove duplicates from list of interface IDs in OpEntryPoint instruction (#2449)
   - Bindless Validation: Descriptor Initialization Check (#2419)
   - Add option to validate after each pass (#2462)
   - Add legalization pass to fix mismatched pointer (#2430, #2535)
   - Add error messages when the input contains unknown instructions. (#2487)
   - Add pass to convert from WebGPU Spir-V to Vulkan Spir-V and back. (#2495)
   Fixes:
   - #2412: Dead memeber elimination should not change input and output variables.
   - #2405: Fix OpDot folding of half float vectors.
   - #2391: Dead branch elim should not fold away back edges.
   - #2441: Removing decorations when doing constant propagation.
   - #2455: Maintain inst to block mapping in merge return.
   - #2453: Fix merge return in the face of breaks.
   - #2456: Handle dead infinite loops in DCE.
   - #2458: Handle variable pointer in some optimizations.
   - #2452: Fix dead branch elimination to handle unreachable blocks better.
   - #2528: Fix undefined bit shift in sroa.
   - #2539: Change implementation of post order CFG traversal.
 - Validator
   - Add validation of storage classes for WebGPU (#2446)
   - Add validation for ExecutionMode in WebGPU (#2443)
   - Implement WebGPU specific CFG validation (#2386)
   - Allow NonWritable to target struct members. (#2420)
   - Allow storage type mismatch for parameter in relaxed addressing mode.
   - Allow non memory objects as parameter in relaxed addressing mode.
   - Disallow nested Blocks and buffer blocks (#2410).
   - Add validation for SPV_NV_cooperative_matrix (#2404)
   - Add --strip-atomic-counter-memory (#2413)
   - Check OpSampledImage is only passed into valid instructions (#2467)
   - Handle function decls in Structured CFG analysis (#2474)
   - Validate that OpUnreacahble is not statically reachable (#2473)
   - Add pass to generate needed initializers for WebGPU (#2481)
   - Allow images without format for OpenCL. (#2470)
   - Remove unreachable block validation (#2525)
   - Reduce runtime of array layout checks (#2534)
   - Add validation specific to OpExecutionModeId (#2536)
   - Validate sign of int types. (#2549)
   - VK_KHR_uniform_buffer_standard_layout validation (#2562)
   Fixes:
   - #2439: Add missing DepthGreater case to Fragment only check.
   - #2168: Disallow BufferBlock on StorageBuffer variables for Vulkan.
   - #2408: Restrict and Aliased decorations cannot be applied to the same id.
   - #2447: Improve function call parameter check.
 - Reduce
   - Add Pass to remove unreferenced blocks. (#2398)
   - Allows passing options to the validator. (#2401)
   - Improve reducer algorithm and other changes (#2472)
   - Add Pass to remove selections (#2485)
   - Add passes to simplify branches (#2507)
   Fixes:
   - #2478: fix loop to selection pass for loops with combined header/continue block

v2019.2 2019-02-20
 - General:
   - Support SPV_EXT_physical_storage_buffer
   - A number of memory leak have been fixed.
   - Removed use of deprecated Google test macro:
   - Changed the BUILD.gn to only build tests in Chromium.
 - Optimizer
   - Upgrade memory model improvments for modf and frexp.
   - Add a new pass to move loads closer to their uses: code sinking.
   - Invalidating the type manager now invalidates the constnat manager.
   - Expand instrumentation pass for bindless bounds checking to runtime-sized descriptor arrays.
   - Add a new pass that removes members from structs that are not used: dead member elimination.
   Fixes:
   - #2292: Remove undefined behaviour when folding bit shifts.
   - #2294: Fixes for instrumentation code.
   - #2293: Fix overflow when folding -INT_MIN.
   - #2374: Don't merge unreachable blocks when merging blocks.
 - Validator
   - Support SPV_KHR_no_integer_wrap and related decorations.
   - Validate Vulkan rules for OpTypeRuntimeArray.
   - Validate NonWritable decoration.
   - Many WebGPU specific validation rules were added.
   - Validate variable pointer related function call rules.
   - Better error messages.
   Fixes:
   - #2307: Check forwards references in OpTypeArray.
   - #2315, #2303: Fixed the layout check for relaxed layout.
   - #1628: Emit an error when an OpSwitch target is not an OpLabel.
 - Reduce
   - Added more documentation for spirv-reduce.
   - Add ability to remove OpPhi instructions.
   - Add ability to merge two basic blocks.
   - Add ability to remove unused functions and unused basic blocks.
   Fixes:

v2019.1 2019-01-07
 - General:
   - Created a new tool called spirv-reduce.
   - Add cmake option to turn off SPIRV_TIMER_ENABLED (#2103)
   - New optimization pass to update the memory model from GLSL450 to VulkanKHR.
   - Recognize OpTypeAccelerationStructureNV as a type instruction and ray tracing storage classes.
   - Fix GCC8 build.
   - Add --target-env flag to spirv-opt.
   - Add --webgpu-mode flag to run optimizations for webgpu.
   - The output disassembled line number stead of byte offset in validation errors. (#2091)
 - Optimizer
   - Added the instrumentation passes for bindless validation.
   - Added passes to help preserve OpLine information (#2027)
   - Add basic support for EXT_fragment_invocation_density (#2100)
   - Fix invalid OpPhi generated by merge-return. (#2172)
   - Constant and type manager have been turned into analysies. (#2251)
   Fixes:
   - #2018: Don't inline functions with a return in a structured CFG contstruct.
   - #2047: Fix bug in folding when volatile stores are present.
   - #2053: Fix check for when folding floating pointer values is allowed.
   - #2130: Don't inline recursive functions.
   - #2202: Handle multiple edges between two basic blocks in SSA-rewriter.
   - #2205: Don't unswitch a latch condition during loop unswitch.
   - #2245: Don't fold branch in loop unswitch.  Run dead branch elimination to fold them.
   - #2204: Fix eliminate common uniform to place OpPhi instructions correctly.
   - #2247: Fix type mismatches caused by scalar replacement.
   - #2248: Fix missing OpPhi after merge return.
   - #2211: After merge return, fix invalid continue target.
   - #2210: Fix loop invariant code motion to not place code between merge instruction and branch.
   - #2258: Handle CompositeInsert with no indices in VDCE.
   - #2261: Have replace load size handle extact with no index.
 - Validator
   - Changed the naming convention of outputing ids with names in diagnostic messages.
   - Added validation rules for UniformConstant variables in Vulkan.
   - #1949: Validate uniform variable type in Vulkan
   - Ensure for OpVariable that result type and storage class operand agree (#2052)
   - Validator: Support VK_EXT_scalar_block_layout
   - Added Vulkan memory model semantics validation
   - Added validation checkes spefic to WebGPU environment.
   - Add support for VK_EXT_Transform_feedback capabilities (#2088)
   - Add validation for OpArrayLength. (#2117)
   - Ensure that function parameter's type is not void (#2118)
   - Validate pointer variables (#2111)
   - Add check for QueueFamilyKHMR memory scope (#2144)
   - Validate PushConstants annotation and type (#2140)
   - Allow Float16/Int8 for Vulkan 1.0 (#2153)
   - Check binding annotations in resource variables (#2151, #2167)
   - Validate OpForwardPointer (#2156)
   - Validate operation for OpSpecConstantOp (#2260)
   Fixes:
   - #2049: Allow InstanceId for NV ray tracing
 - Reduce
   - Initial commit wit a few passes to reduce test cases.
   - Validation is run after each reduction step.
   Fixes:


v2018.6 2018-11-07
 - General:
   - Added support for the Nvidia Turing and ray tracing extensions.
   - Make C++11 the CXX standard in CMakeLists.txt.
   - Enabled a parallel build for MSVC.
   - Enable pre-compiled headers for MSVC.
   - Added a code of conduct.
   - EFFCEE and RE2 are now required when build the tests.
 - Optimizer
   - Unrolling loops marked for unrolling in the legalization passes.
   - Improved the compile time of loop unrolling.
   - Changee merge-return to create a dummy loop around the function.
   - Small improvement to merge-blocks to allow it to merge more often.
   - Enforce an upper bound for the ids, and add option to set it.
   - #1966: Report error if there are unreachable block before running merge return
   Fixes:
   - #1917: Allow 0 (meaning unlimited) as a parameter to --scalar-replacement
   - #1915: Improve handling of group decorations.
   - #1942: Fix incorrect uses of the constant manager.  Avoids type mismatches in generated code.
   - #1997: Fix dead branch elimination when there is a loop in folded selection.
   - #1991: Fixes legality check in if-conversion.
   - #1987: Add nullptr check to array copy propagation.
   - #1984: Better handling of OpUnreachable in ADCE.
   - #1983: Run merge return on reachable functions only.
   - #1956: Handled atomic operations in ADCE.
   - #1963: Fold integer divisions by 0 to 0.
   - #2019: Handle MemberDecorateStringGOOGLE in ADCE and strip reflect.
 - Validator
   - Added validation for OpGroupNonUniformBallotBitCount.
   - Added validation for the Vulkan memory model.
   - Added support for VK_KHR_shader_atddomic_int64.
   - Added validation for execution modes.
   - Added validation for runtime array layouts.
   - Added validation for 8-bit storage.
   - Added validation of OpPhi instructions with pointer result type.
   - Added checks for the Vulkan memory model.
   - Validate MakeTexelAvailableKHR and MakeTexelVisibleKHR
   - Allow atomic function pointer for OpenCL.
   - FPRounding mode checks were implemented.
   - Added validation for the id bound with an option to set the max id bound.
   Fixes:
   - #1882: Improve the validation of decorations to reduce memory usage.
   - #1891: Fix an potential infinite loop in dead-branch-elimination.
   - #1405: Validate the storage class of boolean objects.
   - #1880: Identify arrays of type void as invalid.
   - #487: Validate OpImageTexelPointer.
   - #1922: Validate OpPhi instructions are at the start of a block correctly.
   - #1923: Validate function scope variable are at the start of the entry block.

v2018.5 2018-09-07
 - General:
   - Support SPV_KHR_vulkan_memory_model
   - Update Dim capabilities, to match SPIR-V 1.3 Rev 4
   - Automated build bots no run tests for the VS2013 case
   - Support Chromium GN build
   - Use Kokoro bots:
     - Disable Travis-CI bots
     - Disable AppVeyor VisualStudio Release builds. Keep VS 2017 Debug build
   - Don't check export symbols on OSX (Darwin): some installations don't have 'objdump'
   - Reorganize source files and namespaces
   - Fixes for ClangTidy, and whitespace (passes 'git cl presumit --all -uf')
   - Fix unused param compile warnings/errors when Effcee not present
   - Avoid including time headers when timer functionality is disabled
   - Avoid too-stringent warnings flags for Clang on Windows
   - Internal refactoring
   - Add hooks for automated fuzzing
   - Add testing of command line executables
   - #1688: Use binary mode on stdin; fixes "spirv-dis <foo.spv" on Windows
 - Optimizer
   - The optimizer validates the module before it begins
   - Add API to register passes by string name
   - Fold a vector shuffle feeding a vector shuffle
   - Add -combine-access-chains transform
   - Refactor how IRContext is handled by passes
   - Improve bookkeeping for instruction result type and result id
   - Fix over-duplication of decorations
   - Fix handling of exits from selections in dead-branch elimination, and dead code
     elimination.
   - Fix handling of certain kinds of flow control in merge-return
   Fixes:
   - #1721: Fix size bug when folding vector shuffles
   - #1722: Fix size infinite loop when folding vector shuffles
   - #1724: Fix finding a constant of a specific type
   - #1727: Dead branch elim: Reorder blocks if needed to satisfy dominance rule
   - #1729: Handle VariablePointers cases in various optimizations
   - #1731: Fix vector shuffle with literal id indicating undef value
   - #1736: Fix handling of decorations and phis in merge-return
   - #1787: Fix handling of decorations related to access chains
   - #1865: Avoid leaking memory for SPIR-V constant values
 - Validator
   - Improve error messages
   - Avoid platform-dependent traversal ordering, to ensure consistent messages
   - Use libspirv::Instruction where possible
   - Add option to skip all block layout checks
   - Validate all type IDs
   - Validate uses of OpFunction
   - Validate uses of OpTypeFunction
   - Disallow a struct containing its own type https://crbug.com/874372
   - #1685: Vulkan permits non-monotonic offsets for block members
   - #1697: Enforce block layout rules even when using relaxed block layout option
   - #1719: Fix line number for vector shuffle valiation error
   - #1789: Avoid assertion failure when validating some functions
   - #1800: Fix validation of OpCopyMemorySized
   - #1822: Stop enforcing struct member offset montonicity
   - #1831: Disallow void members in structs

v2018.4 2018-07-08
 - General:
   - Support SPV_KHR_8bit_storage
   - Add gclient and presubmit configurations
   - Enable Kokoro build bots (#1625)
   - Group tests into fewer executables, reduces load on CI
   - Port test script to Python 3
   - Symbol export tests respect SPIRV_SKIP_TESTS
   - #1596: Operand lookup succeeds if enabled by a capability
   - #1624: Instruction lookup succeeds if enabled by a capability
   - Refactoring namespaces:
     - #1678: Change libspirv to spvtools
     - Code in source/utils moved into spvtools::utils
     - Code in source/comp moved into spvtools::comp
 - Optimizer:
   - Remove insert-extract-elim pass. Use simplification pass instead.
   - Preserve instruction-to-block mapping in most passes, to reduce runtime.
   - Small vector optimization for operands
   - Add pass to move Private variables to Function. Increase opportunity to optimize.
   - Fixes:
     #1120: Check static uses of entry point interfaces
     #1372: Avoid merging some structs, to preserve names for reflection
     #1577: Scalar replacement uses only undecorated types.
     #1578: Fix handling of forward-pointer types, and types embedding pointers
       to themselves.
     #1591: Inliner: Callee variable with initializer should have a store at the call site.
     #1634: Fix crash: Use type id in vector type lookup
     #1649: Fix assert in compact-ids pass
     Fix constant folder: ensure it uses the right type
     #1659: Folding rules added to IRContext. Avoids leak.
 - Validator
   - Add work-in-progress WebGPU environment. Disallows OpUndef
   - #670, #1581: Improve error messages; disassemble instruction
   - #491: Check structured switches
   - #937: Check layout rules for Block and BufferBlock in Uniform, StorageBuffer, PushConstant
   - #1281: Check invalid branches into structured constructs
   - #1522: Disallow array-of-arrays with DescriptorSets
   - #1577: Allow duplicate pointer types.
   - #1581: Better messages: output ID names along with numbers in more cases.
   - #1597: Check Vulkan 1.1 capabilities
   - #1618: Check invalid exit from structured case construct
   - #1622: Run IdPass before DataRulesPass
   - #1632: Reduce test time by artificially lowering limits in limit test
   - #1638: Block-decorated structs member order must respect offset order
   - #1657: Improve CFG validation diagnostics
   - Khronos SPIR-V #337: GLSL.std.450 Refract instruction Eta param can be any float scalar.
   - #1606: PushConstant Blocks follow storage-buffer layout rules
   - #1664: Check layout of StorageBuffer variables with Block decoration, using storage buffer
     rules
   - #1666: Layout validation should permit {vec3; float} packing
   - #1637, #1668: Layout validation uses RowMajor, ArrayStride, MatrixStride properly
 - Linker
   - Avoid buffer overrun when creating OpModuleProcessed

v2018.3 2018-05-25
 - General:
   - Support SPV_EXT_descriptor_indexing
   - Support SPV_GOOGLE_decorate_string
   - Support SPV_GOOGLE_hlsl_functionality1
   - Support SPV_NV_shader_subgroup_partitioned
   - Use "unified1" grammar from SPIRV-Headers
   - Simplify support for new extensions. Assembler, disassembler, and simple validation
     support is automatic if new tokens are introduced with appropriate extension
     attributes in the "unified1" SPIR-V core grammar.
   - Disassembler: Emit more digits on floating point, to reliably reproduce all
     significand bits.  (Use std::max_digits10 instead of std::digits10)
   - Fix compilation for old XCode versions: Explicit construction required for std::set.
 - Optimizer:
   - Add --strip-reflect
   - Add --time-report
   - Add --loop-fission
   - Add lop fusion.
   - Add loop peeling pass and internal utility.
   - Improve optimizer runtime.
   - Merge-return now works with structured control flow.
   - New (faster) SSA rewriter to convert local loads and stores to SSA IDs and phis.
     Can replace load/store elimination passes.
   - Fix instruction folding case: insertion that feeds and extract, when the extract
     remains.
   - Fold OpDot.
   - Fold OpFNegate.
   - Fold multply and divide of same value.
   - Fold FClamp feeding a compare.
   - Fold OpLoad feeding an extract, to reduce excessive copying. (#1547)
   - Fold Fmix feeding an extract.
   - Use simplification pass instead of insert-extract elimination.
   - Constant fold OpVectorTimesScalar.
   - Copy propagate arrays, in simple cases.
   - Aggressive dead code elimination: Can remove more instructions, e.g. derivatives.
   - Aggressive dead code elimination: Remove Workgroup variables that are written but not read.
   - Better handling of OpImageTexelPointer
   - Initial utilities for scalar evolution.
   - Add Vector dead code elimination.
   - Each pass can only run once.
   - Allow code hosting in if-conversion.
   - Add external interface for adding a PassToken, so external code can make their own
     passes.
   - Fixes:
     #1404: Don't optimize away the compute compute workgroup size constant.
     #1407: Remove a bad assertion
     #1456: Fix bug in SSA rewriter related to variables updated in loops.
     #1487: Fix long runtime in Dead insertion elimination: Don't revist select phi nodes.
     #1492: Aggressive dead code elimination can remove OpDecorateStringGOOGLE.
     #1527: Fix inlining of functions having OpKill and OpUnreachable.
     #1559: Fix assert failure in reduce-load-size pass.
     #1556: Aggressive dead code elimination: Fix handling of OpCopyMemory.
 - Validator:
   - Check Vulkan built-in variables
   - Check Vulkan-specific atomic result type rule.
   - Relax control barrier check for SPIR-V 1.3.  Fixes #1427
   - Check OpPhi.
   - Check OpMemoryModel.
   - Stop checking sizes derived from spec-constants.
   - Re-enable checks for OpUConvert.
   - Vulkan: Fix check for PrimitiveId: Permit as Input in fragment shader.
   - Validate binary version for the given target environment.
   - Add tests for OpBranch checks.
   - Vulkan 1.1: Check scope for non-uniform subgroup operations.
   - Fix checks for SPV_AMD_gpu_shader_int16.
   - Fix logical layout check for OpDecorateId.
   - Fix checks for ViewportIndex & Layer for Vulkan and SPV_EXT_shader_viewport_index_layer.
   - Fixes:
     #1470: Vulkan: Don't restrict WorkgroupSize to Input storage class.
     #1469: Vulkan: Permit Subgroup memory scope for Vulkan 1.1.
     #1472: Per-vertex variable validation fixes.
     #1483: Valdiate barrier execution scopes for Vulkan 1.1.
 - Fixes:
   #898: Linker properly removes FuncParamAttr from imported symbols.
   #924, #1174: Fix handling of decoration groups in optimizer, linker.

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
