Skip to content

[Arm64] Implement remaining SIMD instructions#38361

Merged
echesakov merged 32 commits intodotnet:masterfrom
echesakov:Arm64-Implement-Remaining-SIMD-Instructions
Jun 25, 2020
Merged

[Arm64] Implement remaining SIMD instructions#38361
echesakov merged 32 commits intodotnet:masterfrom
echesakov:Arm64-Implement-Remaining-SIMD-Instructions

Conversation

@echesakov
Copy link
Contributor

@echesakov echesakov commented Jun 24, 2020

Implement instructions that are needed for #36696 #37014 #37169:

  • sqdmlal

  • sqdmlal2

  • sqmmlsl

  • sqmmlsl2

  • sqdmulh

  • sqdmull

  • sqdmull2

  • sqdrmlah

  • sqdrmlsh

  • sqdrmulh

  • sqxtn

  • sqxtn2

  • sqxtun

  • sqxtun2

  • uqxtn

  • uqxtn2

  • sdot

  • udot

This also mostly addresses issues in #36846. For example, by introducing WID, NRW and LNG instruction flags. This also allowed to remove some of the instruction formats - DV_3H DV_3HI EN3K EN2R, since now there is a better way to distinguish between long, narrow and wide SIMD instructions.

There are still some other discrepancies between the JIT output and WinDbg u command - most of them are related to base instructions and will not be fixed in 5.0. I will push #36846 to the future milestone once this PR is merged.

Attached are jitDisasm and WinDbg u command outputs and result of comparing these two.
jitDisasm
WinDbg u
diff windbgu jitdump

echesakov added 30 commits June 23, 2020 12:12
* sqdmlal

* sqdmlal2

* sqmmlsl

* sqmmlsl2

* sqdmulh

* sqdmull

* sqdmull2

* sqdrmlah

* sqdrmlsh

* sqdrmulh
* sqxtn

* sqxtn2

* sqxtun

* sqxtun2

* uqxtn

* uqxtn2
* sqxtn

* sqxtn2

* sqxtun

* sqxtun2

* uqxtn

* uqxtn2
* sqdmlal

* sqdmlal2

* sqmmlsl

* sqmmlsl2

* sqdmulh

* sqdmull

* sqdmull2

* sqdrmlah

* sqdrmlsh

* sqdrmulh
@echesakov echesakov added arch-arm64 area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI labels Jun 24, 2020
@echesakov
Copy link
Contributor Author

@dotnet/jit-contrib PTAL

@echesakov echesakov requested a review from BruceForstall June 25, 2020 01:26
Copy link
Contributor

@BruceForstall BruceForstall left a comment

Choose a reason for hiding this comment

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

LGTM! It's nice you could clean up the asm issues and remove some encoding formats at the same time.

@echesakov echesakov merged commit eb30d2a into dotnet:master Jun 25, 2020
@echesakov echesakov deleted the Arm64-Implement-Remaining-SIMD-Instructions branch June 25, 2020 02:32
@ghost ghost locked as resolved and limited conversation to collaborators Dec 8, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

arch-arm64 area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants