Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added a test case to show the 1.0 + -1.0 instruction time-out under f… #592

Merged
merged 3 commits into from
Apr 21, 2023

Conversation

mikaelsky
Copy link
Collaborator

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.

…loat_corner_test

Fixed the missing check for the add/sub result being 0.0 in the normalizar state machine.
@stnolting stnolting added bug Something isn't working HW hardware-related labels Apr 21, 2023
@stnolting
Copy link
Owner

This is really great!
Thank so you very much for finding (and fixing!) this bug 👍

@stnolting stnolting merged commit 8108903 into stnolting:main Apr 21, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working HW hardware-related
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants