-
Notifications
You must be signed in to change notification settings - Fork 5.3k
Adding support for Vector512 bitwise operations: And, AndNot, Or, OnesComplement, and Xor #83354
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
Conversation
|
Note regarding the This serves as a reminder for when your PR is modifying a ref *.cs file and adding/modifying public APIs, to please make sure the API implementation in the src *.cs file is documented with triple slash comments, so the PR reviewers can sign off that change. |
|
Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch, @kunalspathak |
src/coreclr/jit/emitxarch.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 plan on covering this TODO in a follow-up PR (notably will be the "next" thing I do).
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.
Do we have any systematic way to improve upon the INS_has_wbit flag and the opcode extension bit flag?
I agree that we can move the opcode extension bit into the instruction table, but the TakesRexWBit check is still pretty complicated and requires a lot of contextual information.
If we eventually move everything to checks on instrDesc instead of ins, we probably can simplify this quite a bit. That is later down the road though.
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 can take a look as part of this. It would indeed be nicer/simpler to be able to handle this "everywhere".
I imagine many of the GPR instructions need something like REX_WX bit that indicates its 0 or 1 based on the EA_ATTR size or alternatively some way to split the instructions between D and Q versions.
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.
Have a prototype of tracking the REX.W bit stuff for SIMD via #83473. It should be extensible to GPR as well
src/coreclr/jit/compiler.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.
This was previously !DoJitStressEvexEncoding() and was preventing just JitStressEvexEncoding from working since the support check for AVX512F_VL would always fail.
src/coreclr/jit/hwintrinsic.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.
This assert was missing and so we weren't actually testing any InstructionSet_Vector512 paths yet.
src/coreclr/jit/hwintrinsic.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.
Same for this check against simdSize != 64
37d8323 to
ab860f7
Compare
|
CC. @dotnet/jit-contrib, @dotnet/avx512-contrib |
8f25aee to
3f5f97b
Compare
|
Rebase to pickup the fix for #83298 |
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.
Is this how these tests are organized or it's a dead code?
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.
Its a stub file that all the generated test projects have at the moment. We could probably remove it, but it's part of the existing "template" so I copied it here as well.
EgorBo
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.
LGTM, assuming all tests your changed aren't some outerloop that will break later 🙂
Also I assume for now we don't constant fold any of this ops you just added, right? (presumably, extremely low priority)
9568063 to
0fbec21
Compare
They run as part of the
Right, we'll end up going back and adding the constant folding support around the time it gets enabled automatically. Just rebased onto main to pick up a CI fix so I can merge green. |
|
coreclr linux x64 Debug failures are #83482 Failures in general can be seen to also exist in last scheduled run: https://dev.azure.com/dnceng-public/public/_build/results?buildId=206663&view=ms.vss-test-web.build-test-results-tab&runId=3838833&paneView=debug |
This makes progress towards #80814 and #73604
This is dependent on #83402