[Arith] Updated incorrect simplification rule #13922
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.
The rules that rewrite
min(floordiv(x + (A-1), A) * A, max(x, A))
andmin(truncdiv(x + (A-1), A) * A, max(x, A))
intomax(x, A)
did not have sufficiently tight bounds. Thetruncdiv
rule required thatx >= 0
, while thefloordiv
rule had no requirement onx
. In both cases, the simplification was incorrect whenx==0
, as it would result in a rewrite frommin(0, max(0, A))
intomax(0, A)
.This commit updates the rules to require that
x >= 0
for each of these rules.