Added a test case to show the 1.0 + -1.0 instruction time-out under f… #592
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 specific corner test exist in the floating point add/sub function which results in the post add/sub normalizer running for sreg.exp cycles, which for the number 1.0f is enough to trigger the time-out in the execution engine.
An example has been added to the float_corner_test that performs: 1.0f + -1.0f which results in 0.0f but also times out.
A fix has been added to the normalizer in which the S_PERPARE_NORM state has an additional check whether mantissa_i is all 0's. If so the resulting add/sub is 0.0 and we set ctrl.cnt to 0 to ensure the exp is 0 and jump straight to S_FINALIZE. Which should now correctly generate a +/- 0.0f result.