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: Abs, ceil, floor, min, max #84937
Conversation
# Conflicts: # src/coreclr/jit/hwintrinsiclistxarch.h # src/coreclr/jit/instrsxarch.h
Removing unnecessary HW_Flag_NoEvexSemantics flag Co-authored-by: Tanner Gooding <tagoo@outlook.com>
Co-authored-by: Tanner Gooding <tagoo@outlook.com>
Co-authored-by: Tanner Gooding <tagoo@outlook.com>
Co-authored-by: Tanner Gooding <tagoo@outlook.com>
Co-authored-by: Tanner Gooding <tagoo@outlook.com>
# Conflicts: # src/coreclr/jit/hwintrinsiclistxarch.h
Resolved the merge conflict caused by other merged PRs |
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.
Changes LGTM. Just a couple minor code cleanup requests.
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.
Actually, on second thought, remembered that there is still a need to fixup the roundps
and roundpd
instructions in instrsxarch.h
as they are still marked as EVEX incompatible.
They do actually, in that they become the vrndscaleps
/vrndscalepd
instructions and the upper 4-bits of the immediate can now be non-zero.
That also means we probably need to update instr.cpp
to ensure that roundps
/roundpd
are emitted as vrndscale
in the disassembly
Without this fix, Ceiling
and Floor
are going to fail in their tests
-- The scalar versions, roundss
and roundsd
probably need the same treatment.
Co-authored-by: Tanner Gooding <tagoo@outlook.com>
We have tried to add vrndscaleps/vrndscalepd instructions. hope this will find the round instruction |
… the code gen part with EVEX encoding.
Co-authored-by: Tanner Gooding <tagoo@outlook.com>
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, thanks!
for some weird reason, git + was added to the code change. making an additional push to remove that. |
CC. @dotnet/jit-contrib, @dotnet/avx512-contrib this needs a secondary sign-off from the JIT side |
Adding support for AVX 512:
Abs, ceil, floor, min, max, sqrt, Negate, and Unary Addition.
Covered cases:
Abs:
Abs(Vector512), Abs(Vector512), Abs(Vector512), Abs(Vector512), Abs(Vector512)
, Abs(Vector512)
ceil:
ceil(Vector512), ceil(Vector512)
Floor:
Floor(Vector512), Floor(Vector512)
Min
Min(Vector512, Vector512), Min(Vector512, Vector512),
Min(Vector512, Vector512), Min(Vector512, Vector512),
Min(Vector512, Vector512), Min(Vector512, Vector512)
Max
Max(Vector512, Vector512), Max(Vector512, Vector512),
Max(Vector512, Vector512), Max(Vector512, Vector512),
Max(Vector512, Vector512), Max(Vector512, Vector512)
Negate & Unary Addition:
Negate(Vector512), Negate(Vector512), Negate(Vector512), Negate(Vector512), Negate(Vector512), Negate(Vector512)
Operator for Negate and Unary Addition.
Introduced a few new instructions that were not supported by lower vector intrinsics: