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

JIT: ARM64 SVE format encodings, SVE_HW_4A to SVE_HW_4B_D #97433

Merged
merged 7 commits into from
Jan 27, 2024

Conversation

TIHan
Copy link
Contributor

@TIHan TIHan commented Jan 24, 2024

Contributes to #94549

Adds formats:

  • SVE_HW_4A
  • SVE_HW_4A_A
  • SVE_HW_4A_B
  • SVE_HW_4A_C
  • SVE_IU_4A
  • SVE_IU_4A_A
  • SVE_IU_4A_C
  • SVE_HW_4B
  • SVE_HW_4B_D

Left: Capstone
Right: Jit
image

@ghost ghost assigned TIHan Jan 24, 2024
@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 Jan 24, 2024
@ghost
Copy link

ghost commented Jan 24, 2024

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

Issue Details

Contributes to #94549

Adds formats:

  • SVE_HW_4A
  • SVE_HW_4A_A
  • SVE_HW_4A_B
  • SVE_HW_4A_C
  • SVE_IU_4A
  • SVE_IU_4A_A
  • SVE_IU_4A_C
Author: TIHan
Assignees: TIHan
Labels:

area-CodeGen-coreclr

Milestone: -

@TIHan
Copy link
Contributor Author

TIHan commented Jan 24, 2024

@dotnet/arm64-contrib @dotnet/jit-contrib @a74nh @kunalspathak This is ready.

src/coreclr/jit/emitarm64.cpp Outdated Show resolved Hide resolved
src/coreclr/jit/emitarm64.cpp Outdated Show resolved Hide resolved
@ryujit-bot
Copy link

Diff results for #97433

Throughput diffs

Throughput diffs for linux/arm64 ran on windows/x64

Overall (+0.00% to +0.01%)
Collection PDIFF
benchmarks.run.linux.arm64.checked.mch +0.01%
benchmarks.run_pgo.linux.arm64.checked.mch +0.01%
benchmarks.run_tiered.linux.arm64.checked.mch +0.01%
coreclr_tests.run.linux.arm64.checked.mch +0.01%
libraries.crossgen2.linux.arm64.checked.mch +0.01%
libraries.pmi.linux.arm64.checked.mch +0.01%
libraries_tests.run.linux.arm64.Release.mch +0.01%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch +0.01%
realworld.run.linux.arm64.checked.mch +0.01%
MinOpts (+0.01% to +0.03%)
Collection PDIFF
benchmarks.run.linux.arm64.checked.mch +0.02%
benchmarks.run_pgo.linux.arm64.checked.mch +0.02%
benchmarks.run_tiered.linux.arm64.checked.mch +0.02%
coreclr_tests.run.linux.arm64.checked.mch +0.02%
libraries.crossgen2.linux.arm64.checked.mch +0.01%
libraries.pmi.linux.arm64.checked.mch +0.01%
libraries_tests.run.linux.arm64.Release.mch +0.02%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch +0.02%
realworld.run.linux.arm64.checked.mch +0.03%
smoke_tests.nativeaot.linux.arm64.checked.mch +0.01%
FullOpts (+0.00% to +0.01%)
Collection PDIFF
benchmarks.run.linux.arm64.checked.mch +0.01%
coreclr_tests.run.linux.arm64.checked.mch +0.01%
libraries.crossgen2.linux.arm64.checked.mch +0.01%
libraries.pmi.linux.arm64.checked.mch +0.01%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch +0.01%
realworld.run.linux.arm64.checked.mch +0.01%

Throughput diffs for osx/arm64 ran on windows/x64

Overall (+0.00% to +0.01%)
Collection PDIFF
benchmarks.run_pgo.osx.arm64.checked.mch +0.01%
benchmarks.run_tiered.osx.arm64.checked.mch +0.01%
coreclr_tests.run.osx.arm64.checked.mch +0.01%
libraries.crossgen2.osx.arm64.checked.mch +0.01%
libraries.pmi.osx.arm64.checked.mch +0.01%
libraries_tests.run.osx.arm64.Release.mch +0.01%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch +0.01%
realworld.run.osx.arm64.checked.mch +0.01%
MinOpts (+0.01% to +0.03%)
Collection PDIFF
benchmarks.run.osx.arm64.checked.mch +0.02%
benchmarks.run_pgo.osx.arm64.checked.mch +0.02%
benchmarks.run_tiered.osx.arm64.checked.mch +0.02%
coreclr_tests.run.osx.arm64.checked.mch +0.02%
libraries.crossgen2.osx.arm64.checked.mch +0.01%
libraries.pmi.osx.arm64.checked.mch +0.01%
libraries_tests.run.osx.arm64.Release.mch +0.02%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch +0.02%
realworld.run.osx.arm64.checked.mch +0.03%
FullOpts (+0.00% to +0.01%)
Collection PDIFF
benchmarks.run_tiered.osx.arm64.checked.mch +0.01%
coreclr_tests.run.osx.arm64.checked.mch +0.01%
libraries.crossgen2.osx.arm64.checked.mch +0.01%
libraries.pmi.osx.arm64.checked.mch +0.01%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch +0.01%
realworld.run.osx.arm64.checked.mch +0.01%

Throughput diffs for windows/arm64 ran on windows/x64

Overall (+0.00% to +0.01%)
Collection PDIFF
benchmarks.run_pgo.windows.arm64.checked.mch +0.01%
benchmarks.run_tiered.windows.arm64.checked.mch +0.01%
coreclr_tests.run.windows.arm64.checked.mch +0.01%
libraries.crossgen2.windows.arm64.checked.mch +0.01%
libraries.pmi.windows.arm64.checked.mch +0.01%
libraries_tests.run.windows.arm64.Release.mch +0.01%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch +0.01%
realworld.run.windows.arm64.checked.mch +0.01%
MinOpts (+0.01% to +0.03%)
Collection PDIFF
benchmarks.run.windows.arm64.checked.mch +0.02%
benchmarks.run_pgo.windows.arm64.checked.mch +0.02%
benchmarks.run_tiered.windows.arm64.checked.mch +0.02%
coreclr_tests.run.windows.arm64.checked.mch +0.02%
libraries.crossgen2.windows.arm64.checked.mch +0.01%
libraries.pmi.windows.arm64.checked.mch +0.01%
libraries_tests.run.windows.arm64.Release.mch +0.02%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch +0.02%
realworld.run.windows.arm64.checked.mch +0.03%
smoke_tests.nativeaot.windows.arm64.checked.mch +0.01%
FullOpts (+0.00% to +0.01%)
Collection PDIFF
benchmarks.run_tiered.windows.arm64.checked.mch +0.01%
coreclr_tests.run.windows.arm64.checked.mch +0.01%
libraries.crossgen2.windows.arm64.checked.mch +0.01%
libraries.pmi.windows.arm64.checked.mch +0.01%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch +0.01%
realworld.run.windows.arm64.checked.mch +0.01%

Details here


@kunalspathak kunalspathak added the arm-sve Work related to arm64 SVE/SVE2 support label Jan 24, 2024
@TIHan TIHan changed the title JIT: ARM64 SVE format encodings, SVE_HW_4A to SVE_IU_4A_C JIT: ARM64 SVE format encodings, SVE_HW_4A to SVE_HW_4B_D Jan 25, 2024
@TIHan
Copy link
Contributor Author

TIHan commented Jan 25, 2024

@a74nh , I created emitDispSveModAddr that will also work with lsl #N and added two more formats with one of them having lsl #N. I was able to combine more cases in displaying.

@ryujit-bot
Copy link

Diff results for #97433

Throughput diffs

Throughput diffs for linux/arm64 ran on linux/x64

MinOpts (-0.01% to -0.00%)
Collection PDIFF
libraries_tests.run.linux.arm64.Release.mch -0.01%
benchmarks.run_pgo.linux.arm64.checked.mch -0.01%
benchmarks.run_tiered.linux.arm64.checked.mch -0.01%
libraries.pmi.linux.arm64.checked.mch -0.01%

Details here


@ryujit-bot
Copy link

Diff results for #97433

Throughput diffs

Throughput diffs for linux/arm64 ran on linux/x64

MinOpts (-0.01% to -0.00%)
Collection PDIFF
libraries_tests.run.linux.arm64.Release.mch -0.01%
benchmarks.run_pgo.linux.arm64.checked.mch -0.01%
benchmarks.run_tiered.linux.arm64.checked.mch -0.01%
libraries.pmi.linux.arm64.checked.mch -0.01%

