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

[Arm64] Implement simple SIMD operations #1601

Merged

Conversation

@echesakovMSFT
Copy link
Member

echesakovMSFT commented Jan 10, 2020

System.Private.CoreLib\src\System\Runtime\Intrinsics\Arm

16241e3 Update "And" in AdvSimd.cs AdvSimd.PlatformNotSupported.cs

06f8709 Update "AndNot" in AdvSimd.cs AdvSimd.PlatformNotSupported.cs

bbb771f Add "Divide" and "DivideScalar" in AdvSimd.cs AdvSimd.PlatformNotSupported.cs

77c29ad Add "Max" and "MaxScalar" in AdvSimd.cs AdvSimd.PlatformNotSupported.cs

79a9211 Add "Min" and "MinScalar" in AdvSimd.cs AdvSimd.PlatformNotSupported.cs

215aebb Add "Multiply" and "MultiplyScalar" in AdvSimd.cs AdvSimd.PlatformNotSupported.cs

3bf4557 Add "Negate" and "NegateScalar" in AdvSimd.cs AdvSimd.PlatformNotSupported.cs

11b9c7f Update "Not" in AdvSimd.cs AdvSimd.PlatformNotSupported.cs

574bb11 Update "Or" in AdvSimd.cs AdvSimd.PlatformNotSupported.cs

27863d0 Update "OrNot" in AdvSimd.cs AdvSimd.PlatformNotSupported.cs

852392f Update "Sqrt" and "SqrtScalar" in AdvSimd.cs AdvSimd.PlatformNotSupported.cs

ffe3fab Update "Subtract" and "SubtractScalar" in AdvSimd.cs AdvSimd.PlatformNotSupported.cs

39a8a1d Update "Xor" in AdvSimd.cs AdvSimd.PlatformNotSupported.cs

src\libraries\System.Runtime.Intrinsics.Experimental\ref

d44307a Update System.Runtime.Intrinsics.Experimental.cs

src\coreclr\src\jit

1402efc Add "And" in AdvSimd in hwintrinsiclistarm64.h

62604f8 Add "AndNot" in AdvSimd in hwintrinsiclistarm64.h

6e14dfc Add "DivideScalar" in AdvSimd in hwintrinsiclistarm64.h

b9dbd39 Add "Divide" in AdvSimd_Arm64 in hwintrinsiclistarm64.h

6886b27 Add "Max" and "MaxScalar" in hwintrinsiclistarm64.h

961450c Add "Min" and "MinScalar" in hwintrinsiclistarm64.h

c74c601 Add "Multiply" and "MultiplyScalar" in hwintrinsiclistarm64.h

e12ddb7 Add "Negate" and "NegateScalar" in hwintrinsiclistarm64.h

9137fd9 Add "Not" in AdvSimd in hwintrinsiclistarm64.h

526abef Add "Or" in AdvSimd in hwintrinsiclistarm64.h

e2711f4 Add "OrNot" in AdvSimd in hwintrinsiclistarm64.h

a51adb6 Add "Sqrt" and "SqrtScalar" in hwintrinsiclistarm64.h

234d576 Add "Subtract" and "SubtractScalar" in hwintrinsiclistarm64.h

7519184 Add "Xor" in AdvSimd in hwintrinsiclistarm64.h

src\coreclr\tests\src\JIT\HardwareIntrinsics\Arm

db4a3db Add "And" in GenerateTests.csx

202fd29 Add "AndNot" in GenerateTests.csx

b421932 Add "Divide" and "DivideScalar" in GenerateTests.csx

e27f874 Add "Max" and "MaxScalar" in GenerateTests.csx

7e846f0 Add "Min" and "MinScalar" in GenerateTests.csx

1732d26 Add "Multiply" and "MultiplyScalar" in GenerateTests.csx

9dff171 Add "Negate" and "NegateScalar" in GenerateTests.csx

557f1b9 Add "Not" in GenerateTests.csx

70129ac Add "Or" in GenerateTests.csx

c3752aa Add "OrNot" in GenerateTests.csx

35daf17 Add "Sqrt" and "SqrtScalar" in GenerateTests.csx

f789085 Add "Subtract" and "SubtractScalar" in GenerateTests.csx

217b5b3 Add "Xor" in GenerateTests.csx

80a21df Update "ReverseElementBits" in GenerateTests.csx

38c99e3 Update Helpers.cs Helpers.tt

72dcfb6 Update AdvSimd/ AdvSimd.Arm64/

Fixes #24584
Fixes #13575

@echesakovMSFT echesakovMSFT force-pushed the echesakovMSFT:AArch64/HWIntrinsics/SimpleSIMD branch from 88d348c to d44307a Jan 30, 2020
@echesakovMSFT echesakovMSFT marked this pull request as ready for review Jan 31, 2020
@echesakovMSFT

