Skip to content
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

Upgrading Vector256/512 Shuffle() with VBMI support #87083

Merged
merged 4 commits into from Jun 12, 2023

Conversation

DeepakRajendrakumaran
Copy link
Contributor

This change does the following
1: Accelerates Vector512.Shuffle() using AVX512VBMI(permb)
2. Accelerates Vector256.Shuffle() using AVX512VBMI_VL
3. Accelerates Vector256.Shuffle() using AVX512BW_VL
@dotnet/avx512-contrib

@dotnet-issue-labeler dotnet-issue-labeler bot added the area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI label Jun 3, 2023
@ghost ghost added the community-contribution Indicates that the PR has been added by a community member label Jun 3, 2023
@ghost
Copy link

Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch
See info in area-owners.md if you want to be subscribed.

Issue Details

Upgrading Vector256/512 Shuffle() with VBMI support

Author: DeepakRajendrakumaran
Assignees: -
Labels:

area-CodeGen-coreclr

Milestone: -

@DeepakRajendrakumaran DeepakRajendrakumaran changed the title Mrt143 Upgrading Vector256/512 Shuffle() with VBMI support Jun 3, 2023
@DeepakRajendrakumaran DeepakRajendrakumaran marked this pull request as ready for review June 6, 2023 16:54
@tannergooding tannergooding added the avx512 Related to the AVX-512 architecture label Jun 7, 2023
@DeepakRajendrakumaran
Copy link
Contributor Author

I can't figure out if the CI fails are known issues or build specific Looks like infrastructure from this
image

@tannergooding
Copy link
Member

There's currently an infrastructure issue causing a large number of CI machine timeouts. It's likely not related to your PR.

@DeepakRajendrakumaran
Copy link
Contributor Author

There's currently an infrastructure issue causing a large number of CI machine timeouts. It's likely not related to your PR.

Please let me know you there is anything else to be done on this to be merged.

@@ -23482,6 +23509,15 @@ GenTree* Compiler::gtNewSimdShuffleNode(
// swap the operands to match the encoding requirements
retNode = gtNewSimdHWIntrinsicNode(type, op2, op1, NI_AVX512BW_PermuteVar32x16, simdBaseJitType, simdSize);
}
else if (elementSize == 1)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There's potentially a missing "todo" here to handle this using pshufb if we don't cross lanes and VBMI is not available.

I don't think it needs to be handled as part of this PR (or even for .NET 8 necessarily) since that scenario should only be limited to pre-cannon lake (and therefore first generation AVX-512 hardware). But, since it should just be refactoring the logic under the if (simdSize == 32) path to be shared; its probably worth having still.

@tannergooding
Copy link
Member

CC. @dotnet/jit-contrib, @dotnet/avx512-contrib for secondary sign-off.

@BruceForstall BruceForstall mentioned this pull request Jun 12, 2023
56 tasks
@BruceForstall BruceForstall merged commit c32bee1 into dotnet:main Jun 12, 2023
127 checks passed
@ghost ghost locked as resolved and limited conversation to collaborators Jul 13, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI avx512 Related to the AVX-512 architecture community-contribution Indicates that the PR has been added by a community member
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants