Skip to content

Conversation

@echesakov
Copy link
Contributor

@echesakov echesakov commented Sep 19, 2020

This adds support for proper recognition of movw/movt instructions pairs on Arm in CorAsmDiff::nearDiff.
In a case when such instructions pairs are compared, their immediates should not be compared independently. Instead their values should be used to reconstruct a 32-bit value that is loaded into a register and these reconstructed value should be compared either for identity or equality (with a user defined Comparator).

I tested this approach by

  1. superpmi collect on on windows-arm on framework libraries
  2. superpmi replay on windows-arm
  3. superpmi replay on windows-x86 (with clrjit_win_arm_x86.dll jit)

In both 2 and 3 there were no cases of false positives diffs between baseline and compared jits. (If this algorithm is disabled, almost every method becomes different according to CorAsmDiff::nearDiff due to some immediates - either movt or movw having different values).

This PR also specifies LLVM_DEFAULT_TARGET_TRIPLE to be Thumb2 not Arm and decreases number of platforms supported by each flavor of coredistools.

@dotnet dotnet deleted a comment from azure-pipelines bot Sep 19, 2020
@dotnet dotnet deleted a comment from azure-pipelines bot Sep 19, 2020
@echesakov echesakov force-pushed the CoreDisTools-Arm branch 3 times, most recently from f17377a to e09e305 Compare September 22, 2020 23:35
@echesakov echesakov marked this pull request as ready for review September 23, 2020 18:00
@echesakov
Copy link
Contributor Author

@dotnet/jit-contrib PTAL

@BruceForstall BruceForstall self-requested a review September 23, 2020 18:12
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.

Looks great. Thanks!

@echesakov echesakov merged commit eb8a6ce into dotnet:master Sep 23, 2020
@echesakov echesakov deleted the CoreDisTools-Arm branch September 23, 2020 22:19
@echesakov echesakov mentioned this pull request Sep 24, 2020
29 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants