-
Notifications
You must be signed in to change notification settings - Fork 4.6k
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
Enable assert in perfScoreUnhandledInstruction #810
Conversation
Related to PR #751 |
@tannergooding @BruceForstall @dotnet/jit-contrib PTAL |
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.
Can you make sure to run outerloop and outerloop stress jobs? I wouldn't want this to cause new asserts to show up, especially as we aren't actively monitoring all the various pipelines yet.
I am leaving this PR open as I will be leaving for a vacation shortly. |
613b11c
to
ccaf3b2
Compare
@BruceForstall I have refreshed this |
/AZP list |
/AZP runtime-coreclr outerloop |
Command 'runtime-coreclr' is not supported by Azure Pipelines. Supported commands
See additional documentation. |
/AZP run runtime-coreclr outerloop |
Azure Pipelines could not run because the pipeline triggers exclude this branch/path. |
There are some unhanded instructions for ARM64:
|
@tannergooding I believe you wanted to ping me instead of Egor Bogatov. I added these instructions and I can update their perf score |
Yes, sorry. Auto-complete chose the wrong person 😄 |
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.
My preference would be not to enable this assert. I'm not in favor of asserts that appear only when dumping or disassembling.
src/coreclr/src/jit/emit.cpp
Outdated
// and instead of returning we will assert | ||
// | ||
// Otherwise we will return default latencies of 1 cycle. | ||
// Remove the assert and we return default latencies of 1 cycle. |
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 that this should be deleted, and the above comment should be clarified to say that it asserts in a DEBUG build, and returns a default latency of 1 cycle otherwise.
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.
OK
People working on Arm64 instructions could just add this change-set to their enlistment to catch the missing instructions. I put this PR up because Tanner wanted to have this enabled. |
The outer loop testing printed these two missing instructions on Arm64:
|
@briansull, what's the status of this PR? Should it be closed? Merged? Thanks. |
@tannergooding do you still want this assert enabled by default? |
It would be good to get it enabled as otherwise it just represents an increasing debt we are building for ARM64 (as we continue to add more instructions for the HWIntrinsic work, etc). At this point, it should just require adding the instructions which aren't already covered, correct? Perhaps that is something that @echesakovMSFT, @CarolEidt, or myself can pick up and finish. |
I'm still of the opinion that we don't want asserts that fire only when dumping or disassembling. I would be OK with a |
IIRC, this fell out of #751 (comment) and only wasn't enabled due to parallel work from the HWIntrinsics. |
My concern is with enabling an assert that only fires when I generate a dump or disassembly. This is not something we regularly do across all of our tests, and so it doesn't really add coverage. It is more likely to trip up someone who is working on something unrelated. These asserts should either be optionally enabled in dumps and disassembly (and included in some kind of stress testing) or the perfscore should always be computed for each instruction in checked builds, even when not disassembling. |
The PerfScore is always computed for Checked and Debug builds, not only when you generate a dump or disassembly.
|
I see - I'd missed that - in that case, I'm OK with this. Sorry for the confusion. |
…uild when it encounters an unhanded instruction
263ad42
to
54c1e90
Compare
Rebased to a recent master: @echesakovMSFT PTAL
|
@briansull I will add perf info later today - or if you want you can do this |
@echesakovMSFT |
…addlv, umaxv, uminv
Added PerfScore values for IF_DV_2T: // addv, saddlv, smaxv, sminv, uaddlv, umaxv, uminv |
Thank you, @briansull ! |
…fcvtn, fcvtn2, fabd
Add PerfScore support for fcmeq, fcmge, fcmgt, fcmle, fcmlt, fcvtl2, fcvtn, fcvtn2, fabd |
Thanks @briansull! |
perfScoreUnhandledInstruction will now assert in a DEBUG or CHECKED build when it encounters an unhanded instruction