Details here


@ryujit-bot
Copy link

Diff results for #97433

Throughput diffs

Throughput diffs for linux/arm64 ran on linux/x64

MinOpts (-0.01% to -0.00%)
Collection PDIFF
libraries_tests.run.linux.arm64.Release.mch -0.01%
benchmarks.run_pgo.linux.arm64.checked.mch -0.01%
benchmarks.run_tiered.linux.arm64.checked.mch -0.01%
libraries.pmi.linux.arm64.checked.mch -0.01%

Details here


1 similar comment
@ryujit-bot
Copy link

Diff results for #97433

Throughput diffs

Throughput diffs for linux/arm64 ran on linux/x64

MinOpts (-0.01% to -0.00%)
Collection PDIFF
libraries_tests.run.linux.arm64.Release.mch -0.01%
benchmarks.run_pgo.linux.arm64.checked.mch -0.01%
benchmarks.run_tiered.linux.arm64.checked.mch -0.01%
libraries.pmi.linux.arm64.checked.mch -0.01%

Details here


@ryujit-bot
Copy link

Diff results for #97433

Throughput diffs

Throughput diffs for linux/arm64 ran on linux/x64

MinOpts (-0.01% to -0.00%)
Collection PDIFF
libraries_tests.run.linux.arm64.Release.mch -0.01%
benchmarks.run_pgo.linux.arm64.checked.mch -0.01%
benchmarks.run_tiered.linux.arm64.checked.mch -0.01%
libraries.pmi.linux.arm64.checked.mch -0.01%

Details here


@ryujit-bot
Copy link

Diff results for #97433

Throughput diffs

Throughput diffs for linux/arm64 ran on linux/x64

MinOpts (-0.01% to -0.00%)
Collection PDIFF
libraries_tests.run.linux.arm64.Release.mch -0.01%
benchmarks.run_pgo.linux.arm64.checked.mch -0.01%
benchmarks.run_tiered.linux.arm64.checked.mch -0.01%
libraries.pmi.linux.arm64.checked.mch -0.01%

Details here


4 similar comments
@ryujit-bot
Copy link

Diff results for #97433

Throughput diffs

Throughput diffs for linux/arm64 ran on linux/x64

MinOpts (-0.01% to -0.00%)
Collection PDIFF
libraries_tests.run.linux.arm64.Release.mch -0.01%
benchmarks.run_pgo.linux.arm64.checked.mch -0.01%
benchmarks.run_tiered.linux.arm64.checked.mch -0.01%
libraries.pmi.linux.arm64.checked.mch -0.01%

Details here


@ryujit-bot
Copy link

Diff results for #97433

Throughput diffs

Throughput diffs for linux/arm64 ran on linux/x64

MinOpts (-0.01% to -0.00%)
Collection PDIFF
libraries_tests.run.linux.arm64.Release.mch -0.01%
benchmarks.run_pgo.linux.arm64.checked.mch -0.01%
benchmarks.run_tiered.linux.arm64.checked.mch -0.01%
libraries.pmi.linux.arm64.checked.mch -0.01%

Details here


@ryujit-bot
Copy link

Diff results for #97433

Throughput diffs

Throughput diffs for linux/arm64 ran on linux/x64

MinOpts (-0.01% to -0.00%)
Collection PDIFF
libraries_tests.run.linux.arm64.Release.mch -0.01%
benchmarks.run_pgo.linux.arm64.checked.mch -0.01%
benchmarks.run_tiered.linux.arm64.checked.mch -0.01%
libraries.pmi.linux.arm64.checked.mch -0.01%

Details here


@ryujit-bot
Copy link

Diff results for #97433

Throughput diffs

Throughput diffs for linux/arm64 ran on linux/x64

MinOpts (-0.01% to -0.00%)
Collection PDIFF
libraries_tests.run.linux.arm64.Release.mch -0.01%
benchmarks.run_pgo.linux.arm64.checked.mch -0.01%
benchmarks.run_tiered.linux.arm64.checked.mch -0.01%
libraries.pmi.linux.arm64.checked.mch -0.01%

Details here


@ryujit-bot
Copy link

Diff results for #97433

Throughput diffs

Throughput diffs for linux/arm64 ran on linux/x64

