Update CHANGES
diff --git a/CHANGES b/CHANGES
index 9285dbf..050280e 100644
--- a/CHANGES
+++ b/CHANGES
@@ -12,31 +12,69 @@
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
- - Add loop peeling internal utility.
- 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.
- #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.
v2018.2 2018-03-07
- General: