[LLPC] Fully scalarize compares and selects #2831
Merged
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.
A while back, we switch to no longer always fully scalarizing in order to preserve packed 16-bit operations.
This had the effect that comparisons and selects were no longer scalarized due to limitations in LLVM's ScalarizerPass. And it seems that there is some correctness error, most likely somewhere else in the backend, which unfortunately hasn't been fully root caused.
In any case, there are no packed compares and (vector condition) selects, and fully scalarizing them tends to produce better code. So let's do that explicitly in the frontend as a quick fix.
Fixes: Red Dead Redemption with FSR 2.0
Fixes: c8f8da9 ("lgc: set scalarizer min-bits to 32")