Revision history for SPIRV-Tools v2018.6-dev 2018-10-22 - General: - Added support for the Nvidia Turing 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. - 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. 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 . 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