[FXML-4770] TosaToLinalg: fix tosa.cast INT_MAX overflow constant #206
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.
In lowering a tosa.cast op from float to signed int, the float is compared against INT_MAX to check for overflow. The 1 + INT_MAX(width) constant is converted to floating-point, and comparison with it is done in FP.
However, an intermediate
int64_t
type is used, which overflows and turns 1 + INT_MAX(64) negative when the destination type isi64
. This PR usesuint64_t
instead (withgetZExtValue
) so that 1 + INT_MAX stays in bounds and is correctly represented as floating-point.