David Neto | 9166854 | 2016-04-21 20:50:11 -0400 | [diff] [blame] | 1 | Revision history for SPIRV-Tools |
| 2 | |
Diego Novillo | ff91b1c | 2022-01-26 15:02:49 -0500 | [diff] [blame] | 3 | v2022.2-dev 2022-01-26 |
| 4 | - Start v2022.2-dev |
| 5 | |
Diego Novillo | b1877de | 2022-01-26 14:59:42 -0500 | [diff] [blame] | 6 | v2022.1 2022-01-26 |
Diego Novillo | 73735db | 2022-01-26 09:16:33 -0500 | [diff] [blame] | 7 | - General |
| 8 | - Add SPIR-V 1.6 support to wasm build (#4674) |
| 9 | - Improvements to disassembly within PassManager (#4677) |
| 10 | - Basic support for SPIR-V 1.6 (#4663) |
| 11 | - reflect debug (#4662) |
| 12 | - Fix endianness of string literals (#4622) |
| 13 | - Optimizer |
| 14 | - spirv-opt: add pass to Spread Volatile semantics (#4667) |
| 15 | - Fix constant propagation and folding of FClamp instructions (#4651) |
| 16 | - Manually fold floating point division by zero (#4637) |
| 17 | - Allow ADCE to remove dead inputs (#4629) |
| 18 | - Linker |
| 19 | - Linker improvements (#4679) |
| 20 | * test/linker: Code factorisation and small tweaks |
| 21 | * linker: Do not fail when going over limits |
| 22 | - Validator |
| 23 | - val: interface struct with builtins must be Block (#4665) |
| 24 | - Fuzzer |
| 25 | - Avoid id bound errors during opt fuzzing (#4658) |
| 26 | - Avoid uninitialised read when parsing hex float (#4646) |
Jakub Kuderski | ccdf836 | 2021-11-11 12:09:30 -0500 | [diff] [blame] | 27 | |
Jakub Kuderski | ab8eb60 | 2021-11-11 12:06:08 -0500 | [diff] [blame] | 28 | v2021.4 2021-11-11 |
Jakub Kuderski | 2bd46c5 | 2021-11-08 21:40:53 -0500 | [diff] [blame] | 29 | - General |
| 30 | - Add a WebAssembly build (#3752) |
| 31 | - Make cxx exceptions controllable (#4591) |
| 32 | - Validator |
| 33 | - Improve decoration validation (#4490) |
| 34 | - Optimizer |
| 35 | - Add spirv-opt pass to replace descriptor accesses based on variable indices (#4574) |
| 36 | - Do not fold snegate feeding sdiv (#4600) |
| 37 | - Handle overflowing id in merge return (#4606) |
| 38 | - Fuzzer |
| 39 | - Add libFuzzer target for spirv-fuzz (#4434) |
| 40 | - Linter |
Jaebaek Seo | 2a5cc34 | 2021-08-25 10:09:53 -0400 | [diff] [blame] | 41 | |
Jaebaek Seo | 1fbed83 | 2021-08-25 10:08:20 -0400 | [diff] [blame] | 42 | v2021.3 2021-08-24 |
Jaebaek Seo | 3d4246b | 2021-08-24 14:45:03 -0400 | [diff] [blame] | 43 | - General |
| 44 | - Initial support for SPV_KHR_integer_dot_product (#4327) |
| 45 | - Add non-semantic vulkan extended instruction set (#4362) |
| 46 | - Add common enum for debug info instructions from either opencl or vulkan (#4377) |
| 47 | - Validator |
| 48 | - Add validation for SPV_EXT_shader_atomic_float16_add (#4325) |
| 49 | - Disallow loading a runtime-sized array (#4473) |
| 50 | - spirv-val: Validate vulkan debug info similarly to opencl debug info (#4466) |
| 51 | - Optimizer |
| 52 | - spirv-opt: support SPV_EXT_shader_image_int64 (#4379) |
| 53 | - spirv-opt: Add dataflow analysis framework (#4402) |
| 54 | - Add control dependence analysis to opt (#4380) |
| 55 | - Add spirv-opt convert-to-sampled-image pass (#4340) |
| 56 | - spirv-opt: Add handling of vulkan debug info to DebugInfoManager (#4423) |
| 57 | - Fuzz |
| 58 | - spirv-fuzz: support AtomicLoad (#4330) |
| 59 | - spirv-fuzz: Support AtomicStore (#4440) |
| 60 | - spirv-fuzz: TransformationWrapVectorSynonym that rewrites scalar operations using vectors (#4376) |
| 61 | - spirv-fuzz: Add minimal SPIR-V example to test shaders (#4415) |
| 62 | - spirv-fuzz: support building using gn (#4365) |
| 63 | - Linter |
| 64 | - Add new target for spirv-lint (#4446) |
| 65 | - spirv-lint: add basic CLI argument handling (#4478) |
| 66 | - Add divergence analysis to linter (#4465) |
Diego Novillo | 0c21e50 | 2021-06-22 08:55:13 -0400 | [diff] [blame] | 67 | |
Diego Novillo | e198c6a | 2021-06-22 08:53:10 -0400 | [diff] [blame] | 68 | v2021.2 2021-06-18 |
Diego Novillo | 5dd2f76 | 2021-06-18 14:10:57 -0400 | [diff] [blame] | 69 | - General |
| 70 | - Support SPV_KHR_subgroup_uniform_control_flow (#4318) |
| 71 | - Support Intel extensions for fixed point and hls-float (#4321) |
| 72 | - Fix crash when optimizing shaders with DebugPrintf (#4280) |
| 73 | |
| 74 | - Validator |
| 75 | - Support Vulkan Storage Class for Execution Model (#4212) |
| 76 | |
| 77 | - Optimizer |
| 78 | - Handle SPV_KHR_vulkan_memory_model in dead-code elimination (#4320) |
| 79 | - Support folding OpBitcast with numeric constants (#4247) |
| 80 | |
| 81 | - Fuzz |
| 82 | - Add tests for MaybeGet* functions in fuzzerutil (#4284) |
| 83 | - Fix OutlineFunction in presence of unreachable blocks (#4308) |
| 84 | - Fix def-use update in PermutePhiOperands (#4309) |
| 85 | - Swap positions of two functions in a module (#4236) |
Jakub Kuderski | 22b8287 | 2021-04-21 10:16:06 -0400 | [diff] [blame] | 86 | |
Jakub Kuderski | c2d5375 | 2021-04-21 10:13:07 -0400 | [diff] [blame] | 87 | v2021.1 2021-04-19 |
Jakub Kuderski | dc72924 | 2021-04-19 11:06:09 -0400 | [diff] [blame] | 88 | - General |
| 89 | - Support SPV_KHR_linkonce_odr, SPV_KHR_expect_assume (#4161) |
| 90 | - Fixes for the vscode language server extension (#4150) |
| 91 | - Validator |
| 92 | - Add validation for SPV_EXT_shader_atomic_float_min_max (#4105) |
| 93 | - Add Vulkan Execution Scope checks (#4183) |
| 94 | - Vulkan 64-bit OpAtomicStore check (#4163) |
| 95 | - Optimizer |
| 96 | - Add interpolate legalization pass (#4220) |
| 97 | - Fuzz |
| 98 | - Various performance optimizations |
| 99 | - Do not add too many dead blocks (#4217) |
| 100 | - Add WGSL compatibility flag to context (#4193) |
| 101 | - Add persistent state to the fuzzer (#4137) |
Jaebaek Seo | 1b35745 | 2021-02-18 10:41:43 -0500 | [diff] [blame] | 102 | |
Jaebaek Seo | 05cda81 | 2021-02-16 16:57:29 -0500 | [diff] [blame] | 103 | v2020.7 2021-02-16 |
| 104 | - General |
| 105 | - Support pending Intel extensions (#4116) |
| 106 | - Remove WebGPU support (#4108) |
| 107 | - Validator |
| 108 | - Vulkan image gather constant component (#4133) |
| 109 | - Add Vulkan PSB64 convert VUID (#4122) |
| 110 | - Validate SPV_KHR_workgroup_memory_explicit_layout (#4128) |
| 111 | - Validate VK_KHR_zero_initialize_workgroup_memory (#4124) |
| 112 | - Add Vulkan image gather offset VUID (#4118) |
| 113 | - Label Vulkan atomic semantics VUIDs (#4120) |
| 114 | - Label VUID 04662 (#4123) |
| 115 | - Label VUID 04683 (#4121) |
| 116 | - Add Vulkan EXT builtins (#4115) |
| 117 | - Validate Sampled=1 for Vulkan ImageQuerySizeLod, ImageQueryLevels, ImageQueryLod (#4103) |
| 118 | - Add Vulkan Memory Scope VUs (#4106) |
| 119 | - Add Vulkan Addressing Model check (#4107) |
| 120 | - Vulkan atomic storage class (#4079) |
| 121 | - Label standalone Vulkan VUID (#4091) |
| 122 | - Add Vulkan decroation VUID (#4090) |
| 123 | - Add Vulkan FP Mode VUID (#4088) |
| 124 | - Fix Vulkan image sampled check (#4085) |
| 125 | - Add Vulkan ForwardPointer VUID (#4089) |
| 126 | - Add Vulkan ImageTexelPointer format check (#4087) |
| 127 | - Add Vulkan Group Operation VUID (#4086) |
| 128 | - Add first StandAlone VUID 04633 (#4077) |
| 129 | - Add Subgroup VUIDs (#4074) |
| 130 | - validate return type of OpImageRead (#4072) |
| 131 | - tighter validation of multisampled images (#4059) |
| 132 | - validate OpTypeImage Sampled values for environemnts (#4064) |
| 133 | - validate StorageImageMultisampled capability (#4062) |
| 134 | - Add last TessLevelOuter and TessLevelInner VUID (#4055) |
| 135 | - Add last ClipDistance and CullDistance VUID (#4054) |
| 136 | - Add last ViewportIndex and Layer VUID (#4053) |
| 137 | - Add last Position VUID (#4052) |
| 138 | - Allow forward pointer to be used in types generally (#4044) |
| 139 | - Optimizer |
Jakub Kuderski | dc72924 | 2021-04-19 11:06:09 -0400 | [diff] [blame] | 140 | - Mark module as modified if convert-to-half removes decorations (#4127) |
Jaebaek Seo | 05cda81 | 2021-02-16 16:57:29 -0500 | [diff] [blame] | 141 | - Fix binding number calculation in desc sroa (#4095) |
| 142 | - Run DCE when SPV_KHR_shader_clock is used (#4049) |
| 143 | - Debug Info |
| 144 | - Set correct scope and line info for DebugValue (#4125) |
| 145 | - Avoid integrity check failures caused by propagating line instructions (#4096) |
| 146 | - Linker |
| 147 | - Linker usability improvements (#4084) |
| 148 | - Instrumentation |
| 149 | - Generate differentiated error codes for buffer oob checking (#4097) |
| 150 | - Fuzz |
| 151 | - Fix OpPhi handling in DuplicateRegionWithSelection (#4065) |
Diego Novillo | 21f7c56 | 2020-12-03 09:52:56 -0500 | [diff] [blame] | 152 | |
Diego Novillo | b27b1af | 2020-12-07 11:14:01 -0500 | [diff] [blame] | 153 | v2020.6 2020-12-07 |
Diego Novillo | 8454664 | 2020-12-02 13:42:21 -0500 | [diff] [blame] | 154 | - General |
| 155 | CMake: Add SPIRV_TOOLS_BUILD_STATIC flag (#3910) |
| 156 | - Disassembler |
| 157 | Add some context comments to disassembly. (#3847) |
| 158 | - Optimizer |
Diego Novillo | b27b1af | 2020-12-07 11:14:01 -0500 | [diff] [blame] | 159 | - Take new (raytracing) termination instructions into account. (#4050) |
Diego Novillo | c9c1f54 | 2020-12-02 18:49:00 -0500 | [diff] [blame] | 160 | - Do run DCE if SPV_KHR_ray_query is used. (#4047) |
Diego Novillo | 8454664 | 2020-12-02 13:42:21 -0500 | [diff] [blame] | 161 | - Handle 8-bit index in elim dead member (#4043) |
| 162 | - Add texel buffer out-of-bounds checking instrumentation (#4038) |
| 163 | - Update MeshShadingNV dependencies (and land Ray tracing updates) (#4028) |
| 164 | - Fix buffer oob instrumentation for matrix refs (#4025) |
| 165 | - Fix SSA re-writing in the presence of variable pointers. (#4010) |
| 166 | - Add support to prevent functions from being inlined if they have |
| 167 | DontInline flag (#3858) |
| 168 | - Add SPV_EXT_shader_image_int64 (#3852) |
| 169 | - Support SPV_KHR_fragment_shading_rate (#3943) |
| 170 | - Fix use-after-move in val/validate.cpp (#3848) |
| 171 | - Debug Info |
| 172 | - properly preserve DebugValue indexes operand (#4022) |
| 173 | - Add DebugValue for invisible store in single_store_elim (#4002) |
| 174 | - Propagate OpLine to all applied instructions in spirv-opt (#3951) |
| 175 | - Add DebugValue for DebugDecl invisible to value assignment (#3973) |
| 176 | - Add DebugValue for function param regardless of scope (#3923) |
| 177 | - Debug info preservation in convert-local-access-chains pass (#3835) |
| 178 | - Debug info preservation in redundancy-elimination pass (#3839) |
| 179 | - Debug info preservation in if-conversion pass (#3861) |
| 180 | - Validator |
| 181 | - Add validation support for the ray tracing built-in variables (#4041) |
| 182 | - Use less stack space when validating Vulkan builtins (#4019) |
| 183 | - Fix SPV_KHR_fragment_shading_rate VUID label (#4014) |
| 184 | - Label Layer and ViewportIndex VUIDs (#4013) |
| 185 | - Allow the ViewportIndex and Layer built-ins on SPIR-V 1.5 (#3986) |
| 186 | - Fix validation of OpPhi instructions (#3919) |
| 187 | - Fuzz |
| 188 | - Fix facts arising from CompositeConstruct (#4034) |
| 189 | - Do not flatten conditionals that create synonyms (#4030) |
| 190 | - Add support for reining in rogue fuzzer passes (#3987) |
| 191 | - Fix assertion failure in FuzzerPassAddCompositeExtract (#3995) |
| 192 | - Fix invalid equation facts (#4009) |
| 193 | - Fix bugs in TransformationFlattenConditionalBranch (#4006) |
| 194 | - Fix bug related to transformation applicability (#3990) |
| 195 | - Add expand vector reduction transformation (#3869) |
| 196 | - Add FuzzerPassAddCompositeExtract (#3904) |
| 197 | - Fix mismatch with shrinker step limit (#3985) |
| 198 | - Fix off-by-one error in replayer (#3982) |
| 199 | - Get order right for OpSelect arguments (#3974) |
| 200 | - Do not add synonym-creating loops in dead blocks (#3975) |
| 201 | - Skip OpTypeSampledImage when propagating up (#3976) |
| 202 | - Pass OpUndef in function call if needed (#3978) |
| 203 | - Fix off-by-one in TransformationCompositeConstruct (#3979) |
| 204 | - Tolerate absent ids in data synonym fact management (#3966) |
| 205 | - Fix to id availability (#3971) |
| 206 | - Fix operand types (#3962) |
| 207 | - Don't flatten conditional if condition is irrelevant (#3944) |
| 208 | - Do not produce OpPhis of type OpTypeSampledImage (#3964) |
| 209 | - Restrict fuzzer pass to reachable blocks (#3970) |
| 210 | - Handle more types when extending OpPhi instructions (#3969) |
| 211 | - Skip early terminator wrappers when merging returns (#3968) |
| 212 | - Avoid irrelevant constants in synonym-creating loops (#3967) |
| 213 | - Skip dead blocks in FuzzerPassAddOpPhiSynonyms (#3965) |
| 214 | - Avoid the type manager when looking for struct types (#3963) |
| 215 | - Fix to TransformationDuplicateRegionWithSelection (#3941) |
| 216 | - Skip OpFunction when replacing irrelevant ids (#3932) |
| 217 | - Use component-wise selectors when flattening conditional branches (#3921) |
| 218 | - Avoid void struct member when outlining functions (#3936) |
| 219 | - Do not allow Block-decorated structs when adding parameters (#3931) |
| 220 | - Fix to operand id type (#3937) |
| 221 | - Handle dead blocks in TransformationEquationInstruction (#3933) |
| 222 | - Do not allow sampled image load when flattening conditionals (#3930) |
| 223 | - Take care of OpPhi instructions when inlining (#3939) |
| 224 | - Fix to TransformationInlineFunction (#3913) |
| 225 | - Wrap early terminators before merging returns (#3925) |
| 226 | - Lower probability of adding bit instruction synonyms (#3917) |
| 227 | - Fix handling of OpPhi in FlattenConditionalBranch (#3916) |
| 228 | - Avoid creating blocks without parents (#3908) |
| 229 | - Do not allow creation of constants of block-decorated structs (#3903) |
| 230 | - Fixes related to irrelevant ids (#3901) |
| 231 | - Fix to transformation that adds a synonym via a loop (#3898) |
| 232 | - Fix to duplicate region with selection (#3896) |
| 233 | - Do not expose synonym facts for non-existent ids (#3891) |
| 234 | - Do not add synonyms involving irrelevant ids (#3890) |
| 235 | - Do not replace irrelevant ids that are not in blocks (#3892) |
| 236 | - Wrap OpKill and similar in function calls (#3884) |
| 237 | - Integrate spirv-reduce with shrinker (#3849) |
| 238 | - Report fresh ids in transformations (#3856) |
| 239 | - Support OpNot bit instruction case (#3841) |
| 240 | - Return IR and transformation context after replay (#3846) |
Ehsan Nasiri | 50dacda | 2020-09-24 10:58:53 -0400 | [diff] [blame] | 241 | |
Ehsan Nasiri | b27e039 | 2020-09-24 10:53:49 -0400 | [diff] [blame] | 242 | v2020.5 2020-09-22 |
Steven Perron | 0a1fb58 | 2020-09-22 09:23:45 -0400 | [diff] [blame] | 243 | - General |
| 244 | - Enable building with BUILD_SHARED_LIBS=1 (#3490) |
| 245 | - Avoid using /MP4 for clang on windows. (#3662) |
Ehsan Nasiri | a5903a9 | 2020-09-24 10:52:17 -0400 | [diff] [blame] | 246 | - Fix compiler error on macOS with XCode12. (#3836) |
Steven Perron | 0a1fb58 | 2020-09-22 09:23:45 -0400 | [diff] [blame] | 247 | - Optimizer |
| 248 | - Preserve OpenCL.DebugInfo.100 through private-to-local pass (#3571) |
| 249 | - Preserve debug info in scalar replacement pass (#3461) |
| 250 | - Debug info preservation in loop-unroll pass (#3548) |
| 251 | - Preserve debug info in dead-insert-elim pass (#3652) |
| 252 | - Improve non-semantic instruction handling in the optimizer (#3693) |
| 253 | - Let ADCE pass check DebugScope (#3703) |
| 254 | - Add undef for inlined void function (#3720) |
| 255 | - Fix SSA-rewrite to remove DebugDeclare for variables without loads (#3719) |
| 256 | - Handle DebugScope in compact-ids pass (#3724) |
| 257 | - Add buffer oob check to bindless instrumentation (#3800) |
| 258 | - Validator |
| 259 | - Update OpenCL capabilities validation (#3149) |
| 260 | - Validator support for non-semantic clspv reflection (#3618) |
| 261 | - OpenCL.DebugInfo.100 DebugTypeArray with variable size (#3549) |
| 262 | - Only validation locations for appropriate execution models (#3656) |
| 263 | - Validate more OpenCL.DebugInfo.100 instructions (#3684) |
| 264 | - Allow DebugTypeTemplate for Type operand (#3702) |
| 265 | - spirv-val: Add Vulkan VUID labels to BuiltIn (#3756) |
| 266 | - Allow SPV_KHR_8bit_storage extension. (#3780) |
Ehsan Nasiri | a5903a9 | 2020-09-24 10:52:17 -0400 | [diff] [blame] | 267 | - Validate SPIRV Version number when parsing binary header (#3834) |
Steven Perron | 0a1fb58 | 2020-09-22 09:23:45 -0400 | [diff] [blame] | 268 | - Reduce |
| 269 | - Support reducing a specific function (#3774) |
| 270 | - Fuzz |
| 271 | - adds TransformationReplaceCopyObjectWithStoreLoad (#3567) |
| 272 | - adds TransformationReplaceCopyMemoryWithLoadStore (#3575) |
| 273 | - adds TransformationReplaceLoadStoreWithCopyMemory (#3586) |
| 274 | - Implement the OpOuterProduct linear algebra case (#3617) |
| 275 | - Pass to replace int operands with ints of opposite signedness (#3612) |
| 276 | - TransformationMoveInstructionDown (#3477) |
| 277 | - Add TransformationMakeVectorOperationDynamic (#3597) |
| 278 | - TransformationReplaceAddSubMulWithCarryingExtended (#3598) |
| 279 | - FuzzerPassPropagateInstructionsUp (#3478) |
| 280 | - add FuzzerPassAddCompositeInserts (#3606) |
| 281 | - Add inline function transformation (#3517) |
| 282 | - Transformation to replace the use of an irrelevant id (#3697) |
| 283 | - Add SPIRV_FUZZ_PROTOC_COMMAND (#3789) |
| 284 | - Add TransformationDuplicateRegionWithSelection (#3773) |
| 285 | - Transformation to flatten conditional branch (#3667) |
Ehsan Nasiri | a5903a9 | 2020-09-24 10:52:17 -0400 | [diff] [blame] | 286 | - Handle OpPhis in TransformationInlineFunction (#3833) |
| 287 | - Create synonym of int constant using a loop (#3790) |
| 288 | - Support dead blocks in TransformationAddSynonym (#3832) |
Steven Perron | 0a1fb58 | 2020-09-22 09:23:45 -0400 | [diff] [blame] | 289 | - Linker |
Steven Perron | 0b84727 | 2020-07-22 14:27:35 -0400 | [diff] [blame] | 290 | |
Steven Perron | 895927b | 2020-07-22 14:26:04 -0400 | [diff] [blame] | 291 | v2020.4 2020-07-22 |
Steven Perron | a0d8dc2 | 2020-07-22 13:29:56 -0400 | [diff] [blame] | 292 | - General |
| 293 | - Changed variable names to be more descriptive (#3433) |
| 294 | - Add support to GPU-AV instrumentation for Task and Mesh shaders (#3512) |
| 295 | - Permit Simple and GLSL450 memory model in WEBGPU_0 (#3463) |
| 296 | - Support SPV_KHR_terminate_invocation (#3568) |
| 297 | - Optimizer |
| 298 | - Preserving debug information in optimizations |
| 299 | (#3389,#3420,#3425,#3356,#3459,#3444,#3492,#3451,#3497i,#3498,#3542) |
| 300 | - Eliminate branches with condition of OpConstantNull (#3438) |
| 301 | - Use structured order to unroll loops. (#3443) |
| 302 | - Updated desc_sroa to support flattening structures (#3448) |
| 303 | - Support OpCompositeExtract pattern in desc_sroa (#3456) |
| 304 | - Fix ADCE pass bug for mulitple entries (#3470) |
| 305 | - Sink pointer instructions in merge return (#3569) |
| 306 | - Validator |
| 307 | - Validate location assignments (#3308) |
| 308 | - Fix reachability in the validator (#3541) |
| 309 | - Reduce |
| 310 | - Fuzz |
| 311 | - Add support for OpSpecConstant* (#3373) |
| 312 | - Add replace linear algebra instruction transformation (#3402) |
| 313 | - Implement vector shuffle fuzzer pass (#3412) |
| 314 | - Swap operands in OpBranchConditional (#3423) |
| 315 | - Permute OpPhi instruction operands (#3421) |
| 316 | - Add FuzzerPassAddCopyMemoryInstructions (#3391) |
| 317 | - TransformationInvertComparisonOperator (#3475) |
| 318 | - Add variables with workgroup storage class (#3485) |
| 319 | - Add image sample unused components transformation (#3439) |
| 320 | - TransformationReplaceParameterWithGlobal (#3434) |
| 321 | - Support adding dead break from back-edge block (#3519) |
| 322 | - Fuzzer pass to interchange zero-like constants (#3524) |
| 323 | - Linker |
Steven Perron | 20e7fc5 | 2020-05-27 13:45:36 -0400 | [diff] [blame] | 324 | |
Steven Perron | e128ab0 | 2020-05-27 13:43:54 -0400 | [diff] [blame] | 325 | v2020.3 2020-05-27 |
Steven Perron | 9b8a6a1 | 2020-05-27 10:30:52 -0400 | [diff] [blame] | 326 | - General |
dan sinclair | a1ea15c | 2020-07-29 13:50:58 -0400 | [diff] [blame] | 327 | - Prevent Effcee from installing things when building spirv-tools with testing enabled (#3256) |
Steven Perron | 9b8a6a1 | 2020-05-27 10:30:52 -0400 | [diff] [blame] | 328 | - Update acorn version (#3294) |
| 329 | - If SPIRV-Headers is in our tree, include it as subproject (#3299) |
| 330 | - allow cross compiling for Windows Store, UWP, etc. (#3330) |
| 331 | - Optimizer |
| 332 | - Remove deprecated interfaces from instrument passes (#3361) |
| 333 | - Preserve debug info in inline pass (#3349) |
| 334 | - Handle more cases in dead member elim (#3289) |
| 335 | - Preserve debug info in eliminate-dead-functions (#3251) |
| 336 | - Fix Struct CFG analysis for single block loop (#3293) |
| 337 | - Add tests for recently added command line option (#3297) |
| 338 | - Consider sampled images as read-only storage (#3295) |
| 339 | - Allow various validation options to be passed to spirv-opt (#3314) |
| 340 | - Add debug information analysis (#3305) |
| 341 | - Preserve debug info for wrap-opkill (#3331) |
| 342 | - refactor inlining pass (#3328) |
| 343 | - Add unrolling to performance passes (#3082) |
| 344 | - Validator |
| 345 | - Add validation support for ImageGatherBiasLodAMD (#3363) |
| 346 | - Validate ShaderCallKHR memory scope (#3332) |
| 347 | - Validate Buffer and BufferBlock apply only to struct types (#3259) |
| 348 | - Reduce |
| 349 | - increase default step limit (#3327) |
| 350 | - Remove unused uniforms and similar (#3321) |
| 351 | - Fuzz |
| 352 | - Add support for StorageBuffer (#3348) |
| 353 | - Add validator options (#3254) |
| 354 | - Limit adding of new variables to 'basic' types (#3257) |
| 355 | - Transformation to add OpConstantNull (#3273) |
| 356 | - Handling of more fuzzing opportunities (#3277, #3280, #3281, #3290, #3292) |
| 357 | - Respect rules for OpSampledImage (#3287) |
| 358 | - Do not outline regions that produce pointer outputs (#3291) |
| 359 | - Linker |
Steven Perron | fd773eb | 2020-03-26 02:04:07 -0400 | [diff] [blame] | 360 | |
Steven Perron | fd8e130 | 2020-03-26 02:02:59 -0400 | [diff] [blame] | 361 | v2020.2 2020-03-26 |
Steven Perron | 3ef8fe9 | 2020-03-26 02:01:43 -0400 | [diff] [blame] | 362 | - General: |
| 363 | - Support extended instructions in the vscode language server |
| 364 | - Make spvOpcodeString part of the public API (#3174) |
| 365 | - Added guide to writing a spirv-fuzz fuzzer pass (#3190) |
| 366 | - Add support for KHR_ray_{query,tracing} extensions (#3235) |
| 367 | - Optimizer |
| 368 | - Debug Printf support (#3215) |
| 369 | - Add data structure for DebugScope, DebugDeclare in spirv-opt (#3183) |
| 370 | - Fix identification of Vulkan images and buffers (#3253) |
| 371 | - Validator |
| 372 | - Add support for SPV_AMD_shader_image_load_store_lod (#3186) |
| 373 | - Add validation rules for OpenCL.DebugInfo.100 extension (#3133) |
| 374 | - Adding WebGPU specific Workgroup scope rule (#3204) |
| 375 | - Disallow phis of images, samplers and sampled images (#3246) |
| 376 | - Reduce |
| 377 | - Fuzz |
| 378 | - Fuzzer passes to add local and global variables (#3175) |
| 379 | - Add fuzzer passes to add loads/stores (#3176) |
| 380 | - Fuzzer pass to add function calls (#3178) |
| 381 | - Fuzzer pass that adds access chains (#3182) |
| 382 | - Fuzzer pass to add equation instructions (#3202) |
| 383 | - Add swap commutable operands transformation (#3205) |
| 384 | - Add fuzzer pass to permute function parameters (#3212) |
| 385 | - Allow OpPhi operand to be replaced with a composite synonym (#3221) |
| 386 | - Linker |
Steven Perron | da5457f | 2020-02-04 09:36:21 -0500 | [diff] [blame] | 387 | |
Steven Perron | 8dd1748 | 2020-02-04 09:35:13 -0500 | [diff] [blame] | 388 | v2020.1 2020-02-03 |
Steven Perron | ddcc117 | 2020-02-03 09:47:28 -0500 | [diff] [blame] | 389 | - General: |
| 390 | - Add support for SPV_KHR_non_semantic_info (#3110) |
| 391 | - Support OpenCL.DebugInfo.100 extended instruction set (#3080) |
| 392 | - Added support for Vulkan 1.2 |
| 393 | - Add API function to better handle getting the necessary environment (#3142) |
| 394 | - Clarify mapping of target env to SPIR-V version (#3150) |
| 395 | - Implement constant folding for many transcendentals (#3166) |
| 396 | - Optimizer |
| 397 | - Change default version for CreatInstBindlessCheckPass to 2 (#3096, #3119) |
| 398 | - Better handling of OpLine on merge blocks (#3130) |
dan sinclair | a1ea15c | 2020-07-29 13:50:58 -0400 | [diff] [blame] | 399 | - Use placeholder switch instead of placeholder loop in MergeReturn pass. (#3151) |
Steven Perron | 76616ba | 2020-02-04 09:33:50 -0500 | [diff] [blame] | 400 | - Handle TimeAMD in AmdExtensionToKhrPass. (#3168) |
Steven Perron | ddcc117 | 2020-02-03 09:47:28 -0500 | [diff] [blame] | 401 | - Validator |
| 402 | - Fix structured exit validation (#3141) |
| 403 | - Reduce |
| 404 | - Fuzz |
| 405 | - Fuzzer pass to merge blocks (#3097) |
| 406 | - Transformation to add a new function to a module (#3114) |
| 407 | - Add fuzzer pass to perform module donation (#3117) |
| 408 | - Fuzzer passes to create and branch to new dead blocks (#3135) |
Steven Perron | 76616ba | 2020-02-04 09:33:50 -0500 | [diff] [blame] | 409 | - Fuzzer pass to add composite types (#3171) |
Steven Perron | ddcc117 | 2020-02-03 09:47:28 -0500 | [diff] [blame] | 410 | - Linker: |
| 411 | - Remove names and decorations of imported symbols (#3081) |
Steven Perron | 5c019b5 | 2019-12-11 14:53:48 -0500 | [diff] [blame] | 412 | |
Steven Perron | c413b98 | 2019-12-11 14:52:28 -0500 | [diff] [blame] | 413 | v2019.5 2019-12-11 |
Steven Perron | 9b3cc3e | 2019-09-03 15:51:46 -0400 | [diff] [blame] | 414 | - General: |
Steven Perron | c3ca047 | 2019-10-09 09:43:01 -0400 | [diff] [blame] | 415 | - Export SPIRV-Tools targets on installation |
| 416 | - SPIRV-Tools support for SPIR-V 1.5 (#2865) |
| 417 | - Add WebGPU SPIR-V Assembler in JavaScript. (#2876) |
| 418 | - Add Bazel build configuration. (#2891) |
Steven Perron | 615918c | 2019-10-21 14:15:36 -0400 | [diff] [blame] | 419 | - Add support for building with emscripten (#2948) |
| 420 | - Update SPIR-V binary header test for SPIR-V 1.5 (#2967) |
| 421 | - Add fuzzer for spirv-as call path (#2976) |
| 422 | - Improved CMake install step. (#2963) |
| 423 | - Add fuzzer for spirv-dis call path (#2977) |
| 424 | - Ensure timestamp does not vary with timezone. (#2982) |
Steven Perron | 2afbe90 | 2019-12-11 13:04:18 -0500 | [diff] [blame] | 425 | - Add a vscode extension for SPIR-V disassembly files (#2987) |
| 426 | - Add iOS as a supported platform (#3001) |
| 427 | - utils/vscode: Add SPIR-V language server support |
| 428 | - Respect CMAKE_INSTALL_LIBDIR in installed CMake files (#3054) |
| 429 | - Permit the debug instructions in WebGPU SPIR-V (#3063) |
| 430 | - Add support for Fuchsia. (#3062) |
Steven Perron | 9b3cc3e | 2019-09-03 15:51:46 -0400 | [diff] [blame] | 431 | - Optimizer |
| 432 | - Add descriptor array scalar replacement (#2742) |
| 433 | - Add pass to wrap OpKill in a function call (#2790) |
| 434 | - Fold FMix during constant folding. (#2818) |
| 435 | - Add pass to replace AMD shader ballot extension (#2811) |
| 436 | - Add pass to make Float32 operation relax precision (#2808) |
| 437 | - Add pass to make relax precision operation Float16 (#2808) |
Steven Perron | c3ca047 | 2019-10-09 09:43:01 -0400 | [diff] [blame] | 438 | - Add pass to replace uses of 3 AMD extensions (#2814) |
| 439 | - Fold Min, Max, and Clamp instructions. (#2836) |
| 440 | - Better handling of OpKill in continues (#2842,#2922,#2933) |
| 441 | - Enable OpTypeCooperativeMatrix specialization (#2927) |
Steven Perron | 615918c | 2019-10-21 14:15:36 -0400 | [diff] [blame] | 442 | - Support constant-folding UConvert and SConvert (#2960) |
Steven Perron | 2afbe90 | 2019-12-11 13:04:18 -0500 | [diff] [blame] | 443 | - Update Offset to ConstOffset bitmask if operand is constant. (#3024) |
| 444 | - Improve RegisterSizePasses (#3059) |
| 445 | - Folding: perform add and sub on mismatched integer types (#3084) |
| 446 | - Graphics robust access: use signed clamp (#3073) |
Steven Perron | 9b3cc3e | 2019-09-03 15:51:46 -0400 | [diff] [blame] | 447 | Fixes: |
Steven Perron | c3ca047 | 2019-10-09 09:43:01 -0400 | [diff] [blame] | 448 | - Instrument: Fix version 2 output record write for tess eval shaders. (#2782) |
| 449 | - Instrument: Add support for Buffer Device Address extension (#2792) |
| 450 | - Fix check for changed binary in API call. (#2798) |
| 451 | - For WebGPU<->Vulkan optimization, set correct execution environment (#2834) |
| 452 | - Handle OpConstantNull in copy-prop-arrays. (#2870) |
| 453 | - Use OpReturn* in wrap-opkill (#2886) |
Steven Perron | 9b3cc3e | 2019-09-03 15:51:46 -0400 | [diff] [blame] | 454 | - Validator |
Steven Perron | c3ca047 | 2019-10-09 09:43:01 -0400 | [diff] [blame] | 455 | - Add generic builtin validation of target (#2843) |
| 456 | - Extra resource interface validation (#2864) |
| 457 | - Adding valilidation checks for OpEntryPoint duplicate names and execution mode (#2862) |
| 458 | - Relaxed bitcast with pointers (#2878) |
| 459 | - Validate physical storage buffer restrictions (#2930) |
Steven Perron | 2afbe90 | 2019-12-11 13:04:18 -0500 | [diff] [blame] | 460 | - Add SPV_KHR_shader_clock validation (#2879, #3013) |
Steven Perron | 615918c | 2019-10-21 14:15:36 -0400 | [diff] [blame] | 461 | - Validate that selections are structured (#2962) |
| 462 | - Disallow use of OpCompositeExtract/OpCompositeInsert with no indices (#2980) |
| 463 | - Check that derivatives operate on 32-bit values (#2983) |
Steven Perron | 2afbe90 | 2019-12-11 13:04:18 -0500 | [diff] [blame] | 464 | - Validate array stride does not cause overlap (#3028) |
| 465 | - Validate nested constructs (#3068) |
Steven Perron | 9b3cc3e | 2019-09-03 15:51:46 -0400 | [diff] [blame] | 466 | Fixes: |
Steven Perron | c3ca047 | 2019-10-09 09:43:01 -0400 | [diff] [blame] | 467 | - Fix validation of constant matrices (#2794) |
| 468 | - Update "remquor" validation |
| 469 | - Only allow previously declared forward refs in structs (#2920) |
Steven Perron | 9b3cc3e | 2019-09-03 15:51:46 -0400 | [diff] [blame] | 470 | - Reduce |
| 471 | - Remove relaxed precision decorations (#2797) |
Steven Perron | c3ca047 | 2019-10-09 09:43:01 -0400 | [diff] [blame] | 472 | - Reduce/fuzz: improve command line args (#2932) |
| 473 | - Improve remove unref instr pass (#2945) |
Steven Perron | 9b3cc3e | 2019-09-03 15:51:46 -0400 | [diff] [blame] | 474 | Fixes: |
Steven Perron | c3ca047 | 2019-10-09 09:43:01 -0400 | [diff] [blame] | 475 | - Fuzz |
| 476 | - Fix add-dead-break and add-dead-continue passes to respect dominance (#2838) |
| 477 | - Add fuzzer pass to copy objects (#2853) |
| 478 | - Add fuzzer pass to replace ids with synonyms (#2857) |
| 479 | - Allow validation during spirv-fuzz replay (#2873) |
| 480 | - Employ the "swarm testing" idea in spirv-fuzz (#2890) |
| 481 | - reduce/fuzz: improve command line args (#2932) |
| 482 | - option to convert shader into a form that renders red (#2934) |
| 483 | - Add fuzzer pass to change selection controls (#2944) |
| 484 | - add transformation and pass to construct composites (#2941) |
Steven Perron | 615918c | 2019-10-21 14:15:36 -0400 | [diff] [blame] | 485 | - Add fuzzer pass to change loop controls (#2949) |
| 486 | - Add fuzzer pass to change function controls (#2951) |
| 487 | - Add fuzzer pass to add NoContraction decorations (#2950) |
Steven Perron | 2afbe90 | 2019-12-11 13:04:18 -0500 | [diff] [blame] | 488 | - Add missing functionality for matrix composites (#2974) |
| 489 | - Fuzzer pass to adjust memory access operands (#2968) |
| 490 | - Transformation to extract from a composite object (#2991) |
| 491 | - Vector shuffle transformation (#3015) |
| 492 | - Improve debugging facilities (#3074) |
| 493 | - Function outlining fuzzer pass (#3078) |
Steven Perron | c3ca047 | 2019-10-09 09:43:01 -0400 | [diff] [blame] | 494 | |
Steven Perron | 22ce39c | 2019-08-08 10:57:18 -0400 | [diff] [blame] | 495 | |
Steven Perron | d65513e | 2019-08-08 10:55:48 -0400 | [diff] [blame] | 496 | v2019.4 2019-08-08 |
Steven Perron | c26c261 | 2019-08-08 10:52:01 -0400 | [diff] [blame] | 497 | - General: |
| 498 | - Memory model support for SPIR-V 1.4 |
| 499 | - Add new spirv-fuzz tool |
| 500 | - Add option for base branch in check_code_format.sh |
| 501 | - Removed MarkV and Stats code. (#2576) |
| 502 | - Instrument: Add version 2 of record formats (#2630) |
| 503 | - Linker: Better type comparison for OpTypeArray and OpTypeForwardPointer (#2580) |
| 504 | - Optimizer |
| 505 | - Bindless Validation: Instrument descriptor-based loads and stores (#2583) |
| 506 | - Better folding for OpSpecConstantOp (#2585, #2614) |
| 507 | - Add in individual flags for Vulkan <-> WebGPU passes (#2615) |
| 508 | - Handle nested breaks from switches. (#2624) |
| 509 | - Optimizer: Handle array type with OpSpecConstantOp length (#2652) |
| 510 | - Perform merge return with single return in loop. (#2714) |
Jaebaek Seo | dac9210 | 2019-08-15 08:46:59 -0400 | [diff] [blame] | 511 | - Add --preserve-bindings and --preserve-spec-constants (#2693) |
Steven Perron | c26c261 | 2019-08-08 10:52:01 -0400 | [diff] [blame] | 512 | - Remove Common Uniform Elimination Pass (#2731) |
| 513 | - Allow ray tracing shaders in inst bindle check pass. (#2733) |
| 514 | - Add pass to inject code for robust-buffer-access semantics (#2771) |
| 515 | - Treat access chain indexes as signed in SROA (#2776) |
| 516 | - Handle RelaxedPrecision in SROA (#2788) |
Steven Perron | d65513e | 2019-08-08 10:55:48 -0400 | [diff] [blame] | 517 | - Add descriptor array scalar replacement (#2742) |
Steven Perron | c26c261 | 2019-08-08 10:52:01 -0400 | [diff] [blame] | 518 | Fixes: |
| 519 | - Handle decorations better in some optimizations (#2716) |
| 520 | - Change the order branches are simplified in dead branch elim (#2728) |
| 521 | - Fix bug in merge return (#2734) |
| 522 | - SSA rewriter: Don't use trivial phis (#2757) |
| 523 | - Record correct dominators in merge return (#2760) |
| 524 | - Process OpDecorateId in ADCE (#2761) |
| 525 | - Fix check for unreachable blocks in merge-return (#2762) |
| 526 | - Handle out-of-bounds scalar replacements. (#2767) |
| 527 | - Don't move debug or decorations when folding (#2772) |
| 528 | - Protect against out-of-bounds references when folding OpCompositeExtract (#2774) |
| 529 | - Validator |
| 530 | - Validate loop merge (#2579) |
| 531 | - Validate construct exits (#2459) |
| 532 | - Validate OpenCL memory and addressing model environment rules (#2589) |
| 533 | - Validate OpenCL environment rules for OpTypeImage (#2606) |
| 534 | - Allow breaks to switch merge from nested construct (#2604) |
| 535 | - Validate OpenCL environment rules for OpImageWrite (#2619) |
| 536 | - Allow arrays of out per-primitive builtins for mesh shaders (#2617) |
| 537 | - Validate OpenCL rules for ImageRead and OpImageSampleExplicitLod (#2643) |
| 538 | - Add validation for SPV_EXT_fragment_shader_interlock (#2650) |
| 539 | - Add builtin validation for SPV_NV_shader_sm_builtins (#2656) |
| 540 | - Add validation for Subgroup builtins (#2637) |
| 541 | - Validate variable initializer type (#2668) |
| 542 | - Disallow stores to UBOs (#2651)A |
| 543 | - Validate Volatile memory semantics bit (#2672) |
| 544 | - Basic validation for Component decorations (#2679) |
| 545 | - Validate that in OpenGL env block variables have Binding (#2685) |
| 546 | - Validate usage of 8- and 16-bit types with only storage capabilities (#2704) |
| 547 | - Add validation for SPV_EXT_demote_to_helper_invocation (#2707) |
| 548 | - Extra small storage validation (#2732) |
| 549 | - For Vulkan, disallow structures containing opaque types (#2546) |
| 550 | - Validate storage class OpenCL environment rules for atomics (#2750) |
| 551 | - Update OpControlBarriers rules for WebGPU (#2769) |
| 552 | - Update OpMemoryBarriers rules for WebGPU (#2775) |
| 553 | - Update WebGPU validation rules of OpAtomic*s (#2777) |
| 554 | Fixes: |
| 555 | - Disallow merge targeting block with OpLoopMerge (#2610) |
| 556 | - Update vloadn and vstoren validation to match the OpenCL Extended |
| 557 | Instruction Set Specification (#2599) |
| 558 | - Update memory scope rules for WebGPU (#2725) |
| 559 | - Allow LOD ops in compute shaders with derivative group execution modes (#2752) |
| 560 | - Reduce |
| 561 | Fixes: |
Steven Perron | 84aa494 | 2019-05-15 15:10:21 -0400 | [diff] [blame] | 562 | |
Steven Perron | ce19e21 | 2019-05-15 15:08:51 -0400 | [diff] [blame] | 563 | v2019.3 2019-05-14 |
Steven Perron | 26c1b88 | 2019-04-03 13:22:54 -0400 | [diff] [blame] | 564 | - General: |
Steven Perron | f815e6f | 2019-05-14 10:03:45 -0400 | [diff] [blame] | 565 | - Require Python 3 since Python 2 will out of service soon. |
Steven Perron | 26c1b88 | 2019-04-03 13:22:54 -0400 | [diff] [blame] | 566 | - Add a continuous test that does memory checks using the address sanitizer. |
Steven Perron | f815e6f | 2019-05-14 10:03:45 -0400 | [diff] [blame] | 567 | - Fix the build files so the SPIRV_USE_SANITIZER=address build works. |
| 568 | - Packaging top of tree build artifacts again. |
| 569 | - Added support for SPIR-V 1.4. (#2550) |
Steven Perron | 26c1b88 | 2019-04-03 13:22:54 -0400 | [diff] [blame] | 570 | - Optimizer |
| 571 | - Remove duplicates from list of interface IDs in OpEntryPoint instruction (#2449) |
| 572 | - Bindless Validation: Descriptor Initialization Check (#2419) |
| 573 | - Add option to validate after each pass (#2462) |
Steven Perron | f815e6f | 2019-05-14 10:03:45 -0400 | [diff] [blame] | 574 | - Add legalization pass to fix mismatched pointer (#2430, #2535) |
| 575 | - Add error messages when the input contains unknown instructions. (#2487) |
| 576 | - Add pass to convert from WebGPU Spir-V to Vulkan Spir-V and back. (#2495) |
Steven Perron | 26c1b88 | 2019-04-03 13:22:54 -0400 | [diff] [blame] | 577 | Fixes: |
| 578 | - #2412: Dead memeber elimination should not change input and output variables. |
| 579 | - #2405: Fix OpDot folding of half float vectors. |
| 580 | - #2391: Dead branch elim should not fold away back edges. |
| 581 | - #2441: Removing decorations when doing constant propagation. |
| 582 | - #2455: Maintain inst to block mapping in merge return. |
| 583 | - #2453: Fix merge return in the face of breaks. |
| 584 | - #2456: Handle dead infinite loops in DCE. |
| 585 | - #2458: Handle variable pointer in some optimizations. |
| 586 | - #2452: Fix dead branch elimination to handle unreachable blocks better. |
Steven Perron | f815e6f | 2019-05-14 10:03:45 -0400 | [diff] [blame] | 587 | - #2528: Fix undefined bit shift in sroa. |
| 588 | - #2539: Change implementation of post order CFG traversal. |
Steven Perron | 26c1b88 | 2019-04-03 13:22:54 -0400 | [diff] [blame] | 589 | - Validator |
| 590 | - Add validation of storage classes for WebGPU (#2446) |
| 591 | - Add validation for ExecutionMode in WebGPU (#2443) |
| 592 | - Implement WebGPU specific CFG validation (#2386) |
| 593 | - Allow NonWritable to target struct members. (#2420) |
| 594 | - Allow storage type mismatch for parameter in relaxed addressing mode. |
| 595 | - Allow non memory objects as parameter in relaxed addressing mode. |
| 596 | - Disallow nested Blocks and buffer blocks (#2410). |
| 597 | - Add validation for SPV_NV_cooperative_matrix (#2404) |
| 598 | - Add --strip-atomic-counter-memory (#2413) |
| 599 | - Check OpSampledImage is only passed into valid instructions (#2467) |
| 600 | - Handle function decls in Structured CFG analysis (#2474) |
| 601 | - Validate that OpUnreacahble is not statically reachable (#2473) |
| 602 | - Add pass to generate needed initializers for WebGPU (#2481) |
Steven Perron | f815e6f | 2019-05-14 10:03:45 -0400 | [diff] [blame] | 603 | - Allow images without format for OpenCL. (#2470) |
| 604 | - Remove unreachable block validation (#2525) |
| 605 | - Reduce runtime of array layout checks (#2534) |
| 606 | - Add validation specific to OpExecutionModeId (#2536) |
| 607 | - Validate sign of int types. (#2549) |
| 608 | - VK_KHR_uniform_buffer_standard_layout validation (#2562) |
Steven Perron | 26c1b88 | 2019-04-03 13:22:54 -0400 | [diff] [blame] | 609 | Fixes: |
| 610 | - #2439: Add missing DepthGreater case to Fragment only check. |
| 611 | - #2168: Disallow BufferBlock on StorageBuffer variables for Vulkan. |
| 612 | - #2408: Restrict and Aliased decorations cannot be applied to the same id. |
| 613 | - #2447: Improve function call parameter check. |
| 614 | - Reduce |
| 615 | - Add Pass to remove unreferenced blocks. (#2398) |
| 616 | - Allows passing options to the validator. (#2401) |
| 617 | - Improve reducer algorithm and other changes (#2472) |
| 618 | - Add Pass to remove selections (#2485) |
Steven Perron | f815e6f | 2019-05-14 10:03:45 -0400 | [diff] [blame] | 619 | - Add passes to simplify branches (#2507) |
Steven Perron | 26c1b88 | 2019-04-03 13:22:54 -0400 | [diff] [blame] | 620 | Fixes: |
| 621 | - #2478: fix loop to selection pass for loops with combined header/continue block |
Steven Perron | 5994ae2 | 2019-02-20 11:05:57 -0500 | [diff] [blame] | 622 | |
Steven Perron | 61dfd84 | 2019-02-20 11:04:41 -0500 | [diff] [blame] | 623 | v2019.2 2019-02-20 |
Steven Perron | 80496f4 | 2019-02-19 12:54:42 -0500 | [diff] [blame] | 624 | - General: |
| 625 | - Support SPV_EXT_physical_storage_buffer |
| 626 | - A number of memory leak have been fixed. |
| 627 | - Removed use of deprecated Google test macro: |
| 628 | - Changed the BUILD.gn to only build tests in Chromium. |
| 629 | - Optimizer |
| 630 | - Upgrade memory model improvments for modf and frexp. |
| 631 | - Add a new pass to move loads closer to their uses: code sinking. |
| 632 | - Invalidating the type manager now invalidates the constnat manager. |
| 633 | - Expand instrumentation pass for bindless bounds checking to runtime-sized descriptor arrays. |
| 634 | - Add a new pass that removes members from structs that are not used: dead member elimination. |
| 635 | Fixes: |
| 636 | - #2292: Remove undefined behaviour when folding bit shifts. |
| 637 | - #2294: Fixes for instrumentation code. |
| 638 | - #2293: Fix overflow when folding -INT_MIN. |
| 639 | - #2374: Don't merge unreachable blocks when merging blocks. |
| 640 | - Validator |
| 641 | - Support SPV_KHR_no_integer_wrap and related decorations. |
| 642 | - Validate Vulkan rules for OpTypeRuntimeArray. |
| 643 | - Validate NonWritable decoration. |
| 644 | - Many WebGPU specific validation rules were added. |
| 645 | - Validate variable pointer related function call rules. |
| 646 | - Better error messages. |
| 647 | Fixes: |
| 648 | - #2307: Check forwards references in OpTypeArray. |
| 649 | - #2315, #2303: Fixed the layout check for relaxed layout. |
| 650 | - #1628: Emit an error when an OpSwitch target is not an OpLabel. |
| 651 | - Reduce |
| 652 | - Added more documentation for spirv-reduce. |
| 653 | - Add ability to remove OpPhi instructions. |
| 654 | - Add ability to merge two basic blocks. |
| 655 | - Add ability to remove unused functions and unused basic blocks. |
| 656 | Fixes: |
Steven Perron | ee95ab1 | 2019-01-07 15:51:06 -0500 | [diff] [blame] | 657 | |
Steven Perron | 2297d4a | 2019-01-07 15:48:55 -0500 | [diff] [blame] | 658 | v2019.1 2019-01-07 |
Steven Perron | 248debf | 2018-12-10 14:33:14 -0500 | [diff] [blame] | 659 | - General: |
| 660 | - Created a new tool called spirv-reduce. |
| 661 | - Add cmake option to turn off SPIRV_TIMER_ENABLED (#2103) |
| 662 | - New optimization pass to update the memory model from GLSL450 to VulkanKHR. |
Steven Perron | 04cc2b1 | 2019-01-07 10:12:14 -0500 | [diff] [blame] | 663 | - Recognize OpTypeAccelerationStructureNV as a type instruction and ray tracing storage classes. |
| 664 | - Fix GCC8 build. |
| 665 | - Add --target-env flag to spirv-opt. |
| 666 | - Add --webgpu-mode flag to run optimizations for webgpu. |
| 667 | - The output disassembled line number stead of byte offset in validation errors. (#2091) |
Steven Perron | 248debf | 2018-12-10 14:33:14 -0500 | [diff] [blame] | 668 | - Optimizer |
| 669 | - Added the instrumentation passes for bindless validation. |
| 670 | - Added passes to help preserve OpLine information (#2027) |
| 671 | - Add basic support for EXT_fragment_invocation_density (#2100) |
| 672 | - Fix invalid OpPhi generated by merge-return. (#2172) |
Steven Perron | 04cc2b1 | 2019-01-07 10:12:14 -0500 | [diff] [blame] | 673 | - Constant and type manager have been turned into analysies. (#2251) |
Steven Perron | 248debf | 2018-12-10 14:33:14 -0500 | [diff] [blame] | 674 | Fixes: |
| 675 | - #2018: Don't inline functions with a return in a structured CFG contstruct. |
| 676 | - #2047: Fix bug in folding when volatile stores are present. |
| 677 | - #2053: Fix check for when folding floating pointer values is allowed. |
| 678 | - #2130: Don't inline recursive functions. |
Steven Perron | 04cc2b1 | 2019-01-07 10:12:14 -0500 | [diff] [blame] | 679 | - #2202: Handle multiple edges between two basic blocks in SSA-rewriter. |
| 680 | - #2205: Don't unswitch a latch condition during loop unswitch. |
| 681 | - #2245: Don't fold branch in loop unswitch. Run dead branch elimination to fold them. |
| 682 | - #2204: Fix eliminate common uniform to place OpPhi instructions correctly. |
| 683 | - #2247: Fix type mismatches caused by scalar replacement. |
| 684 | - #2248: Fix missing OpPhi after merge return. |
| 685 | - #2211: After merge return, fix invalid continue target. |
| 686 | - #2210: Fix loop invariant code motion to not place code between merge instruction and branch. |
| 687 | - #2258: Handle CompositeInsert with no indices in VDCE. |
| 688 | - #2261: Have replace load size handle extact with no index. |
Steven Perron | 248debf | 2018-12-10 14:33:14 -0500 | [diff] [blame] | 689 | - Validator |
| 690 | - Changed the naming convention of outputing ids with names in diagnostic messages. |
| 691 | - Added validation rules for UniformConstant variables in Vulkan. |
| 692 | - #1949: Validate uniform variable type in Vulkan |
| 693 | - Ensure for OpVariable that result type and storage class operand agree (#2052) |
| 694 | - Validator: Support VK_EXT_scalar_block_layout |
| 695 | - Added Vulkan memory model semantics validation |
| 696 | - Added validation checkes spefic to WebGPU environment. |
| 697 | - Add support for VK_EXT_Transform_feedback capabilities (#2088) |
| 698 | - Add validation for OpArrayLength. (#2117) |
| 699 | - Ensure that function parameter's type is not void (#2118) |
| 700 | - Validate pointer variables (#2111) |
| 701 | - Add check for QueueFamilyKHMR memory scope (#2144) |
| 702 | - Validate PushConstants annotation and type (#2140) |
| 703 | - Allow Float16/Int8 for Vulkan 1.0 (#2153) |
| 704 | - Check binding annotations in resource variables (#2151, #2167) |
| 705 | - Validate OpForwardPointer (#2156) |
Steven Perron | 04cc2b1 | 2019-01-07 10:12:14 -0500 | [diff] [blame] | 706 | - Validate operation for OpSpecConstantOp (#2260) |
Steven Perron | 248debf | 2018-12-10 14:33:14 -0500 | [diff] [blame] | 707 | Fixes: |
| 708 | - #2049: Allow InstanceId for NV ray tracing |
| 709 | - Reduce |
| 710 | - Initial commit wit a few passes to reduce test cases. |
Steven Perron | 04cc2b1 | 2019-01-07 10:12:14 -0500 | [diff] [blame] | 711 | - Validation is run after each reduction step. |
Steven Perron | 248debf | 2018-12-10 14:33:14 -0500 | [diff] [blame] | 712 | Fixes: |
Steven Perron | 04cc2b1 | 2019-01-07 10:12:14 -0500 | [diff] [blame] | 713 | |
Steven Perron | e121da8 | 2018-11-07 09:40:35 -0500 | [diff] [blame] | 714 | |
Steven Perron | 9d699f6 | 2018-11-07 09:39:51 -0500 | [diff] [blame] | 715 | v2018.6 2018-11-07 |
Steven Perron | d3738be | 2018-09-27 10:06:44 -0400 | [diff] [blame] | 716 | - General: |
Steven Perron | e8f22d1 | 2018-11-07 09:20:50 -0500 | [diff] [blame] | 717 | - Added support for the Nvidia Turing and ray tracing extensions. |
Steven Perron | d3738be | 2018-09-27 10:06:44 -0400 | [diff] [blame] | 718 | - Make C++11 the CXX standard in CMakeLists.txt. |
Steven Perron | 2a88bcb | 2018-10-02 11:28:17 -0400 | [diff] [blame] | 719 | - Enabled a parallel build for MSVC. |
Steven Perron | 07d0f9d | 2018-10-22 15:10:53 -0400 | [diff] [blame] | 720 | - Enable pre-compiled headers for MSVC. |
| 721 | - Added a code of conduct. |
| 722 | - EFFCEE and RE2 are now required when build the tests. |
Steven Perron | d3738be | 2018-09-27 10:06:44 -0400 | [diff] [blame] | 723 | - Optimizer |
| 724 | - Unrolling loops marked for unrolling in the legalization passes. |
| 725 | - Improved the compile time of loop unrolling. |
dan sinclair | a1ea15c | 2020-07-29 13:50:58 -0400 | [diff] [blame] | 726 | - Changee merge-return to create a placeholder loop around the function. |
Steven Perron | d3738be | 2018-09-27 10:06:44 -0400 | [diff] [blame] | 727 | - Small improvement to merge-blocks to allow it to merge more often. |
| 728 | - Enforce an upper bound for the ids, and add option to set it. |
Steven Perron | 07d0f9d | 2018-10-22 15:10:53 -0400 | [diff] [blame] | 729 | - #1966: Report error if there are unreachable block before running merge return |
Steven Perron | d3738be | 2018-09-27 10:06:44 -0400 | [diff] [blame] | 730 | Fixes: |
| 731 | - #1917: Allow 0 (meaning unlimited) as a parameter to --scalar-replacement |
| 732 | - #1915: Improve handling of group decorations. |
Steven Perron | 2a88bcb | 2018-10-02 11:28:17 -0400 | [diff] [blame] | 733 | - #1942: Fix incorrect uses of the constant manager. Avoids type mismatches in generated code. |
Steven Perron | 07d0f9d | 2018-10-22 15:10:53 -0400 | [diff] [blame] | 734 | - #1997: Fix dead branch elimination when there is a loop in folded selection. |
| 735 | - #1991: Fixes legality check in if-conversion. |
| 736 | - #1987: Add nullptr check to array copy propagation. |
| 737 | - #1984: Better handling of OpUnreachable in ADCE. |
| 738 | - #1983: Run merge return on reachable functions only. |
| 739 | - #1956: Handled atomic operations in ADCE. |
| 740 | - #1963: Fold integer divisions by 0 to 0. |
Steven Perron | e8f22d1 | 2018-11-07 09:20:50 -0500 | [diff] [blame] | 741 | - #2019: Handle MemberDecorateStringGOOGLE in ADCE and strip reflect. |
Steven Perron | d3738be | 2018-09-27 10:06:44 -0400 | [diff] [blame] | 742 | - Validator |
| 743 | - Added validation for OpGroupNonUniformBallotBitCount. |
| 744 | - Added validation for the Vulkan memory model. |
| 745 | - Added support for VK_KHR_shader_atddomic_int64. |
Steven Perron | 2a88bcb | 2018-10-02 11:28:17 -0400 | [diff] [blame] | 746 | - Added validation for execution modes. |
Steven Perron | 07d0f9d | 2018-10-22 15:10:53 -0400 | [diff] [blame] | 747 | - Added validation for runtime array layouts. |
| 748 | - Added validation for 8-bit storage. |
| 749 | - Added validation of OpPhi instructions with pointer result type. |
| 750 | - Added checks for the Vulkan memory model. |
| 751 | - Validate MakeTexelAvailableKHR and MakeTexelVisibleKHR |
| 752 | - Allow atomic function pointer for OpenCL. |
| 753 | - FPRounding mode checks were implemented. |
Steven Perron | e8f22d1 | 2018-11-07 09:20:50 -0500 | [diff] [blame] | 754 | - Added validation for the id bound with an option to set the max id bound. |
Steven Perron | d3738be | 2018-09-27 10:06:44 -0400 | [diff] [blame] | 755 | Fixes: |
| 756 | - #1882: Improve the validation of decorations to reduce memory usage. |
| 757 | - #1891: Fix an potential infinite loop in dead-branch-elimination. |
| 758 | - #1405: Validate the storage class of boolean objects. |
| 759 | - #1880: Identify arrays of type void as invalid. |
| 760 | - #487: Validate OpImageTexelPointer. |
Steven Perron | 2a88bcb | 2018-10-02 11:28:17 -0400 | [diff] [blame] | 761 | - #1922: Validate OpPhi instructions are at the start of a block correctly. |
Steven Perron | 07d0f9d | 2018-10-22 15:10:53 -0400 | [diff] [blame] | 762 | - #1923: Validate function scope variable are at the start of the entry block. |
David Neto | 3e38c99 | 2018-09-07 11:42:12 -0400 | [diff] [blame] | 763 | |
David Neto | b4cb01c | 2018-09-07 11:40:56 -0400 | [diff] [blame] | 764 | v2018.5 2018-09-07 |
David Neto | 4470ff4 | 2018-07-11 13:51:01 -0400 | [diff] [blame] | 765 | - General: |
David Neto | 03896b0 | 2018-09-07 11:37:54 -0400 | [diff] [blame] | 766 | - Support SPV_KHR_vulkan_memory_model |
| 767 | - Update Dim capabilities, to match SPIR-V 1.3 Rev 4 |
| 768 | - Automated build bots no run tests for the VS2013 case |
David Neto | 0d8156a | 2018-08-01 10:29:43 -0400 | [diff] [blame] | 769 | - Support Chromium GN build |
| 770 | - Use Kokoro bots: |
| 771 | - Disable Travis-CI bots |
| 772 | - Disable AppVeyor VisualStudio Release builds. Keep VS 2017 Debug build |
| 773 | - Don't check export symbols on OSX (Darwin): some installations don't have 'objdump' |
David Neto | 4470ff4 | 2018-07-11 13:51:01 -0400 | [diff] [blame] | 774 | - Reorganize source files and namespaces |
| 775 | - Fixes for ClangTidy, and whitespace (passes 'git cl presumit --all -uf') |
| 776 | - Fix unused param compile warnings/errors when Effcee not present |
David Neto | 0d8156a | 2018-08-01 10:29:43 -0400 | [diff] [blame] | 777 | - Avoid including time headers when timer functionality is disabled |
David Neto | 03896b0 | 2018-09-07 11:37:54 -0400 | [diff] [blame] | 778 | - Avoid too-stringent warnings flags for Clang on Windows |
| 779 | - Internal refactoring |
| 780 | - Add hooks for automated fuzzing |
| 781 | - Add testing of command line executables |
David Neto | 4470ff4 | 2018-07-11 13:51:01 -0400 | [diff] [blame] | 782 | - #1688: Use binary mode on stdin; fixes "spirv-dis <foo.spv" on Windows |
David Neto | 85d3715 | 2018-07-18 10:58:22 -0400 | [diff] [blame] | 783 | - Optimizer |
David Neto | 03896b0 | 2018-09-07 11:37:54 -0400 | [diff] [blame] | 784 | - The optimizer validates the module before it begins |
David Neto | 0d8156a | 2018-08-01 10:29:43 -0400 | [diff] [blame] | 785 | - Add API to register passes by string name |
David Neto | 85d3715 | 2018-07-18 10:58:22 -0400 | [diff] [blame] | 786 | - Fold a vector shuffle feeding a vector shuffle |
David Neto | 0d8156a | 2018-08-01 10:29:43 -0400 | [diff] [blame] | 787 | - Add -combine-access-chains transform |
David Neto | 85d3715 | 2018-07-18 10:58:22 -0400 | [diff] [blame] | 788 | - Refactor how IRContext is handled by passes |
David Neto | 0d8156a | 2018-08-01 10:29:43 -0400 | [diff] [blame] | 789 | - Improve bookkeeping for instruction result type and result id |
David Neto | 03896b0 | 2018-09-07 11:37:54 -0400 | [diff] [blame] | 790 | - Fix over-duplication of decorations |
| 791 | - Fix handling of exits from selections in dead-branch elimination, and dead code |
| 792 | elimination. |
| 793 | - Fix handling of certain kinds of flow control in merge-return |
| 794 | Fixes: |
David Neto | 85d3715 | 2018-07-18 10:58:22 -0400 | [diff] [blame] | 795 | - #1721: Fix size bug when folding vector shuffles |
| 796 | - #1722: Fix size infinite loop when folding vector shuffles |
| 797 | - #1724: Fix finding a constant of a specific type |
David Neto | 0d8156a | 2018-08-01 10:29:43 -0400 | [diff] [blame] | 798 | - #1727: Dead branch elim: Reorder blocks if needed to satisfy dominance rule |
| 799 | - #1729: Handle VariablePointers cases in various optimizations |
| 800 | - #1731: Fix vector shuffle with literal id indicating undef value |
David Neto | 03896b0 | 2018-09-07 11:37:54 -0400 | [diff] [blame] | 801 | - #1736: Fix handling of decorations and phis in merge-return |
| 802 | - #1787: Fix handling of decorations related to access chains |
| 803 | - #1865: Avoid leaking memory for SPIR-V constant values |
David Neto | 4470ff4 | 2018-07-11 13:51:01 -0400 | [diff] [blame] | 804 | - Validator |
David Neto | 0d8156a | 2018-08-01 10:29:43 -0400 | [diff] [blame] | 805 | - Improve error messages |
David Neto | 03896b0 | 2018-09-07 11:37:54 -0400 | [diff] [blame] | 806 | - Avoid platform-dependent traversal ordering, to ensure consistent messages |
David Neto | 4470ff4 | 2018-07-11 13:51:01 -0400 | [diff] [blame] | 807 | - Use libspirv::Instruction where possible |
David Neto | 85d3715 | 2018-07-18 10:58:22 -0400 | [diff] [blame] | 808 | - Add option to skip all block layout checks |
David Neto | 03896b0 | 2018-09-07 11:37:54 -0400 | [diff] [blame] | 809 | - Validate all type IDs |
| 810 | - Validate uses of OpFunction |
| 811 | - Validate uses of OpTypeFunction |
| 812 | - Disallow a struct containing its own type https://crbug.com/874372 |
David Neto | 4470ff4 | 2018-07-11 13:51:01 -0400 | [diff] [blame] | 813 | - #1685: Vulkan permits non-monotonic offsets for block members |
| 814 | - #1697: Enforce block layout rules even when using relaxed block layout option |
David Neto | 85d3715 | 2018-07-18 10:58:22 -0400 | [diff] [blame] | 815 | - #1719: Fix line number for vector shuffle valiation error |
David Neto | 03896b0 | 2018-09-07 11:37:54 -0400 | [diff] [blame] | 816 | - #1789: Avoid assertion failure when validating some functions |
| 817 | - #1800: Fix validation of OpCopyMemorySized |
| 818 | - #1822: Stop enforcing struct member offset montonicity |
| 819 | - #1831: Disallow void members in structs |
David Neto | 50312ca | 2018-07-08 12:53:46 -0400 | [diff] [blame] | 820 | |
David Neto | f508896 | 2018-07-08 12:50:46 -0400 | [diff] [blame] | 821 | v2018.4 2018-07-08 |
David Neto | 035afb8 | 2018-06-11 11:08:52 -0400 | [diff] [blame] | 822 | - General: |
David Neto | 9de00c9 | 2018-07-08 12:49:51 -0400 | [diff] [blame] | 823 | - Support SPV_KHR_8bit_storage |
| 824 | - Add gclient and presubmit configurations |
| 825 | - Enable Kokoro build bots (#1625) |
| 826 | - Group tests into fewer executables, reduces load on CI |
| 827 | - Port test script to Python 3 |
| 828 | - Symbol export tests respect SPIRV_SKIP_TESTS |
| 829 | - #1596: Operand lookup succeeds if enabled by a capability |
| 830 | - #1624: Instruction lookup succeeds if enabled by a capability |
| 831 | - Refactoring namespaces: |
| 832 | - #1678: Change libspirv to spvtools |
| 833 | - Code in source/utils moved into spvtools::utils |
| 834 | - Code in source/comp moved into spvtools::comp |
David Neto | 035afb8 | 2018-06-11 11:08:52 -0400 | [diff] [blame] | 835 | - Optimizer: |
| 836 | - Remove insert-extract-elim pass. Use simplification pass instead. |
| 837 | - Preserve instruction-to-block mapping in most passes, to reduce runtime. |
David Neto | 9de00c9 | 2018-07-08 12:49:51 -0400 | [diff] [blame] | 838 | - Small vector optimization for operands |
| 839 | - Add pass to move Private variables to Function. Increase opportunity to optimize. |
David Neto | 035afb8 | 2018-06-11 11:08:52 -0400 | [diff] [blame] | 840 | - Fixes: |
David Neto | 9de00c9 | 2018-07-08 12:49:51 -0400 | [diff] [blame] | 841 | #1120: Check static uses of entry point interfaces |
| 842 | #1372: Avoid merging some structs, to preserve names for reflection |
| 843 | #1577: Scalar replacement uses only undecorated types. |
David Neto | 035afb8 | 2018-06-11 11:08:52 -0400 | [diff] [blame] | 844 | #1578: Fix handling of forward-pointer types, and types embedding pointers |
| 845 | to themselves. |
David Neto | 035afb8 | 2018-06-11 11:08:52 -0400 | [diff] [blame] | 846 | #1591: Inliner: Callee variable with initializer should have a store at the call site. |
David Neto | 9de00c9 | 2018-07-08 12:49:51 -0400 | [diff] [blame] | 847 | #1634: Fix crash: Use type id in vector type lookup |
| 848 | #1649: Fix assert in compact-ids pass |
| 849 | Fix constant folder: ensure it uses the right type |
| 850 | #1659: Folding rules added to IRContext. Avoids leak. |
David Neto | 035afb8 | 2018-06-11 11:08:52 -0400 | [diff] [blame] | 851 | - Validator |
David Neto | 9de00c9 | 2018-07-08 12:49:51 -0400 | [diff] [blame] | 852 | - Add work-in-progress WebGPU environment. Disallows OpUndef |
| 853 | - #670, #1581: Improve error messages; disassemble instruction |
| 854 | - #491: Check structured switches |
| 855 | - #937: Check layout rules for Block and BufferBlock in Uniform, StorageBuffer, PushConstant |
| 856 | - #1281: Check invalid branches into structured constructs |
| 857 | - #1522: Disallow array-of-arrays with DescriptorSets |
David Neto | 035afb8 | 2018-06-11 11:08:52 -0400 | [diff] [blame] | 858 | - #1577: Allow duplicate pointer types. |
| 859 | - #1581: Better messages: output ID names along with numbers in more cases. |
David Neto | 9de00c9 | 2018-07-08 12:49:51 -0400 | [diff] [blame] | 860 | - #1597: Check Vulkan 1.1 capabilities |
| 861 | - #1618: Check invalid exit from structured case construct |
| 862 | - #1622: Run IdPass before DataRulesPass |
| 863 | - #1632: Reduce test time by artificially lowering limits in limit test |
| 864 | - #1638: Block-decorated structs member order must respect offset order |
| 865 | - #1657: Improve CFG validation diagnostics |
| 866 | - Khronos SPIR-V #337: GLSL.std.450 Refract instruction Eta param can be any float scalar. |
| 867 | - #1606: PushConstant Blocks follow storage-buffer layout rules |
| 868 | - #1664: Check layout of StorageBuffer variables with Block decoration, using storage buffer |
| 869 | rules |
| 870 | - #1666: Layout validation should permit {vec3; float} packing |
| 871 | - #1637, #1668: Layout validation uses RowMajor, ArrayStride, MatrixStride properly |
| 872 | - Linker |
| 873 | - Avoid buffer overrun when creating OpModuleProcessed |
David Neto | 6b83643 | 2018-05-25 22:14:30 -0400 | [diff] [blame] | 874 | |
David Neto | 545d6ca | 2018-05-25 22:12:25 -0400 | [diff] [blame] | 875 | v2018.3 2018-05-25 |
David Neto | 5f53c42 | 2018-04-06 16:42:56 -0400 | [diff] [blame] | 876 | - General: |
| 877 | - Support SPV_EXT_descriptor_indexing |
| 878 | - Support SPV_GOOGLE_decorate_string |
| 879 | - Support SPV_GOOGLE_hlsl_functionality1 |
| 880 | - Support SPV_NV_shader_subgroup_partitioned |
| 881 | - Use "unified1" grammar from SPIRV-Headers |
| 882 | - Simplify support for new extensions. Assembler, disassembler, and simple validation |
| 883 | support is automatic if new tokens are introduced with appropriate extension |
| 884 | attributes in the "unified1" SPIR-V core grammar. |
| 885 | - Disassembler: Emit more digits on floating point, to reliably reproduce all |
| 886 | significand bits. (Use std::max_digits10 instead of std::digits10) |
David Neto | 6a986d0 | 2018-05-25 21:58:26 -0400 | [diff] [blame] | 887 | - Fix compilation for old XCode versions: Explicit construction required for std::set. |
David Neto | 5f53c42 | 2018-04-06 16:42:56 -0400 | [diff] [blame] | 888 | - Optimizer: |
| 889 | - Add --strip-reflect |
| 890 | - Add --time-report |
David Neto | 6a986d0 | 2018-05-25 21:58:26 -0400 | [diff] [blame] | 891 | - Add --loop-fission |
| 892 | - Add lop fusion. |
| 893 | - Add loop peeling pass and internal utility. |
| 894 | - Improve optimizer runtime. |
David Neto | 5f53c42 | 2018-04-06 16:42:56 -0400 | [diff] [blame] | 895 | - Merge-return now works with structured control flow. |
| 896 | - New (faster) SSA rewriter to convert local loads and stores to SSA IDs and phis. |
| 897 | Can replace load/store elimination passes. |
| 898 | - Fix instruction folding case: insertion that feeds and extract, when the extract |
| 899 | remains. |
David Neto | 6a986d0 | 2018-05-25 21:58:26 -0400 | [diff] [blame] | 900 | - Fold OpDot. |
| 901 | - Fold OpFNegate. |
| 902 | - Fold multply and divide of same value. |
| 903 | - Fold FClamp feeding a compare. |
| 904 | - Fold OpLoad feeding an extract, to reduce excessive copying. (#1547) |
| 905 | - Fold Fmix feeding an extract. |
| 906 | - Use simplification pass instead of insert-extract elimination. |
| 907 | - Constant fold OpVectorTimesScalar. |
David Neto | 5f53c42 | 2018-04-06 16:42:56 -0400 | [diff] [blame] | 908 | - Copy propagate arrays, in simple cases. |
David Neto | 6a986d0 | 2018-05-25 21:58:26 -0400 | [diff] [blame] | 909 | - Aggressive dead code elimination: Can remove more instructions, e.g. derivatives. |
| 910 | - Aggressive dead code elimination: Remove Workgroup variables that are written but not read. |
David Neto | 5f53c42 | 2018-04-06 16:42:56 -0400 | [diff] [blame] | 911 | - Better handling of OpImageTexelPointer |
David Neto | 5f53c42 | 2018-04-06 16:42:56 -0400 | [diff] [blame] | 912 | - Initial utilities for scalar evolution. |
David Neto | 6a986d0 | 2018-05-25 21:58:26 -0400 | [diff] [blame] | 913 | - Add Vector dead code elimination. |
| 914 | - Each pass can only run once. |
| 915 | - Allow code hosting in if-conversion. |
| 916 | - Add external interface for adding a PassToken, so external code can make their own |
| 917 | passes. |
| 918 | - Fixes: |
| 919 | #1404: Don't optimize away the compute compute workgroup size constant. |
| 920 | #1407: Remove a bad assertion |
| 921 | #1456: Fix bug in SSA rewriter related to variables updated in loops. |
| 922 | #1487: Fix long runtime in Dead insertion elimination: Don't revist select phi nodes. |
| 923 | #1492: Aggressive dead code elimination can remove OpDecorateStringGOOGLE. |
| 924 | #1527: Fix inlining of functions having OpKill and OpUnreachable. |
| 925 | #1559: Fix assert failure in reduce-load-size pass. |
| 926 | #1556: Aggressive dead code elimination: Fix handling of OpCopyMemory. |
David Neto | 5f53c42 | 2018-04-06 16:42:56 -0400 | [diff] [blame] | 927 | - Validator: |
| 928 | - Check Vulkan built-in variables |
| 929 | - Check Vulkan-specific atomic result type rule. |
| 930 | - Relax control barrier check for SPIR-V 1.3. Fixes #1427 |
| 931 | - Check OpPhi. |
David Neto | 6a986d0 | 2018-05-25 21:58:26 -0400 | [diff] [blame] | 932 | - Check OpMemoryModel. |
David Neto | 5f53c42 | 2018-04-06 16:42:56 -0400 | [diff] [blame] | 933 | - Stop checking sizes derived from spec-constants. |
| 934 | - Re-enable checks for OpUConvert. |
David Neto | 6a986d0 | 2018-05-25 21:58:26 -0400 | [diff] [blame] | 935 | - Vulkan: Fix check for PrimitiveId: Permit as Input in fragment shader. |
| 936 | - Validate binary version for the given target environment. |
| 937 | - Add tests for OpBranch checks. |
| 938 | - Vulkan 1.1: Check scope for non-uniform subgroup operations. |
| 939 | - Fix checks for SPV_AMD_gpu_shader_int16. |
| 940 | - Fix logical layout check for OpDecorateId. |
| 941 | - Fix checks for ViewportIndex & Layer for Vulkan and SPV_EXT_shader_viewport_index_layer. |
| 942 | - Fixes: |
| 943 | #1470: Vulkan: Don't restrict WorkgroupSize to Input storage class. |
| 944 | #1469: Vulkan: Permit Subgroup memory scope for Vulkan 1.1. |
| 945 | #1472: Per-vertex variable validation fixes. |
| 946 | #1483: Valdiate barrier execution scopes for Vulkan 1.1. |
David Neto | 5f53c42 | 2018-04-06 16:42:56 -0400 | [diff] [blame] | 947 | - Fixes: |
| 948 | #898: Linker properly removes FuncParamAttr from imported symbols. |
| 949 | #924, #1174: Fix handling of decoration groups in optimizer, linker. |
David Neto | ac43466 | 2018-03-07 17:13:18 -0500 | [diff] [blame] | 950 | |
David Neto | 8d8a712 | 2018-03-07 17:11:50 -0500 | [diff] [blame] | 951 | v2018.2 2018-03-07 |
David Neto | a0da44e | 2018-03-07 17:10:13 -0500 | [diff] [blame] | 952 | - General: |
David Neto | 8d8a712 | 2018-03-07 17:11:50 -0500 | [diff] [blame] | 953 | - Support SPIR-V 1.3 and Vulkan 1.1. |
| 954 | - Default target environment is now SPIR-V 1.3. For command-line tools, |
| 955 | use the --target-env option to override the default. Examples: |
| 956 | # Generate a SPIR-V 1.0 binary instead of SPIR-V 1.3 |
| 957 | spirv-as --target-env spv1.0 a.spvasm -o a.spv |
| 958 | spirv-as --target-env vulkan1.0 a.spvasm -o a.spv |
| 959 | # Validate as Vulkan 1.0 |
| 960 | spirv-val --target-env vulkan1.0 a.spv |
David Neto | a0da44e | 2018-03-07 17:10:13 -0500 | [diff] [blame] | 961 | - Support SPV_GOOGLE_decorate_string and SPV_GOOGLE_hlsl_functionality1 |
| 962 | - Fixes: |
| 963 | - Fix Android.mk build. Compilation was failing due to missing definitions of |
| 964 | SpvCapabilityFloat16ImageAMD and other enumerated values. |
| 965 | - Optimizer: Avoid generating duplicate names when merging types. |
| 966 | - #1375: Validator: SPV_AMD_gpu_shaer_half_float implicitly allows declaration |
| 967 | of the 16-bit floating point type. |
| 968 | - #1376: Optimizer: Avoid folding half-precision float. |
David Neto | fe21921 | 2018-03-02 14:11:58 -0500 | [diff] [blame] | 969 | |
David Neto | 6432a12 | 2018-03-02 14:10:43 -0500 | [diff] [blame] | 970 | v2018.1 2018-03-02 |
David Neto | c452bfd | 2018-02-06 11:47:44 -0500 | [diff] [blame] | 971 | - General: |
| 972 | - Support Visual Studio 2013 again. (Continue support for VS 2015 and VS 2017.) |
David Neto | b08b94e | 2018-02-27 11:48:40 -0500 | [diff] [blame] | 973 | - Support building SPIRV-Tools as a shared library. |
| 974 | - Improve the HLSL legalization optimization recipe. #1311 |
David Neto | c452bfd | 2018-02-06 11:47:44 -0500 | [diff] [blame] | 975 | - Optimizer: |
David Neto | b08b94e | 2018-02-27 11:48:40 -0500 | [diff] [blame] | 976 | - General speedups. |
David Neto | a7cec78 | 2018-03-02 14:01:28 -0500 | [diff] [blame] | 977 | - Remove generic dead code elimination functionality from transforms: |
| 978 | --eliminate-local-single-block |
| 979 | --eliminate-local-single-store |
| 980 | --eliminate-local-multi-store |
| 981 | To recover the previous behaviour, a recipe using those transforms should now |
| 982 | also invoke the --eliminate-dead-code-aggressive transform. |
| 983 | - Improve folding, including coverage for floating point, OpSelect, and arithmetic |
| 984 | with non-trivial constant operands. |
David Neto | b08b94e | 2018-02-27 11:48:40 -0500 | [diff] [blame] | 985 | - Add loop-invariant code motion pass. |
| 986 | - Add loop-unrolling pass, for honouring unroll hits. |
| 987 | - Add loop-unswitch pass. |
| 988 | - Add instruction simplification pass. |
David Neto | c452bfd | 2018-02-06 11:47:44 -0500 | [diff] [blame] | 989 | - Aggressive dead code elimination: Understands capability hierarchy when finding |
| 990 | instructions it can eliminate (combinators). (PR #1268) |
David Neto | b08b94e | 2018-02-27 11:48:40 -0500 | [diff] [blame] | 991 | - CCP can now fold floating point arithmetic. #1311 |
David Neto | c452bfd | 2018-02-06 11:47:44 -0500 | [diff] [blame] | 992 | - Validator: |
| 993 | - Validate barrier instructions. |
David Neto | b08b94e | 2018-02-27 11:48:40 -0500 | [diff] [blame] | 994 | - Check Vulkan-specific rules for atomics. |
David Neto | a7cec78 | 2018-03-02 14:01:28 -0500 | [diff] [blame] | 995 | - Check Vulkan prohibition of Location or Component decorations on BuiltIn variables. |
| 996 | - Linker: |
| 997 | - Add --verify-ids option |
| 998 | - Add option to allow a resulting module to be partially linked. |
| 999 | - Handle OpModuleProcessed (instructions in SPIR-V layout section 7c) |
David Neto | c452bfd | 2018-02-06 11:47:44 -0500 | [diff] [blame] | 1000 | - Fixes: |
| 1001 | - #1265: Optimizer: Fix use-after free bug in if-conversion. (Fix object lifecycle bug |
| 1002 | in type manager.) |
David Neto | b08b94e | 2018-02-27 11:48:40 -0500 | [diff] [blame] | 1003 | - #1282: Fix new warnings found by GCC 8.0.1. |
| 1004 | - #1285: Optimizer: Fix random failures during inlining. (Dangling references in DefUseManager) |
| 1005 | - #1295: Optimizer: Fix incorrect handling of Phi nodes in CCP. |
| 1006 | - #1300: Fix CCP: avoid bad CCP transitions and unsettled values. |
| 1007 | - #1304: Avoid static-duration variables of class type (with constructors). |
| 1008 | - #1323: Fix folding of an insert composite feeding a composite extract. |
| 1009 | - #1339: Fix CCP: Handle OpConstantNull boolean values as conditions. |
| 1010 | - #1341: DCEInst: Keep atomic instructions (and some others with side effects). |
David Neto | a7cec78 | 2018-03-02 14:01:28 -0500 | [diff] [blame] | 1011 | - #1354: Don't fold integer division. |
| 1012 | - #1357: Support OpConstantNull in folding. |
| 1013 | - #1361: CCP: Fix handling of non-constant module-scope values |
David Neto | 1c0056c | 2018-02-02 11:27:07 -0500 | [diff] [blame] | 1014 | |
David Neto | c430a41 | 2018-02-02 11:25:58 -0500 | [diff] [blame] | 1015 | v2018.0 2018-02-02 |
David Neto | bcd4f23 | 2018-02-02 11:23:33 -0500 | [diff] [blame] | 1016 | - General |
| 1017 | - VisualStudio 2013 is no longer supported. VisualStudio 2015 is supported. |
| 1018 | - Use "include/unified1" directory from SPIRV-Headers. Requires recent SPIRV-Headers source. |
David Neto | 38f297c | 2018-01-30 17:47:00 -0500 | [diff] [blame] | 1019 | - Disassembler: spirv-dis adds --color option to force color disassembly. |
Alan Baker | 80b743a | 2018-01-15 13:25:45 -0500 | [diff] [blame] | 1020 | - Optimizer: |
David Neto | 38f297c | 2018-01-30 17:47:00 -0500 | [diff] [blame] | 1021 | - Add pass to eliminate dead insertions. |
| 1022 | - Aggressive dead code elimination now removes OpSwitch constructs. |
| 1023 | - Block merging occurs in more cases. |
| 1024 | - Add driver workaround transform: replace OpUnreachable with harmless branch to merge. |
| 1025 | - Improve instruction folding framework. |
David Neto | bcd4f23 | 2018-02-02 11:23:33 -0500 | [diff] [blame] | 1026 | - Add loop analysis. |
| 1027 | - Add scalar replacement of aggregates to size-optimization recipe. |
| 1028 | - Add pass to replace instructions invalid for a shader stage, with a harmless value. |
| 1029 | This changes the semantics of the program! Not for general use! |
| 1030 | - Rearragne and add passes to performance-optimization recipe, to produce better results. |
David Neto | 38f297c | 2018-01-30 17:47:00 -0500 | [diff] [blame] | 1031 | - Validator: |
David Neto | bcd4f23 | 2018-02-02 11:23:33 -0500 | [diff] [blame] | 1032 | - Validate OpenCL extended instructions. |
David Neto | 38f297c | 2018-01-30 17:47:00 -0500 | [diff] [blame] | 1033 | - Shaders can't perform atomics on floats. |
David Neto | bcd4f23 | 2018-02-02 11:23:33 -0500 | [diff] [blame] | 1034 | - Validate memory semantics values in atomics. |
| 1035 | - Validate instruction-adjacency constraints, e.g. OpPhi predecessors, merge instructions |
| 1036 | immediately precede branches. |
David Neto | ba017f7 | 2018-01-12 18:52:42 -0500 | [diff] [blame] | 1037 | - Fixes: |
| 1038 | - PR 1198: Optimizer: Fix CCP in presence of matrix constants. |
David Neto | ae6daee | 2018-01-16 22:52:39 -0500 | [diff] [blame] | 1039 | - #1199: Optimizer: Fix CCP: don't propagate spec constants. |
| 1040 | - #1203: Optimizer: Fix common uniform elim bug introduced by refactoring. |
David Neto | 38f297c | 2018-01-30 17:47:00 -0500 | [diff] [blame] | 1041 | - #1210: Optimizer: Aggressive dead code elimination: Fix 'break' identification. |
| 1042 | - #1212: Optimizer: Aggressive dead code elimination: Was skipping too many instructions. |
| 1043 | - #1214: Optimizer: Aggressive dead code elimination: Fix infinite loop. |
| 1044 | - #1228: Optimizer: Fix CCP: Handling of varying Phi nodes; was resulting in infinite loop. |
| 1045 | - #1245: Optimizer: Dead branch elimination: Avoid a null pointer dereference. |
| 1046 | - #1250: Optimizer: Dead branch elimination: Avoid spuriously reporting a change. |
David Neto | 86dec64 | 2018-01-12 13:33:43 -0500 | [diff] [blame] | 1047 | |
David Neto | 902ed46 | 2018-01-12 13:32:04 -0500 | [diff] [blame] | 1048 | v2017.3 2018-01-12 |
David Neto | 2e5672d | 2017-12-19 17:50:01 -0500 | [diff] [blame] | 1049 | - General: |
David Neto | 902ed46 | 2018-01-12 13:32:04 -0500 | [diff] [blame] | 1050 | - Support DebugInfo extended instruction set, targeted at OpenCL environments. |
| 1051 | See the SPIR-V Registry. |
| 1052 | - Generate a SPIRV-Tools.pc file for pkg-config. |
David Neto | 2e5672d | 2017-12-19 17:50:01 -0500 | [diff] [blame] | 1053 | - Optimizer: |
David Neto | 902ed46 | 2018-01-12 13:32:04 -0500 | [diff] [blame] | 1054 | - Progress for legalization of code generated from HLSL (issue #1118): |
| 1055 | - Add --legalize-hlsl option to run transforms used to transform intermediate |
| 1056 | code generated by HLSL to SPIR-V for Vulkan compilers. Those compilers |
| 1057 | normally run these transforms automatically. This option is used for developing |
| 1058 | those transforms. |
| 1059 | - Add Private-to-Function variable conversion for modules with logical |
| 1060 | addressing. |
| 1061 | - Add --ccp: SSA Conditional Constant Propagation (CCP) |
| 1062 | - Add --print-all to show disassembly for each optimization pass. |
| 1063 | - Internal: Add loop descriptors and post-order tree iterator. |
| 1064 | - Generalized dead branch elimination |
| 1065 | - Aggressive dead code elimination (ADCE) now removes dead functions and |
| 1066 | module-scope variables. |
| 1067 | - Vector extract/insert elimination now optimizes through some cases of |
| 1068 | VectorShuffle, and GLSL.std.450 Mix extended instruction. |
David Neto | 2e5672d | 2017-12-19 17:50:01 -0500 | [diff] [blame] | 1069 | - Validator: |
David Neto | 902ed46 | 2018-01-12 13:32:04 -0500 | [diff] [blame] | 1070 | - Add validation for GLSL.std.450 extended instruction set. |
| 1071 | - Check out of bounds composite accesses, where that's statically computable. |
| 1072 | Fixes #1112. |
David Neto | 2e5672d | 2017-12-19 17:50:01 -0500 | [diff] [blame] | 1073 | - Check upper bits of literal numbers that aren't a multiple of 32-bits wide. |
| 1074 | - More validation of primitive instructions |
David Neto | 902ed46 | 2018-01-12 13:32:04 -0500 | [diff] [blame] | 1075 | - Add optional "relaxed" checking logical addressing mode to permit some |
| 1076 | cases of pointer-to-pointer. Contributes to HLSL legalization (issue #1118). |
David Neto | 2e5672d | 2017-12-19 17:50:01 -0500 | [diff] [blame] | 1077 | - Fixes: |
| 1078 | #1100: Validator: Image operand Sample can be used with OpImageSparseFetch, |
David Neto | 902ed46 | 2018-01-12 13:32:04 -0500 | [diff] [blame] | 1079 | OpImageSparseRead. |
David Neto | 2e5672d | 2017-12-19 17:50:01 -0500 | [diff] [blame] | 1080 | #1108: Remove duplicates transform was incorrectly removing non-duplicate |
| 1081 | decorations. |
David Neto | 902ed46 | 2018-01-12 13:32:04 -0500 | [diff] [blame] | 1082 | #1111: Optimizer's type manager could reference deleted memory. |
| 1083 | #1112: Fix decoration equality check, e.g. it is now symmetric. |
| 1084 | #1129: Validator now disallows Dim=SupbassData for OpImageSparseRead. |
| 1085 | #1143: Fix CCP: Was generating incorrect code for loops. |
| 1086 | #1153: Fix CCP crash. |
| 1087 | #1154: Optimizer's internal instruction-to-block mappings were sometimes |
| 1088 | inconsistent. |
| 1089 | #1159: Fix CCP infinite loop. |
| 1090 | #1168: Fix dead branch elimination intermittently generating incorrect code. |
| 1091 | Fixes https://github.com/KhronosGroup/glslang/issues/1205 |
| 1092 | #1186: Fix validation of PackDouble2x32 and UnpackDouble2x32 |
David Neto | 7361034 | 2017-12-15 18:24:41 -0500 | [diff] [blame] | 1093 | |
David Neto | 1ccfb58 | 2017-12-15 18:21:55 -0500 | [diff] [blame] | 1094 | v2017.2 2017-12-15 |
| 1095 | - General: |
| 1096 | - Support OpenCL 1.2, 2.0 target environments, including embedded profiles |
| 1097 | - Add CONTRIBUTING.md |
| 1098 | - Fix exit status code for spirv-link |
| 1099 | - Disassember: Enable emitting ANSI colour codes to a string |
| 1100 | - Library avoids polluting global namespace. The libraries can export C and C++ |
| 1101 | symbols starting with "spv", or in a C++ namespace. Add a test for this. |
| 1102 | - Linux release builds include debug information, for easier profiling |
| 1103 | - Build bots no longer test VisualStudio 2013 |
| 1104 | - Testing dependency RE2 requires VisualStudio 2015 or later |
| 1105 | - Build bots check code formatting |
Stephen McGroarty | 8ba68fa | 2017-11-27 21:21:26 +0000 | [diff] [blame] | 1106 | - Optimizer: |
David Neto | 1ccfb58 | 2017-12-15 18:21:55 -0500 | [diff] [blame] | 1107 | - Add --skip-validation to spirv-opt |
| 1108 | - Add dominance tree analysis |
| 1109 | - Add generic value propagation engine |
| 1110 | - Add global redundancy elimination within a function |
| 1111 | - Add scalar replacement of function-scope variables of composite type |
| 1112 | - Aggressive dead code elimination: Remove empty loops |
| 1113 | - Killing an instruction notifies the IRContext |
| 1114 | - IRContext::KillInst deletes the instruction |
| 1115 | - Move CFG analysis to IRContext |
| 1116 | - Add constant manager |
| 1117 | - Fix: Don't consider derivative instructions as combinators. |
| 1118 | - Fix: Don't delete an instruction twice in local dead-code-elimination |
| 1119 | - Fix: Don't consider derivative instructions as combinators. |
| 1120 | - Validator: |
| 1121 | - Finish checking of image instructions (Section 3.32.10) |
| 1122 | - Check sparse image instructions |
| 1123 | - Check OpTypeImage, OpTypeSampleImage |
| 1124 | - Check composite instructions (Section 3.32.12) |
| 1125 | - Check atomic instructions (Section 3.32.18) |
| 1126 | - Check OpEmitStreamVertex, OpEndStreamPrimitive instructions |
| 1127 | - Re-enable validation of OpCopyObject |
| 1128 | - OpKill, image ImplicitLod and QueryLod instructions can only be used in Fragment |
| 1129 | shaders. |
| 1130 | - Fixes for image instruction validation: |
| 1131 | - Lod image operand only usable with ExplicitLod and OpImageFetch |
| 1132 | - ExplicitLod Lod image operand must be float scalar |
| 1133 | - OpImageFectch Lod image operand must be int scalar |
| 1134 | - OpImageGather component operand must be 32-bits (integer scalar) |
| 1135 | - OpImageQuerySizeLod Lod must be integer scalar |
Alan Baker | 0cae89e | 2017-11-23 23:08:58 -0500 | [diff] [blame] | 1136 | - Fixes: |
David Neto | 1ccfb58 | 2017-12-15 18:21:55 -0500 | [diff] [blame] | 1137 | #622: Remove names and decorations when inlining |
| 1138 | #989: Aggressive dead code elim: Don't optimize away live breaks from a loop |
| 1139 | #991: Fix validation of SPV_AMD_shader_ballot |
Alan Baker | 0cae89e | 2017-11-23 23:08:58 -0500 | [diff] [blame] | 1140 | #1004: Use after free of an instruction, in remove-duplicates transform |
David Neto | e1a6f8d | 2017-11-24 10:17:13 -0500 | [diff] [blame] | 1141 | #1007: OpImageRead not required to return 4-component vector |
| 1142 | #1009: OpImageRead can return scalar int/float types |
David Neto | 1ccfb58 | 2017-12-15 18:21:55 -0500 | [diff] [blame] | 1143 | #1011: OpImageWrite should allow scalar int/float texel types |
| 1144 | #1012: Fix validat Dref type check |
| 1145 | #1017: Load-store elimination considers variable initializations |
| 1146 | #1034: Fix Windows debug build: operator< should be a weak ordering |
| 1147 | #1083: Inlining: Set parent (function) for each inlined basic block. |
| 1148 | #1075: Aggressive dead code elimination: Was leaving dangling references to |
| 1149 | removed blocks. |
David Neto | b0a7037 | 2017-11-23 18:16:41 -0500 | [diff] [blame] | 1150 | |
David Neto | 493c088 | 2017-11-23 18:12:23 -0500 | [diff] [blame] | 1151 | v2017.1 2017-11-23 |
David Neto | 1affe5a | 2017-10-04 17:02:39 -0400 | [diff] [blame] | 1152 | - Update README with details on the public_spirv_tools_dev@khronos.org mailing list. |
David Neto | d84df94 | 2017-09-26 11:30:57 -0400 | [diff] [blame] | 1153 | - General: |
David Neto | 493c088 | 2017-11-23 18:12:23 -0500 | [diff] [blame] | 1154 | - Automatically deploy built artifacts to GitHub Releases |
| 1155 | - Add a Linker (module combiner). Under development. |
| 1156 | - Add Android.mk for Android NDK builds. |
David Neto | 76555bd | 2017-11-08 00:23:42 -0500 | [diff] [blame] | 1157 | - Add the 'effcee' library as an optional dependency for use in tests. |
| 1158 | Eventually it will be a required dependency, once downstream projects have |
David Neto | 493c088 | 2017-11-23 18:12:23 -0500 | [diff] [blame] | 1159 | a chance to adjust. Requires 're2' library. |
David Neto | d84df94 | 2017-09-26 11:30:57 -0400 | [diff] [blame] | 1160 | - Avoid static-duration variables of class type (with constructors). |
David Neto | 493c088 | 2017-11-23 18:12:23 -0500 | [diff] [blame] | 1161 | - Hack around bugs in gcc-4.8.1 template handling |
| 1162 | - Faster opcode lookup |
Andrey Tuganov | 82df4bb | 2017-08-30 10:13:10 -0400 | [diff] [blame] | 1163 | - Validator: |
David Neto | a91cecf | 2017-09-14 10:35:22 -0400 | [diff] [blame] | 1164 | - Recognize extensions listed on SPIR-V registry, |
| 1165 | through #25 SPV_AMD_shader_fragment_mask |
David Neto | 493c088 | 2017-11-23 18:12:23 -0500 | [diff] [blame] | 1166 | - Validator issues an info message when it sees an unrecognized extension. |
| 1167 | - Type check basic arithmetic operations |
| 1168 | - Type check carry/extended arithmetic operations |
| 1169 | - Type check vector arithmetic operations |
| 1170 | - Type check Relational and Logical instructions |
| 1171 | - Type check Bit instructions |
| 1172 | - Check type uniqueness rules |
| 1173 | - Check conversion instructions |
| 1174 | - Check image instructions |
| 1175 | - Check derivative instructions |
| 1176 | - Check OpVectorShuffle |
| 1177 | - Check OpBranchConditional |
| 1178 | - OpModuleProcessed is only allowed after debug names section and before annotations |
| 1179 | section. |
| 1180 | - Checks the right kind of return is called for each function (void or non-void). |
| 1181 | - Add option to relax type check when storing structs (--relax-store-struct) |
David Neto | d84df94 | 2017-09-26 11:30:57 -0400 | [diff] [blame] | 1182 | - Optimizer: |
David Neto | 493c088 | 2017-11-23 18:12:23 -0500 | [diff] [blame] | 1183 | - Refactoring internal representation of the module, including: |
| 1184 | - IRContext: owns a module and manages analyses |
| 1185 | - Instructions are owned by intrusive lists, and have unique IDs |
| 1186 | - BasicBlock owns its instruction list. |
| 1187 | - DefUseManager: change representation of uses, for faster processing |
| 1188 | on large modules. |
| 1189 | - Add high level recipes: -O, -Os, and -Oconfig |
| 1190 | Recipes for -O and -Os are under development. |
| 1191 | - Add eliminate-dead-function transform |
David Neto | d84df94 | 2017-09-26 11:30:57 -0400 | [diff] [blame] | 1192 | - Add strength reduction transform: For now, convert multiply by power of 2 |
| 1193 | to a bit shift. |
David Neto | 493c088 | 2017-11-23 18:12:23 -0500 | [diff] [blame] | 1194 | - Add CFG cleanup transform |
| 1195 | - Add removal of dead module-scope variables |
| 1196 | - Add merge-return transform for modules without structured control flow |
| 1197 | - Add redundancy elimination within a basic block (local value numbering) |
| 1198 | - Extract-insert elimination: |
| 1199 | - Recognize the case where the first instruction in the sequence is an |
| 1200 | OpCompositeConstruct or OpConstantComposite |
| 1201 | - Handle some cases of nested structs |
| 1202 | - Dead branch elimination now can eliminate entire selection constructs |
| 1203 | when all arms are dead. |
| 1204 | - Compressing codec: |
| 1205 | - Updated algorithm to 1.01, 1.02, 1.03 |
| 1206 | - Not built by default. Use -DSPIRV_BUILD_COMPRESSION=ON to build. |
| 1207 | - Codec can be parameterized by a customized model. |
David Neto | 25ddfec | 2017-09-02 19:01:03 -0400 | [diff] [blame] | 1208 | - Fixes: |
David Neto | 493c088 | 2017-11-23 18:12:23 -0500 | [diff] [blame] | 1209 | #728: Fix decoration of inlined functions |
David Neto | 40e9c60 | 2017-09-01 18:12:15 -0400 | [diff] [blame] | 1210 | #798: spirv-as should fail when given unrecognized long option |
David Neto | 25ddfec | 2017-09-02 19:01:03 -0400 | [diff] [blame] | 1211 | #800: Inliner: Fix inlining function into header of multi-block loop |
David Neto | d84df94 | 2017-09-26 11:30:57 -0400 | [diff] [blame] | 1212 | #824: Eliminate-local-multi-store: Fix a crash |
| 1213 | #826: Elimiante-local-multi-store: Fix a crash |
David Neto | 6eaaf7b | 2017-09-27 10:03:20 -0400 | [diff] [blame] | 1214 | #827: Fix crash when compact-ids transform runs before another transform. |
Andrey Tuganov | c25b5be | 2017-09-25 12:45:48 -0400 | [diff] [blame] | 1215 | #834: Add Cmake option to build the compressing codec. Off by default. |
David Neto | 493c088 | 2017-11-23 18:12:23 -0500 | [diff] [blame] | 1216 | #911: Fix classification of Line and NoLine instructions |
David Neto | 7e2d26c | 2017-09-01 16:28:22 -0400 | [diff] [blame] | 1217 | |
David Neto | d16403a | 2017-09-01 16:24:27 -0400 | [diff] [blame] | 1218 | v2017.0 2017-09-01 |
| 1219 | - Update README to describe that assembler, disassembler, and binary parser support |
| 1220 | are based on grammar files from the SPIRV-Headers repository. |
| 1221 | |
David Neto | a0977e8 | 2017-09-01 16:14:25 -0400 | [diff] [blame] | 1222 | v2016.7 2017-09-01 |
David Neto | dbc2049 | 2017-03-14 12:43:41 -0400 | [diff] [blame] | 1223 | - Add SPIR-V 1.2 |
| 1224 | - OpenCL 2.2 support is now based on SPIR-V 1.2 |
David Neto | 0b0454c | 2017-06-22 10:22:55 -0400 | [diff] [blame] | 1225 | - Support AMD extensions in assembler, disassembler: |
| 1226 | SPV_AMD_gcn_shader |
| 1227 | SPV_AMD_shader_ballot |
| 1228 | SPV_AMD_shader_explicit_vertex_parameter |
| 1229 | SPV_AMD_shader_trinary_minmax |
| 1230 | SPV_AMD_gpu_shader_half_float |
| 1231 | SPV_AMD_texture_gather_bias_lod |
| 1232 | SPV_AMD_gpu_shader_int16 |
| 1233 | - Optimizer: Add support for: |
| 1234 | - Inline all function calls in entry points. |
David Neto | 15612fe | 2017-08-01 15:33:15 -0400 | [diff] [blame] | 1235 | - Flatten decoration groups. Fixes #602 |
David Neto | 0b0454c | 2017-06-22 10:22:55 -0400 | [diff] [blame] | 1236 | - Id compaction (minimize Id bound). Fixes #624 |
| 1237 | - Eliminate redundant composite insert followed by extract |
| 1238 | - Simplify access chains to local variables |
| 1239 | - Eliminate local variables with a single store, if possible |
David Neto | 15612fe | 2017-08-01 15:33:15 -0400 | [diff] [blame] | 1240 | - Eliminate local variables with a several stores, if possible |
David Neto | 0b0454c | 2017-06-22 10:22:55 -0400 | [diff] [blame] | 1241 | - Eliminate loads and stores in same block to local variables |
David Neto | 15612fe | 2017-08-01 15:33:15 -0400 | [diff] [blame] | 1242 | - Eliminate redundant insert/extract to composite values |
| 1243 | - Aggressive dead instruction elimination |
| 1244 | - Eliminate dead branches |
| 1245 | - Merge blocks when the second can only be preceded by the first |
David Neto | 95a600c | 2017-08-04 17:48:22 -0400 | [diff] [blame] | 1246 | - Eliminate ommon uniform loads |
David Neto | 1d8efb0 | 2017-04-20 15:54:10 -0400 | [diff] [blame] | 1247 | - Assembler: Add option to preserve numeric ids. Fixes #625 |
David Neto | f8cc397 | 2016-12-16 15:32:56 -0500 | [diff] [blame] | 1248 | - Add build target spirv-tools-vimsyntax to generate spvasm.vim, a SPIR-V |
| 1249 | assembly syntax file for Vim. |
David Neto | 699943d | 2017-01-17 15:41:23 -0500 | [diff] [blame] | 1250 | - Version string: Allow overriding of wall clock timestamp with contents |
| 1251 | of environment variable SOURCE_DATE_EPOCH. |
David Neto | e3632a2 | 2017-02-28 11:53:05 -0500 | [diff] [blame] | 1252 | - Validator implements relaxed rules for SPV_KHR_16bit_storage. |
David Neto | 826d968 | 2017-07-04 12:27:31 -0400 | [diff] [blame] | 1253 | - CMake installation rules use GNUInstallDirs. For example, libraries |
| 1254 | will be installed into a lib64 directory if that's the norm for the |
| 1255 | current system. |
David Neto | 37422e9 | 2016-12-19 13:26:42 -0500 | [diff] [blame] | 1256 | - Fixes: |
Ehsan Nasiri | da4ae05 | 2017-02-15 13:29:33 -0500 | [diff] [blame] | 1257 | #500: Parameterize validator limit checks |
David Neto | 37422e9 | 2016-12-19 13:26:42 -0500 | [diff] [blame] | 1258 | #508: Support compilation under CYGWIN |
Ehsan Nasiri | 109ce22 | 2017-01-05 12:53:02 -0500 | [diff] [blame] | 1259 | #517: Fix validation when continue (or case) contstruct is also the head of a |
| 1260 | nested control construct. |
David Neto | dadd516 | 2017-02-09 14:23:52 -0500 | [diff] [blame] | 1261 | #551: If a merge block is reachable, it must be *strictly* dominated by its |
| 1262 | header. |
Adam Van Ymeren | c094970 | 2017-02-15 13:31:07 -0500 | [diff] [blame] | 1263 | #548: Validator: Error when the reserved OpImageSparseSampleProj* opcodes |
| 1264 | are used. |
David Neto | afc60bb | 2017-04-02 02:17:41 -0400 | [diff] [blame] | 1265 | #611: spvtools::Optimizer was failing to save the module to the output |
| 1266 | binary vector when all passes succeded without changes. |
David Neto | 51b6778 | 2017-05-12 17:35:18 -0400 | [diff] [blame] | 1267 | #629: The inline-entry-points-all optimization could generate invalidly |
| 1268 | structured code when the inlined function had early returns. |
David Neto | 35a0695 | 2017-07-04 16:24:46 -0400 | [diff] [blame] | 1269 | #697: Optimizer's Instruction::ForEachInId method was skipping semantics-id |
| 1270 | and scope-id. |
David Neto | 720869b | 2017-08-10 13:13:33 -0400 | [diff] [blame] | 1271 | #755: Inliner: Fix inlining of callee with single Return appearing before |
| 1272 | the end of the function. |
David Neto | fc60d1e | 2017-08-30 14:25:23 -0400 | [diff] [blame] | 1273 | #776: Fix dead branch elimination in presence of complex but dead control |
| 1274 | flow. |
David Neto | d843cae | 2017-09-01 10:15:42 -0400 | [diff] [blame] | 1275 | #781: SPV_KHR_variable_pointers allows duplicate pointer types |
David Neto | 9090da5 | 2017-08-29 23:22:07 -0400 | [diff] [blame] | 1276 | #782: Inliner: Fix remapping of non-label forward references in callee |
David Neto | f241374 | 2017-09-01 16:13:12 -0400 | [diff] [blame] | 1277 | #787: Inliner: Fix remapping of inlined entry block when called from |
| 1278 | single block loop. |
| 1279 | #790: Inliner: Fix remapping of inlined entry block when callee has |
| 1280 | multiple returns. |
David Neto | 68c5f04 | 2016-12-13 11:49:50 -0500 | [diff] [blame] | 1281 | |
David Neto | 5f5fa3a | 2016-12-13 11:49:09 -0500 | [diff] [blame] | 1282 | v2016.6 2016-12-13 |
Lei Zhang | 620f05e | 2016-09-16 16:12:04 -0400 | [diff] [blame] | 1283 | - Published the C++ interface for assembling, disassembling, validation, and |
| 1284 | optimization. |
David Neto | ee6c877 | 2016-10-12 10:47:28 -0400 | [diff] [blame] | 1285 | - Support SPV_KHR_shader_draw_parameters in assembler, disassembler, parser. |
David Neto | 5f5fa3a | 2016-12-13 11:49:09 -0500 | [diff] [blame] | 1286 | - Validator: |
| 1287 | - Add validator API accepting raw binary words |
| 1288 | - Increased coverage: |
| 1289 | - Checks "Data rules" in Universal Validation Rules, section 2.16.1 |
| 1290 | - WIP: Universal Limits. |
| 1291 | - The minimum mandated upper bounds are checked. |
| 1292 | - TODO: Parameterize the validator to allow larger limits accepted by |
| 1293 | a more than minimally capable implementation. |
| 1294 | - OpSampledImage checks |
| 1295 | - OpConstantComposite checks |
| 1296 | - Id bound check |
| 1297 | - Disasssembler: |
| 1298 | - Generates friendly GLSL-based names for more builtin variables |
| 1299 | - Generates friendly names for numeric OpConstant values |
| 1300 | - Vendor tool info extracted from SPIR-V XML registry file. |
Umar Arshad | a6ef1ea | 2016-09-22 10:23:08 -0400 | [diff] [blame] | 1301 | - Fixes issues: |
| 1302 | #429: Validator: Allow OpTypeForwardPointer and OpTypeStruct to reference |
| 1303 | undefined IDs |
David Neto | 5f5fa3a | 2016-12-13 11:49:09 -0500 | [diff] [blame] | 1304 | #482: Validator: OpVariable initializer can be an ID of a module-scope variable |
David Neto | 6519fce | 2016-09-16 16:40:00 -0400 | [diff] [blame] | 1305 | |
David Neto | f9763ac | 2016-09-16 16:39:40 -0400 | [diff] [blame] | 1306 | v2016.5 2016-09-16 |
David Neto | 9382035 | 2016-09-16 14:40:02 -0400 | [diff] [blame] | 1307 | - Support SPV_KHR_shader_ballot in assembler, disassembler, parser. |
David Neto | e0dd033 | 2016-09-13 12:38:42 -0400 | [diff] [blame] | 1308 | - Disassembler: Generate friendly names for built-in variables. |
David Neto | 26b51ef | 2016-09-12 16:48:05 -0400 | [diff] [blame] | 1309 | - Partial fixes: |
| 1310 | #359: Add Emacs helper for automatically diassembling/assembling a SPIR-V |
| 1311 | binary on file load/save. |
David Neto | 5c9080e | 2016-09-14 11:04:19 -0400 | [diff] [blame] | 1312 | - Fixes: |
David Neto | 247e024 | 2016-09-14 15:22:47 -0400 | [diff] [blame] | 1313 | #414: Validator: Allow OpUndef for composite constants |
David Neto | 5c9080e | 2016-09-14 11:04:19 -0400 | [diff] [blame] | 1314 | #415: Validator: Phi can use its own value in some cases. |
David Neto | e70a957 | 2016-09-01 15:38:53 -0400 | [diff] [blame] | 1315 | |
David Neto | 9fc8658 | 2016-09-01 15:33:59 -0400 | [diff] [blame] | 1316 | v2016.4 2016-09-01 |
| 1317 | - Relicensed under Apache 2.0 |
qining | 380f36e | 2016-08-04 13:24:08 -0400 | [diff] [blame] | 1318 | - Add optimization passes (in API and spirv-opt command) |
| 1319 | - Fold spec constants defined with OpSpecConstantOp and |
| 1320 | OpSpecConstantComposite to normal constants with fixed value(s). |
David Neto | 9fc8658 | 2016-09-01 15:33:59 -0400 | [diff] [blame] | 1321 | - Fixes issues: |
| 1322 | #318: Relicensed under Apache 2.0 |
David Neto | 0d4b73c | 2016-08-24 11:18:16 -0400 | [diff] [blame] | 1323 | |
David Neto | a7a84bd | 2016-08-24 11:17:07 -0400 | [diff] [blame] | 1324 | v2016.3 2016-08-24 |
David Neto | c296701 | 2016-08-05 18:19:30 -0400 | [diff] [blame] | 1325 | - Add target environment enums for OpenCL 2.1, OpenCL 2.2, |
| 1326 | OpenGL 4.0, OpenGL 4.1, OpenGL 4.2, OpenGL 4.3, OpenGL 4.5. |
David Neto | 996a814 | 2016-08-03 11:55:14 -0400 | [diff] [blame] | 1327 | - Add spirv-cfg, an experimental tool to dump the control flow graph |
| 1328 | as a GraphiViz "dot" graph |
| 1329 | - Add optimization pass: Eliminate dead constants. |
David Neto | 3c35b63 | 2016-08-22 11:38:18 -0400 | [diff] [blame] | 1330 | - Add spirv-lesspipe.sh filter utility |
qining | 23266c9 | 2016-08-10 16:02:18 -0400 | [diff] [blame] | 1331 | - Fixes issues: |
David Neto | 7784829 | 2016-08-10 10:40:59 -0400 | [diff] [blame] | 1332 | #288: Check def-use dominance rules for OpPhi (variable,parent) operands |
David Neto | a7a84bd | 2016-08-24 11:17:07 -0400 | [diff] [blame] | 1333 | #339: Allow OpUndef in types-constants-global-vars section, as required |
| 1334 | by SPIR-V 1.0 Rev7, 1.1 Rev 3. |
David Neto | 033b7d0 | 2016-08-12 14:19:17 -0400 | [diff] [blame] | 1335 | #340: Avoid race on mkdir during build |
David Neto | 97d06a3 | 2016-08-24 09:47:49 -0400 | [diff] [blame] | 1336 | #365: Relax PointSize, ClipDistance, CullDistance capability check in all |
| 1337 | environments not just Vulkan 1.0. |
David Neto | aa30312 | 2016-08-05 17:10:36 -0400 | [diff] [blame] | 1338 | |
David Neto | 8e3ac3c | 2016-08-05 17:07:34 -0400 | [diff] [blame] | 1339 | v2016.2 2016-08-05 |
Umar Arshad | efc782d | 2016-07-13 18:57:52 -0400 | [diff] [blame] | 1340 | - Validator is incomplete |
| 1341 | - Checks ID use block is dominated by definition block |
David Neto | c978b72 | 2016-07-27 17:02:22 -0400 | [diff] [blame] | 1342 | - Add optimization passes (in API and spirv-opt command) |
qining | a245062 | 2016-07-26 12:11:03 -0400 | [diff] [blame] | 1343 | - Strip debug info instructions |
| 1344 | - Freeze spec constant to their default values |
David Neto | 8e3ac3c | 2016-08-05 17:07:34 -0400 | [diff] [blame] | 1345 | - Allow INotEqual as operation for OpSpecConstantOp |
David Neto | c978b72 | 2016-07-27 17:02:22 -0400 | [diff] [blame] | 1346 | - Fixes bugs: |
| 1347 | #270: validator: crash when continue construct is unreachable |
| 1348 | #279: validator: infinite loop when analyzing some degenerate control |
| 1349 | flow graphs |
David Neto | 8e3ac3c | 2016-08-05 17:07:34 -0400 | [diff] [blame] | 1350 | #286: validator: don't incorrectly generate def-use error for |
| 1351 | (variable,parent) parameters to OpPhi |
David Neto | 9acc0f1 | 2016-08-02 11:59:10 -0400 | [diff] [blame] | 1352 | #290: disassembler: never generate bare % for an identifier |
David Neto | 621fa39 | 2016-08-04 14:57:09 -0400 | [diff] [blame] | 1353 | #295: validator: def-use dominance check should ignore unreachable uses |
David Neto | 8e3ac3c | 2016-08-05 17:07:34 -0400 | [diff] [blame] | 1354 | #276: validator: allow unreachable continue constructs |
| 1355 | #297: validator: allow an unreachable block to branch to a reachable |
| 1356 | merge block |
Lei Zhang | 45af1dd | 2016-07-19 15:04:43 -0400 | [diff] [blame] | 1357 | |
Lei Zhang | 1e7c5cb | 2016-07-19 15:03:52 -0400 | [diff] [blame] | 1358 | v2016.1 2016-07-19 |
David Neto | 06581f5 | 2016-07-07 17:03:22 -0400 | [diff] [blame] | 1359 | - Fix https://github.com/KhronosGroup/SPIRV-Tools/issues/261 |
| 1360 | Turn off ClipDistance and CullDistance capability checks for Vulkan. |
David Neto | 0bdcc23 | 2016-07-08 14:29:52 -0400 | [diff] [blame] | 1361 | - The disassembler can emit friendly names based on debug info (OpName |
| 1362 | instructions), and will infer somewhat friendly names for most types. |
| 1363 | This is turned on by default for the spirv-dis command line tool. |
Lei Zhang | 1e7c5cb | 2016-07-19 15:03:52 -0400 | [diff] [blame] | 1364 | - Updated to support SPIR-V 1.1 rev 2 |
| 1365 | - Input StorageClass, Sampled1D capability, and SampledBuffer capability |
| 1366 | do not require Shader capability anymore. |
David Neto | ce7ced1 | 2016-07-04 15:13:08 -0400 | [diff] [blame] | 1367 | |
David Neto | 8405893 | 2016-06-02 15:29:13 -0400 | [diff] [blame] | 1368 | v2016.0 2016-07-04 |
David Neto | 9166854 | 2016-04-21 20:50:11 -0400 | [diff] [blame] | 1369 | |
| 1370 | - Adds v<year>.<index> versioning, with "-dev" indicating |
| 1371 | work in progress. The intent is to more easly report |
| 1372 | and summarize functionality when SPIRV-Tools is incorporated |
| 1373 | in downstream projects. |
| 1374 | |
| 1375 | - Summary of functionality (See the README.md for more): |
| 1376 | - Supports SPIR-V 1.1 Rev 1 |
| 1377 | - Supports SPIR-V 1.0 Rev 5 |
| 1378 | - Supports GLSL std450 extended instructions 1.0 Rev 3 |
| 1379 | - Supports OpenCL extended instructions 1.0 Rev 2 |
| 1380 | - Assembler, disassembler are complete |
| 1381 | - Supports floating point widths of 16, 32, 64 bits |
| 1382 | - Supports integer widths up to 64 bits |
| 1383 | - Validator is incomplete |
David Neto | 8405893 | 2016-06-02 15:29:13 -0400 | [diff] [blame] | 1384 | - Checks capability requirements in most cases |
| 1385 | - Checks module layout constraints |
| 1386 | - Checks ID use-definition ordering constraints, |
| 1387 | ignoring control flow |
| 1388 | - Checks some control flow graph rules |
| 1389 | - Optimizer is introduced, with few available transforms. |
David Neto | 9166854 | 2016-04-21 20:50:11 -0400 | [diff] [blame] | 1390 | - Supported on Linux, OSX, Android, Windows |
David Neto | 37e4600 | 2016-06-14 11:45:35 -0400 | [diff] [blame] | 1391 | |
| 1392 | - Fixes bugs: |
| 1393 | - #143: OpenCL pow and pown arguments |