-
Notifications
You must be signed in to change notification settings - Fork 5.2k
Avx512 single kmask #82255
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
Avx512 single kmask #82255
Conversation
|
Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch, @kunalspathak Issue DetailsDraft PR for testing. Has a dependency on #80960
|
kunalspathak
left a 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.
Overall looks good.
src/coreclr/jit/lsra.h
Outdated
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 would just rename this from OpmaskRegister to MaskRegister here and at other places like isMaskReg(), etc.
src/coreclr/jit/vartype.h
Outdated
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.
why not just return TypeGet(v) == TYP_OPMASK;?
src/coreclr/jit/instr.cpp
Outdated
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.
Could you explain why is IsKInstruction() included in this condition?
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.
Because k instructions, i.e.g, kmov, kadd, do not get the v 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.
What do you mean?
Also can we add an assert that assert(isOpmaskReg(maskReg))?
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 I meant maskReg should be an OpmaskReg. I put the assert in and removed the comment.
src/coreclr/jit/emitxarch.cpp
Outdated
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.
update the comment to reflect about the k-mask instruction.
src/coreclr/jit/emitxarch.cpp
Outdated
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.
Just that I understand, the other 2 instructions i.e. vpmovb2m and vpmovd2m doesn't take Rex 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.
Correct. vpmovb2m and vpmovd2m have w bit set to 0.
src/coreclr/jit/emitxarch.cpp
Outdated
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 should fix this properly.
src/coreclr/jit/emitxarch.cpp
Outdated
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 should add proper values as part of the PR.
13002ae to
d801c7d
Compare
Draft PR for testing. Has a dependency on #80960