This comment has been minimized.

Copy link
Member Author

echesakovMSFT commented Jan 31, 2020

@CarolEidt @tannergooding @TamarChristinaArm PTAL

I grouped all the commits by their "themes" to make the reviewing process easier.

@echesakovMSFT

This comment has been minimized.

Copy link
Member Author

echesakovMSFT commented Feb 4, 2020

I found my old notes from one of the API review meetings that suggest that in this PR I should rename:

  • AndNot(left, right) -> BitwiseClear(value, mask)
  • OrNot(left, right) -> OrNot(left, rightComplement).

@tannergooding @terrajobst Can one of you please advise whether this is a case?

@tannergooding

This comment has been minimized.

Copy link
Member

tannergooding commented Feb 5, 2020

The notes are here: https://github.com/dotnet/apireviews/tree/master/2019/10-29-arm
Could you also update the original post to use the new issue IDs: #24584 and #13575

Copy link
Member

tannergooding left a comment

JIT changes LGTM. I skimmed through the test changes and looked primarily at the template updates and an example generated file.

Copy link
Member

CarolEidt left a comment

LGTM - how nice that the additions are all table-driven so that the JIT change is just the table :-)

@echesakovMSFT

This comment has been minimized.

Copy link
Member Author

echesakovMSFT commented Feb 5, 2020

Last six commits are renaming "AndNot" to "BitwiseClear" according to https://github.com/dotnet/apireviews/tree/master/2019/10-29-arm

