Finalize 2017.1
Updated CHANGES to cover main updates since 2017.0
diff --git a/CHANGES b/CHANGES
index 690a440..b2e4259 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,33 +1,71 @@
Revision history for SPIRV-Tools
-v2017.1-dev 2017-09-01
+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.
+ 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:
- - Type check basic arithmetic operations
- - Type check Relational and Logical instructions
- - Type check Bit instructions
- - OpModuleProcessed is only allowed after debug names section and before annotations
- section.
- 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:
- - Add eliminater-dead-function transform
+ - 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.
- - Extract-insert elimination: Recognize the case where the first instruction
- in the sequence is an OpCompositeConstruct or OpConstantComposite
+ - 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