Revision history for SPIRV-Tools

v2019.5-dev 2019-10-09
 - General:
   - Export SPIRV-Tools targets on installation
   - SPIRV-Tools support for SPIR-V 1.5 (#2865)
   - Add WebGPU SPIR-V Assembler in JavaScript. (#2876)
   - Add Bazel build configuration. (#2891)
 - Optimizer
   - Add descriptor array scalar replacement (#2742)
   - Add pass to wrap OpKill in a function call (#2790)
   - Fold FMix during constant folding. (#2818)
   - Add pass to replace AMD shader ballot extension (#2811)
   - Add pass to make Float32 operation relax precision (#2808)
   - Add pass to make relax precision operation Float16 (#2808)
   - Add pass to replace uses of 3 AMD extensions (#2814)
   - Fold Min, Max, and Clamp instructions. (#2836)
   - Better handling of OpKill in continues (#2842,#2922,#2933)
   - Enable OpTypeCooperativeMatrix specialization (#2927)
   Fixes:
   - Instrument: Fix version 2 output record write for tess eval shaders. (#2782)
   - Instrument: Add support for Buffer Device Address extension (#2792)
   - Fix check for changed binary in API call. (#2798)
   - For WebGPU<->Vulkan optimization, set correct execution environment (#2834)
   - Handle OpConstantNull in copy-prop-arrays. (#2870)
   - Use OpReturn* in wrap-opkill (#2886)
 - Validator
   - Add generic builtin validation of target (#2843)
   - Extra resource interface validation (#2864)
   - Adding valilidation checks for OpEntryPoint duplicate names and execution mode (#2862)
   - Relaxed bitcast with pointers (#2878)
   - Validate physical storage buffer restrictions (#2930)
   - Add SPV_KHR_shader_clock validation (#2879)
   Fixes:
   - Fix validation of constant matrices (#2794)
   - Update "remquor" validation
   - Only allow previously declared forward refs in structs (#2920)
 - Reduce
   - Remove relaxed precision decorations (#2797)
   - Reduce/fuzz: improve command line args (#2932)
   - Improve remove unref instr pass (#2945)
   Fixes:
 - Fuzz
   - Fix add-dead-break and add-dead-continue passes to respect dominance (#2838)
   - Add fuzzer pass to copy objects (#2853)
   - Add fuzzer pass to replace ids with synonyms (#2857)
   - Allow validation during spirv-fuzz replay (#2873)
   - Employ the "swarm testing" idea in spirv-fuzz (#2890)
   - reduce/fuzz: improve command line args (#2932)
   - option to convert shader into a form that renders red (#2934)
   - Add fuzzer pass to change selection controls (#2944)
   - add transformation and pass to construct composites (#2941)


v2019.4 2019-08-08
 - General:
   - Memory model support for SPIR-V 1.4
   - Add new spirv-fuzz tool
   - Add option for base branch in check_code_format.sh
   - Removed MarkV and Stats code. (#2576)
   - Instrument: Add version 2 of record formats (#2630)
   - Linker: Better type comparison for OpTypeArray and OpTypeForwardPointer (#2580)
 - Optimizer
   - Bindless Validation: Instrument descriptor-based loads and stores (#2583)
   - Better folding for OpSpecConstantOp (#2585, #2614)
   - Add in individual flags for Vulkan <-> WebGPU passes (#2615)
   - Handle nested breaks from switches. (#2624)
   - Optimizer: Handle array type with OpSpecConstantOp length (#2652)
   - Perform merge return with single return in loop. (#2714)
   - Add --preserve-bindings and --preserve-spec-constants (#2693)
   - Remove Common Uniform Elimination Pass (#2731)
   - Allow ray tracing shaders in inst bindle check pass. (#2733)
   - Add pass to inject code for robust-buffer-access semantics (#2771)
   - Treat access chain indexes as signed in SROA (#2776)
   - Handle RelaxedPrecision in SROA (#2788)
   - Add descriptor array scalar replacement (#2742)
   Fixes:
   - Handle decorations better in some optimizations (#2716)
   - Change the order branches are simplified in dead branch elim (#2728)
   - Fix bug in merge return (#2734)
   - SSA rewriter: Don't use trivial phis (#2757)
   - Record correct dominators in merge return (#2760)
   - Process OpDecorateId in ADCE (#2761)
   - Fix check for unreachable blocks in merge-return (#2762)
   - Handle out-of-bounds scalar replacements. (#2767)
   - Don't move debug or decorations when folding (#2772)
   - Protect against out-of-bounds references when folding OpCompositeExtract (#2774)
 - Validator
   - Validate loop merge (#2579)
   - Validate construct exits (#2459)
   - Validate OpenCL memory and addressing model environment rules (#2589)
   - Validate OpenCL environment rules for OpTypeImage (#2606)
   - Allow breaks to switch merge from nested construct (#2604)
   - Validate OpenCL environment rules for OpImageWrite (#2619)
   - Allow arrays of out per-primitive builtins for mesh shaders (#2617)
   - Validate OpenCL rules for ImageRead and OpImageSampleExplicitLod (#2643)
   - Add validation for SPV_EXT_fragment_shader_interlock (#2650)
   - Add builtin validation for SPV_NV_shader_sm_builtins (#2656)
   - Add validation for Subgroup builtins (#2637)
   - Validate variable initializer type (#2668)
   - Disallow stores to UBOs (#2651)A
   - Validate Volatile memory semantics bit (#2672)
   - Basic validation for Component decorations (#2679)
   - Validate that in OpenGL env block variables have Binding (#2685)
   - Validate usage of 8- and 16-bit types with only storage capabilities (#2704)
   - Add validation for SPV_EXT_demote_to_helper_invocation (#2707)
   - Extra small storage validation (#2732)
   - For Vulkan, disallow structures containing opaque types (#2546)
   - Validate storage class OpenCL environment rules for atomics (#2750)
   - Update OpControlBarriers rules for WebGPU (#2769)
   - Update OpMemoryBarriers rules for WebGPU (#2775)
   - Update WebGPU validation rules of OpAtomic*s (#2777)
   Fixes:
   - Disallow merge targeting block with OpLoopMerge (#2610)
   - Update vloadn and vstoren validation to match the OpenCL Extended
     Instruction Set Specification (#2599)
   - Update memory scope rules for WebGPU (#2725)
   - Allow LOD ops in compute shaders with derivative group execution modes (#2752)
 - Reduce
   Fixes:

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
