[AMDGPU][SIPreEmitPeephole] Missing condition in mustRetainExeczBranch #121787
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.
If the code in the "then" block is modifying the exec mask, we must retain the s_cbranch_execz branch.
Consider this example:
If the branch is removed, when we reach after exec is never zero, while before it would have been zero.
I stumbled upon this bug by accident. I'm trying to see if the bug is more general than this (this should be a problem for any SALU operation writing to a non-SSA register) and how to test it. Maybe something like
Edit: I saw an example where there was a
movtom0Edit++: I just realized that this pass is run after the virtual register are lowered to physical registers, so any scalar operation writing to a physical register would pose a problem. Am I right ?