MinOpts (-0.01% to -0.00%)
Collection PDIFF
libraries_tests.run.linux.arm64.Release.mch -0.01%
benchmarks.run_pgo.linux.arm64.checked.mch -0.01%
benchmarks.run_tiered.linux.arm64.checked.mch -0.01%
libraries.pmi.linux.arm64.checked.mch -0.01%

Details here


@ryujit-bot
Copy link

Diff results for #97433

Throughput diffs

Throughput diffs for linux/arm64 ran on linux/x64

MinOpts (-0.01% to -0.00%)
Collection PDIFF
libraries_tests.run.linux.arm64.Release.mch -0.01%
benchmarks.run_pgo.linux.arm64.checked.mch -0.01%
benchmarks.run_tiered.linux.arm64.checked.mch -0.01%
libraries.pmi.linux.arm64.checked.mch -0.01%

Details here


@ryujit-bot
Copy link

Diff results for #97433

Throughput diffs

Throughput diffs for linux/arm64 ran on linux/x64

MinOpts (-0.01% to -0.00%)
Collection PDIFF
libraries_tests.run.linux.arm64.Release.mch -0.01%
benchmarks.run_pgo.linux.arm64.checked.mch -0.01%
benchmarks.run_tiered.linux.arm64.checked.mch -0.01%
libraries.pmi.linux.arm64.checked.mch -0.01%

Details here


@ryujit-bot
Copy link

Diff results for #97433

Throughput diffs

Throughput diffs for linux/arm64 ran on linux/x64

MinOpts (-0.01% to -0.00%)
Collection PDIFF
libraries.pmi.linux.arm64.checked.mch -0.01%
smoke_tests.nativeaot.linux.arm64.checked.mch -0.01%
benchmarks.run_pgo.linux.arm64.checked.mch -0.01%
libraries.crossgen2.linux.arm64.checked.mch -0.01%
benchmarks.run_tiered.linux.arm64.checked.mch -0.01%
benchmarks.run.linux.arm64.checked.mch -0.01%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch -0.01%
libraries_tests.run.linux.arm64.Release.mch -0.01%

Details here


Copy link
Contributor

@a74nh a74nh left a comment

Choose a reason for hiding this comment

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

Thanks for the changes. All LGTM now.

src/coreclr/jit/emitarm64.h Show resolved Hide resolved
src/coreclr/jit/emitarm64.cpp Show resolved Hide resolved
src/coreclr/jit/emitarm64.cpp Show resolved Hide resolved
@ghost ghost added needs-author-action An issue or pull request that requires more info or actions from the author. and removed needs-author-action An issue or pull request that requires more info or actions from the author. labels Jan 26, 2024
@TIHan
Copy link
Contributor Author

TIHan commented Jan 26, 2024

@kunalspathak This is ready again. I added insSveIsModN that will be used for the assert to ensure we are using the right format and instruction.

@ryujit-bot
Copy link

Diff results for #97433

Throughput diffs

Throughput diffs for linux/arm64 ran on linux/x64

Overall (+0.00% to +0.01%)
Collection PDIFF
benchmarks.run_tiered.linux.arm64.checked.mch +0.01%
libraries.crossgen2.linux.arm64.checked.mch +0.01%
MinOpts (0.00% to +0.03%)
Collection PDIFF
benchmarks.run_tiered.linux.arm64.checked.mch +0.01%
realworld.run.linux.arm64.checked.mch +0.03%
FullOpts (+0.00% to +0.01%)
Collection PDIFF
libraries.crossgen2.linux.arm64.checked.mch +0.01%

Details here


@kunalspathak
Copy link
Member

/azp run runtime-coreclr superpmi-replay

Copy link

Azure Pipelines successfully started running 1 pipeline(s).

Copy link
Member

@kunalspathak kunalspathak left a comment

Choose a reason for hiding this comment

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

LGTM. spmi failures are because the collection doesn't exist, so i triggered the superpmi-replay just to make sure.

@kunalspathak
Copy link
Member

superpmi failures are #97587

@kunalspathak kunalspathak merged commit 2ea4caf into dotnet:main Jan 27, 2024
121 of 129 checks passed
@github-actions github-actions bot locked and limited conversation to collaborators Feb 26, 2024
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 arm-sve Work related to arm64 SVE/SVE2 support
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants