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
8295926: RISC-V: C1: Fix LIRGenerator::do_LibmIntrinsic #10867
Conversation
👋 Welcome back xlinzheng! A progress list of the required criteria for merging this PR into |
@zhengxiaolinX The following label will be automatically applied to this pull request:
When this pull request is ready to be reviewed, an "RFR" email will be sent to the corresponding mailing list. If you would like to change these labels, use the /label pull request command. |
Webrevs
|
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.
Wouldn't it make sense to add the reproducer as a test?
Thank you for the advice and will make one. |
The test is copied and modified from Roland's On x86, aarch64, and riscv with this patch it passes; riscv without this patch shows
and fails. FYI
Thanks, |
} | ||
|
||
static void proofread(double ans) { | ||
if (Math.abs(ans - expected) > 1e8) { |
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.
If we want to do equivalence check here, shouldn't we compare with 1e-8 instead of 1e8?
That said, do we really need this "proofread" check? I am assuming the check at line #80 is sufficient for this issue.
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.
Sorry for the error - yes, it should have been 1e-8
, but somehow the -
ran away when it was written :-).
And yes again: only the former check matters, so it is removed.
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.
@zhengxiaolinX Nice catch. LGTM.
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.
Updated change looks good. Thanks for finding and fixing this.
@zhengxiaolinX This change now passes all automated pre-integration checks. ℹ️ This project also has non-automated pre-integration requirements. Please see the file CONTRIBUTING.md for details. After integration, the commit message for the final commit will be:
You can use pull request commands such as /summary, /contributor and /issue to adjust it as needed. At the time when this comment was updated there had been 117 new commits pushed to the
As there are no conflicts, your changes will automatically be rebased on top of these commits when integrating. If you prefer to avoid this automatic rebasing, please check the documentation for the /integrate command for further details. As you do not have Committer status in this project an existing Committer must agree to sponsor your change. Possible candidates are the reviewers of this PR (@TobiHartmann, @RealFYang) but any other Committer may sponsor as well. ➡️ To flag this PR as ready for integration with the above commit message, type |
Thank you all for your reviews and comments! /integrate |
@zhengxiaolinX |
/sponsor |
Going to push as commit 1fdbb1b.
Your commit was automatically rebased without conflicts. |
@RealFYang @zhengxiaolinX Pushed as commit 1fdbb1b. 💡 You may see a message that your pull request was closed with unmerged commits. This can be safely ignored. |
The ported logic of LIRGenerator::do_LibmIntrinsic has a correctness problem, which will kill argument registers when the current libm intrinsic's operand is also a libm intrinsic, such as:
(dpow val1 (dlog val2))
LIRItem walks operands, so the
value.load_item_force(cc->at(0));
should be moved below after the LIRItem, or the result ofcc->at(0)
would be killed. But we might as well keep aligning AArch64's style to reduce some maintenance work.Reproducer: (pattern extracted from Renaissance
gauss-mix
)The right answer is
The current backend gives
Testing a hotspot tier1~4 on qemu.
Thanks,
Xiaolin
Progress
Issue
Reviewers
Reviewing
Using
git
Checkout this PR locally:
$ git fetch https://git.openjdk.org/jdk pull/10867/head:pull/10867
$ git checkout pull/10867
Update a local copy of the PR:
$ git checkout pull/10867
$ git pull https://git.openjdk.org/jdk pull/10867/head
Using Skara CLI tools
Checkout this PR locally:
$ git pr checkout 10867
View PR using the GUI difftool:
$ git pr show -t 10867
Using diff file
Download this PR as a diff file:
https://git.openjdk.org/jdk/pull/10867.diff