-
Notifications
You must be signed in to change notification settings - Fork 5.1k
Adding EVEX encoding support for CV path. #78044
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
Adding EVEX encoding support for CV path. #78044
Conversation
/azp run runtime-coreclr jitstress-isas-avx512 |
Azure Pipelines successfully started running 1 pipeline(s). |
src/coreclr/jit/emitxarch.cpp
Outdated
// Some of its callers already add VEX prefix and then call this routine. | ||
// Therefore add VEX prefix is not already present. | ||
code = AddVexPrefixIfNeededAndNotPresent(ins, code, size); | ||
// Compute VEX/VEX prefix |
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.
EVEX/VEX
?
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.
yes! Will fix it in the final non draft version. Thanks for catching that
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.
Done!
/azp run runtime-coreclr jitstress-isas-avx512 |
Azure Pipelines successfully started running 1 pipeline(s). |
@DeepakRajendrakumaran The avx512 test pipeline was error-free! |
Yaay!. The other pending PR will handle most of the fails but this is also needed to fix some other paths. I want to add some other stuff to this PR and should have it ready early this week. |
71c4a3f
to
6c0ebd2
Compare
@BruceForstall @tannergooding This is ready for review now. This should be the last change required in this series(EVEX in output path) |
/azp run runtime-coreclr jitstress-isas-avx512 |
Azure Pipelines successfully started running 1 pipeline(s). |
You should edit the top comment so it doesn't read "Draft PR to run tests" anymore, but is more descriptive of the changes. |
Have updated it with relevant info. |
No asm diffs but a throughput regression on x64 of about 0.03%. |
This set of changes adds
EVEX
encoding logic to remainingemitOutput*
paths(not covered in previous 2 commits). With this commit, we should now be able to encodeavx512
instructions once those are added.Notes : I have chosen to use the all encompassing
'emitOutputSimdPrefixIfNeeded'
instead of'emitOutputRexOrVexPrefixIfNeeded'
even in cases where we knowEVEX
will not be used for uniformity. Internally it will resolve to'emitOutputRexOrVexPrefixIfNeeded'
etc. This extends to other cases like 'TakesSimdPrefix
' of 'TakesVexPrefix
' etc.TO DOs:
kmask
support, register support forzmm
register and upper(16-31) registers in order to use those features with AVX512. These will be added as separate commits.'TakesEvexPrefix'
logic. Currently has comments there explaining the nature of logic required there. This will have to be fleshed out once AVX512 instructions are added.@anthonycanino