-
Notifications
You must be signed in to change notification settings - Fork 7
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
Implement the fneg instruction. #1462
Conversation
; %3: double = fneg %1 | ||
{{_}} {{_}}: mov r.64.x, 0x8000000000000000 | ||
{{_}} {{_}}: movq fp.128.y, r.64.x | ||
{{_}} {{_}}: xorpd fp.128.a, fp.128.y |
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 was curious that %3
was allocated a fresh register (fp.128.a
), instead of reusing the register previously assigned to the now-dead %2
(fp.128.z
). Could indicate an error in my register allocator changes?
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.
We currently prefer to allocate "higher" registers, which is pointless in FP-land, but in GP-land means we're less likely to get twonked by x64's fondness for RAX and the sysv abi's preference for "lower" registers in CALLs. Does that guarantee what you're seeing is intended? Nope. But it might give you a clue to what look for.
LGTM. |
LLVM synced. OK to squash? |
Please squash. |
Required for LuaJIT tests.
squashed. |
Once #1463 is in, this should merge. It's the ambiguous methods warning again. |
Not yet :) |
I deliberately merged both at once, because CI can run the merge together. There is no harm in doing so. |
Required for LuaJIT tests.
Please carefully check the register allocator changes. I had to implement
RegConstraint::Temporary
inassign_fp_regs()
.Requires: ykjit/ykllvm#214