@echesakovMSFT echesakovMSFT merged commit c44edc1 into dotnet:master Feb 5, 2020
95 checks passed
95 checks passed
WIP Ready for review
Details
license/cla All CLA requirements met.
Details
runtime Build #20200205.57 succeeded
Details
runtime (Checkout) Checkout succeeded
Details
runtime (CoreCLR Pri0 Test Build Linux arm checked) CoreCLR Pri0 Test Build Linux arm checked succeeded
Details
runtime (CoreCLR Pri0 Test Build Linux arm64 checked) CoreCLR Pri0 Test Build Linux arm64 checked succeeded
Details
runtime (CoreCLR Pri0 Test Build Linux x64 checked) CoreCLR Pri0 Test Build Linux x64 checked succeeded
Details
runtime (CoreCLR Pri0 Test Build OSX x64 checked) CoreCLR Pri0 Test Build OSX x64 checked succeeded
Details
runtime (CoreCLR Pri0 Test Build Windows_NT arm checked) CoreCLR Pri0 Test Build Windows_NT arm checked succeeded
Details
runtime (CoreCLR Pri0 Test Build Windows_NT arm64 checked) CoreCLR Pri0 Test Build Windows_NT arm64 checked succeeded
Details
runtime (CoreCLR Pri0 Test Build Windows_NT x64 checked) CoreCLR Pri0 Test Build Windows_NT x64 checked succeeded
Details
runtime (CoreCLR Pri0 Test Build Windows_NT x86 checked) CoreCLR Pri0 Test Build Windows_NT x86 checked succeeded
Details
runtime (CoreCLR Pri0 Test Run Linux arm checked) CoreCLR Pri0 Test Run Linux arm checked succeeded
Details
runtime (CoreCLR Pri0 Test Run Linux arm64 checked) CoreCLR Pri0 Test Run Linux arm64 checked succeeded
Details
runtime (CoreCLR Pri0 Test Run Linux x64 checked) CoreCLR Pri0 Test Run Linux x64 checked succeeded
Details
runtime (CoreCLR Pri0 Test Run OSX x64 checked) CoreCLR Pri0 Test Run OSX x64 checked succeeded
Details
runtime (CoreCLR Pri0 Test Run Windows_NT arm checked) CoreCLR Pri0 Test Run Windows_NT arm checked succeeded
Details
runtime (CoreCLR Pri0 Test Run Windows_NT x64 checked) CoreCLR Pri0 Test Run Windows_NT x64 checked succeeded
Details
runtime (CoreCLR Pri0 Test Run Windows_NT x86 checked) CoreCLR Pri0 Test Run Windows_NT x86 checked succeeded
Details
runtime (CoreCLR Product Build Linux arm checked) CoreCLR Product Build Linux arm checked succeeded
Details
runtime (CoreCLR Product Build Linux arm release) CoreCLR Product Build Linux arm release succeeded
Details
runtime (CoreCLR Product Build Linux arm64 checked) CoreCLR Product Build Linux arm64 checked succeeded
Details
runtime (CoreCLR Product Build Linux arm64 release) CoreCLR Product Build Linux arm64 release succeeded
Details
runtime (CoreCLR Product Build Linux x64 checked) CoreCLR Product Build Linux x64 checked succeeded
Details
runtime (CoreCLR Product Build Linux x64 release) CoreCLR Product Build Linux x64 release succeeded
Details
runtime (CoreCLR Product Build Linux_musl arm64 release) CoreCLR Product Build Linux_musl arm64 release succeeded
Details
runtime (CoreCLR Product Build Linux_musl x64 checked) CoreCLR Product Build Linux_musl x64 checked succeeded
Details
runtime (CoreCLR Product Build Linux_musl x64 release) CoreCLR Product Build Linux_musl x64 release succeeded
Details
runtime (CoreCLR Product Build OSX x64 checked) CoreCLR Product Build OSX x64 checked succeeded
Details
runtime (CoreCLR Product Build OSX x64 release) CoreCLR Product Build OSX x64 release succeeded
Details
runtime (CoreCLR Product Build Windows_NT arm checked) CoreCLR Product Build Windows_NT arm checked succeeded
Details
runtime (CoreCLR Product Build Windows_NT arm release) CoreCLR Product Build Windows_NT arm release succeeded
Details
runtime (CoreCLR Product Build Windows_NT arm64 checked) CoreCLR Product Build Windows_NT arm64 checked succeeded
Details
runtime (CoreCLR Product Build Windows_NT arm64 release) CoreCLR Product Build Windows_NT arm64 release succeeded
Details
runtime (CoreCLR Product Build Windows_NT x64 checked) CoreCLR Product Build Windows_NT x64 checked succeeded
Details
runtime (CoreCLR Product Build Windows_NT x64 release) CoreCLR Product Build Windows_NT x64 release succeeded
Details
runtime (CoreCLR Product Build Windows_NT x86 checked) CoreCLR Product Build Windows_NT x86 checked succeeded
Details
runtime (CoreCLR Product Build Windows_NT x86 release) CoreCLR Product Build Windows_NT x86 release succeeded
Details
runtime (Formatting Linux x64) Formatting Linux x64 succeeded
Details
runtime (Formatting Windows_NT x64) Formatting Windows_NT x64 succeeded
Details
runtime (Installer Build and Test Linux_arm Debug) Installer Build and Test Linux_arm Debug succeeded
Details
runtime (Installer Build and Test Linux_arm64 Debug) Installer Build and Test Linux_arm64 Debug succeeded
Details
runtime (Installer Build and Test Linux_musl_arm64 Debug) Installer Build and Test Linux_musl_arm64 Debug succeeded
Details
runtime (Installer Build and Test Linux_musl_x64 Debug) Installer Build and Test Linux_musl_x64 Debug succeeded
Details
runtime (Installer Build and Test Linux_x64 Debug) Installer Build and Test Linux_x64 Debug succeeded
Details
runtime (Installer Build and Test OSX_x64 Debug) Installer Build and Test OSX_x64 Debug succeeded
Details
runtime (Installer Build and Test Windows_NT_arm Debug) Installer Build and Test Windows_NT_arm Debug succeeded
Details
runtime (Installer Build and Test Windows_NT_arm64 Debug) Installer Build and Test Windows_NT_arm64 Debug succeeded
Details
runtime (Installer Build and Test Windows_NT_x64 Debug) Installer Build and Test Windows_NT_x64 Debug succeeded
Details
runtime (Installer Build and Test Windows_NT_x86 Debug) Installer Build and Test Windows_NT_x86 Debug succeeded
Details
runtime (Libraries Build Linux arm Release) Libraries Build Linux arm Release succeeded
Details
runtime (Libraries Build Linux arm64 Debug) Libraries Build Linux arm64 Debug succeeded
Details
runtime (Libraries Build Linux x64 Debug) Libraries Build Linux x64 Debug succeeded
Details
runtime (Libraries Build Linux_musl arm64 Release) Libraries Build Linux_musl arm64 Release succeeded
Details
runtime (Libraries Build Linux_musl x64 Debug) Libraries Build Linux_musl x64 Debug succeeded
Details
runtime (Libraries Build OSX x64 Debug) Libraries Build OSX x64 Debug succeeded
Details
runtime (Libraries Build WebAssembly wasm Debug) Libraries Build WebAssembly wasm Debug succeeded
Details
runtime (Libraries Build Windows_NT allConfigurations x64 Debug) Libraries Build Windows_NT allConfigurations x64 Debug succeeded
Details
runtime (Libraries Build Windows_NT arm Release) Libraries Build Windows_NT arm Release succeeded
Details
runtime (Libraries Build Windows_NT arm64 Release) Libraries Build Windows_NT arm64 Release succeeded
Details
runtime (Libraries Build Windows_NT net472 x86 Release) Libraries Build Windows_NT net472 x86 Release succeeded
Details
runtime (Libraries Build Windows_NT x64 Debug) Libraries Build Windows_NT x64 Debug succeeded
Details
runtime (Libraries Build Windows_NT x86 Debug) Libraries Build Windows_NT x86 Debug succeeded
Details
runtime (Libraries Build Windows_NT x86 Release) Libraries Build Windows_NT x86 Release succeeded
Details
runtime (Libraries Test Build Linux x64 Debug) Libraries Test Build Linux x64 Debug succeeded
Details
runtime (Libraries Test Build OSX x64 Debug) Libraries Test Build OSX x64 Debug succeeded
Details
runtime (Libraries Test Build Windows_NT x64 Debug) Libraries Test Build Windows_NT x64 Debug succeeded
Details
runtime (Libraries Test Run checked coreclr Linux x64 Debug) Libraries Test Run checked coreclr Linux x64 Debug succeeded
Details
runtime (Libraries Test Run checked coreclr Linux_musl x64 Debug) Libraries Test Run checked coreclr Linux_musl x64 Debug succeeded
Details
runtime (Libraries Test Run checked coreclr OSX x64 Debug) Libraries Test Run checked coreclr OSX x64 Debug succeeded
Details
runtime (Libraries Test Run checked coreclr Windows_NT x64 Debug) Libraries Test Run checked coreclr Windows_NT x64 Debug succeeded
Details
runtime (Libraries Test Run checked coreclr Windows_NT x86 Release) Libraries Test Run checked coreclr Windows_NT x86 Release succeeded
Details
runtime (Libraries Test Run release coreclr Linux x64 Debug) Libraries Test Run release coreclr Linux x64 Debug succeeded
Details
runtime (Libraries Test Run release coreclr Linux_musl x64 Debug) Libraries Test Run release coreclr Linux_musl x64 Debug succeeded
Details
runtime (Libraries Test Run release coreclr OSX x64 Debug) Libraries Test Run release coreclr OSX x64 Debug succeeded
Details
runtime (Libraries Test Run release coreclr Windows_NT x64 Debug) Libraries Test Run release coreclr Windows_NT x64 Debug succeeded
Details
runtime (Libraries Test Run release coreclr Windows_NT x86 Debug) Libraries Test Run release coreclr Windows_NT x86 Debug succeeded
Details
runtime (Libraries Test Run release coreclr Windows_NT x86 Release) Libraries Test Run release coreclr Windows_NT x86 Release succeeded
Details
runtime (Libraries Test Run release mono Linux x64 Debug) Libraries Test Run release mono Linux x64 Debug succeeded
Details
runtime (Libraries Test Run release mono OSX x64 Debug) Libraries Test Run release mono OSX x64 Debug succeeded
Details
runtime (Mono Product Build Linux x64 debug) Mono Product Build Linux x64 debug succeeded
Details
runtime (Mono Product Build Linux x64 release) Mono Product Build Linux x64 release succeeded
Details
runtime (Mono Product Build Linux_musl x64 debug) Mono Product Build Linux_musl x64 debug succeeded
Details
runtime (Mono Product Build Linux_musl x64 release) Mono Product Build Linux_musl x64 release succeeded
Details
runtime (Mono Product Build OSX x64 debug) Mono Product Build OSX x64 debug succeeded
Details
runtime (Mono Product Build OSX x64 release) Mono Product Build OSX x64 release succeeded
Details
runtime (Mono Product Build Windows_NT x64 debug) Mono Product Build Windows_NT x64 debug succeeded
Details
runtime (Mono Product Build Windows_NT x64 release) Mono Product Build Windows_NT x64 release succeeded
Details
runtime (Test crossgen-comparison Linux arm checked) Test crossgen-comparison Linux arm checked succeeded
Details
runtime-live-build Build #20200205.53 succeeded
Details
runtime-live-build (Build Linux x64 debug RuntimeFlavor_Mono) Build Linux x64 debug RuntimeFlavor_Mono succeeded
Details
runtime-live-build (Build Linux x64 debug Runtime_Release) Build Linux x64 debug Runtime_Release succeeded
Details
runtime-live-build (Build OSX x64 release Runtime_Debug) Build OSX x64 release Runtime_Debug succeeded
Details
runtime-live-build (Build Windows_NT x86 release Runtime_Debug) Build Windows_NT x86 release Runtime_Debug succeeded
Details
runtime-live-build (Checkout) Checkout succeeded
Details
@echesakovMSFT echesakovMSFT deleted the echesakovMSFT:AArch64/HWIntrinsics/SimpleSIMD branch Feb 5, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Linked issues

Successfully merging this pull request may close these issues.

4 participants
You can’t perform that action at this time.