-
Notifications
You must be signed in to change notification settings - Fork 824
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
NaN canonicalization for singlepass backend. #1303
Conversation
losfair
commented
Mar 15, 2020
•
edited
Loading
edited
- Implementation
- Test
Fix the new llvm-backend spectests failures.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm worried about the value_stack and fp_stack getting out of sync. At the top of codegen_x64.rs
feed_event()
:
debug_assert!(self.fp_stack.len() == self.value_stack.iter().filter(is_float).len());
?
Location::GPR(GPR::RAX), | ||
); | ||
match frame.returns[0] { | ||
WpType::F32 | WpType::F64 => { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think this is correct because you can apply canonicalization early, but I think this is unnecessary?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Code reference here is outdated so I'm not sure which part you are referring to; but if you mean the Phi
-like branch like Br
-ing out, early canonicalization is necessary because we don't have the static tracking information after.
Co-Authored-By: nlewycky <[email protected]>
…o feature/singlepass-nan-cncl
bors try |
tryBuild failed |
bors try |
tryBuild failed |
bors try |
tryBuild succeeded |
bors r+ |
Build succeeded
|