forked from KhronosGroup/SPIRV-Tools
-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Sync to upstream #1
Merged
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This fixes a GN header check in the Chromium integration.
This allows the targets to be used in other cmake projects. See the following for more details: https://cmake.org/cmake/help/latest/manual/cmake-packages.7.html#creating-packages https://foonathan.net/blog/2016/07/07/cmake-dependency-handling.html
As far as I know, it is legal to have multiple decoration adding the same decoration to the same id. The validator registers all of these decoration as if they were distinct decorations. This can cause poor memory usage and performance in some cases. This fix is to make sure that duplicates are not registers. I keep the type of the decoration list as an std::vector because I expect it to be small enough in most cases that the linear search will still be faster that using some type of map. No tests are added because we do not have a mechanism to test memory usage in our unit tests. Fixes #2837. The total memory usage drop to 14,236KB.
* Validate the target's opcode is acceptable * Update tests * New tests * move early exit for builtins a bit later in the pass
Fixes crbug.com/997246
* Handle id overflow in the ssa rewriter. Remove LocalSSAElim pass at the same time. It does the same thing as the SSARewrite pass. Then even share almost all of the same code. Fixes crbug.com/997246
…2838) The implementation of these passes had overlooked the fact that adding a new edge to a control flow graph can change dominance information. Adding a dead break/continue risks causing uses to no longer be dominated by their definitions. This change introduces various tests to expose such scenarios, and augments the preconditions for these transformations with checks to guard against the situation.
Before this change there was quite a lot of duplication in the code being used to choose random percentages, and some of it was incorrect so that a percentage chance of (100-N)% instead of N% was being used. Also there was a lot of duplicate code to choose a random index into a vector. This change eliminates that duplication (fixing up the percentage problem), and gets rid of direct access to the random number generator being used for fuzzing, so that all randomization requests must go through the FuzzerContext class, discouraging future ad-hoc uses of the random number generator.
Fix tests that violated this rule. Fixes #2257
If an OpKill instruction is inlined into a continue construct, then the spir-v is no longer valid. To avoid this issue, we do inline into an OpKill at all. This method was chosen because it is difficult to keep track of whether or not you are in a continue construct while changing the function that is being inlined into. This will work well with wrap OpKill because every will still be inlined except for the OpKill instruction itself. Fixes #2554 Fixes #2433 This reverts commit aa9e8f5.
A new fuzzer pass that randomly introduces OpCopyObject instructions that make copies of ids, and uses the fact manager to record the fact that an id %id is synonymous with an id generated by an OpCopyObject applied to %id. (A future pass will exploit such synonym facts.)
* Ensure same enum values have consistent extension lists * val: fix checking of capabilities The operand for an OpCapability should only be checked for the extension or core version. The InstructionPass registers a capability, and all its implied sub-capabilities before actually checking the operand to an OpCapability. * Add basic support for SPIR-V 1.5 - Adds SPV_ENV_UNIVERSAL_1_5 - Command line tools default to spv1.5 environment - SPIR-V 1.5 incorporates several extensions. Now the disassembler prefers outputing the non-EXT or non-KHR names. This requires updates to many tests, to make strings match again. - Command line tests: Expect SPIR-V 1.5 by default * Test validation of SPIR-V 1.5 incorporated extensions Starting with 1.5, incorporated features no longer require the associated OpExtension instruction.
* Vulkan specific checks * storage buffer variables must be structs or arrays of structs * storage buffer struct must be Block decorated * uniform struct must be Block or BufferBlock decorated * new tests
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
No description provided.