-
Notifications
You must be signed in to change notification settings - Fork 4.8k
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
Add Arm64 encodings for SVE IF_SVE_CX_4A_A to IF_SVE_HT_4A group #96214
Conversation
Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch Issue DetailsThis group emits various compare instructions. This clr output matches the one from capstone.
Contribute towards #94549.
|
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.
Otherwise, LGTM.
Also, @kunalspathak
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.
LGTM except for the one comment.
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.
LGTM
emitDispPredicateReg(id->idReg1(), PREDICATE_SIZED, id->idInsOpt(), true); // DDDD | ||
emitDispPredicateReg(id->idReg2(), PREDICATE_ZERO, id->idInsOpt(), true); // ggg | ||
emitDispSveReg(id->idReg3(), id->idInsOpt(), true); // mmmmm | ||
emitDispSveReg(id->idReg4(), id->idInsOpt(), false); // nnnnn | ||
emitDispSveReg(id->idReg4(), INS_OPTS_SCALABLE_D, false); // nnnnn |
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.
While passing INS_OPTS_SCALABLE_D
looks fine for this instruction format, I was checking other formats where we directly pass the INS_OPTS and seems like for IF_SVE_EQ_3A
, we should have a method that is reverse of optWidenSveElemsizeArrangement()
, which will basically lower H->B
, S->H
and D->S
instead of manipulating the idOpts()
this way.
runtime/src/coreclr/jit/emitarm64.cpp
Lines 18752 to 18755 in b498582
case IF_SVE_EQ_3A: // ........xx...... ...gggnnnnnddddd -- SVE2 integer pairwise add and accumulate long | |
emitDispSveReg(id->idReg1(), id->idInsOpt(), true); // ddddd | |
emitDispLowPredicateReg(id->idReg2(), PREDICATE_MERGE, id->idInsOpt(), true); // ggg | |
emitDispSveReg(id->idReg3(), (insOpts)((unsigned)id->idInsOpt() - 1), false); // mmmmm |
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.
Sure, makes sense. I will piggyback this change on my next patch 👍
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.
LGTM
failures seems to known |
…net#96214) * Add SVE IF_SVE_CQ_4A_A group * Fix format issues * Add Arm64 encodings for IF_SVE_GE_4A group * Fix build issue * Add Arm64 encodings for case IF_SVE_HT_4A group * Fix build and formatting * Remove redundant asserts
This group emits various compare instructions.
This clr output matches the one from capstone.
Contribute towards #94549.