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_IF_4A to SVE_JK_4B #97739

Merged
merged 19 commits into from
Feb 5, 2024

Conversation

TIHan
Copy link
Contributor

@TIHan TIHan commented Jan 31, 2024

Contributes to #94549

Adds 35 formats. This is a large one, but it is better to do these all at once.

Progress:

  • SVE_IF_4A
  • SVE_IF_4A_A
  • SVE_IG_4A
  • SVE_IG_4A_D
  • SVE_IG_4A_E
  • SVE_IG_4A_F
  • SVE_IG_4A_G
  • SVE_II_4A
  • SVE_II_4A_B
  • SVE_II_4A_H
  • SVE_IK_4A_F
  • SVE_IK_4A_G
  • SVE_IK_4A_I
  • SVE_IN_4A
  • SVE_IP_4A
  • SVE_IR_4A
  • SVE_IT_4A
  • SVE_IU_4B
  • SVE_IU_4B_B
  • SVE_IU_4B_D
  • SVE_IW_4A
  • SVE_IX_4A
  • SVE_IY_4A
  • SVE_IZ_4A
  • SVE_IZ_4A_A
  • SVE_JA_4A
  • SVE_JB_4A
  • SVE_JC_4A
  • SVE_JD_4C
  • SVE_JD_4C_A
  • SVE_JF_4A
  • SVE_JJ_4B
  • SVE_JJ_4B_C
  • SVE_JJ_4B_E
  • SVE_JK_4B

Left: Capstone,
Right: Jit
image

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

ghost commented Jan 31, 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 35 formats. This is a large one, but it is better to do these all at once.

Progress:

  • SVE_IF_4A
  • SVE_IF_4A_A
  • SVE_IG_4A
  • SVE_IG_4A_D
  • SVE_IG_4A_E
  • SVE_IG_4A_F
  • SVE_IG_4A_G
  • SVE_II_4A
  • SVE_II_4A_B
  • SVE_II_4A_H
  • SVE_IK_4A_F
  • SVE_IK_4A_G
  • SVE_IK_4A_I
  • SVE_IN_4A
  • SVE_IP_4A
  • SVE_IR_4A
  • SVE_IT_4A
  • SVE_IU_4B
  • SVE_IU_4B_B
  • SVE_IU_4B_D
  • SVE_IW_4A
  • SVE_IX_4A
  • SVE_IY_4A
  • SVE_IZ_4A
  • SVE_IZ_4A_A
  • SVE_JA_4A
  • SVE_JB_4A
  • SVE_JC_4A
  • SVE_JD_4C
  • SVE_JD_4C_A
  • SVE_JF_4A
  • SVE_JJ_4B
  • SVE_JJ_4B_C
  • SVE_JJ_4B_E
  • SVE_JK_4B
Author: TIHan
Assignees: TIHan
Labels:

area-CodeGen-coreclr

Milestone: -

@ryujit-bot
Copy link

Diff results for #97739

Throughput diffs

Throughput diffs for windows/arm64 ran on linux/x64

MinOpts (-0.00% to +0.01%)
Collection PDIFF
libraries.pmi.windows.arm64.checked.mch +0.01%

Details here


@ryujit-bot
Copy link

Diff results for #97739

Throughput diffs

Throughput diffs for linux/arm64 ran on windows/x64

MinOpts (-0.00% to +0.01%)
Collection PDIFF
libraries.pmi.linux.arm64.checked.mch +0.01%

Details here


Throughput diffs for linux/arm64 ran on linux/x64

Overall (+0.02% to +0.04%)
Collection PDIFF
benchmarks.run.linux.arm64.checked.mch +0.02%
libraries.crossgen2.linux.arm64.checked.mch +0.03%
libraries.pmi.linux.arm64.checked.mch +0.02%
benchmarks.run_pgo.linux.arm64.checked.mch +0.02%
benchmarks.run_tiered.linux.arm64.checked.mch +0.04%
coreclr_tests.run.linux.arm64.checked.mch +0.03%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch +0.02%
smoke_tests.nativeaot.linux.arm64.checked.mch +0.02%
libraries_tests.run.linux.arm64.Release.mch +0.03%
realworld.run.linux.arm64.checked.mch +0.02%
MinOpts (+0.05% to +0.07%)
Collection PDIFF
benchmarks.run.linux.arm64.checked.mch +0.06%
libraries.crossgen2.linux.arm64.checked.mch +0.07%
libraries.pmi.linux.arm64.checked.mch +0.05%
benchmarks.run_pgo.linux.arm64.checked.mch +0.06%
benchmarks.run_tiered.linux.arm64.checked.mch +0.06%
coreclr_tests.run.linux.arm64.checked.mch +0.05%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch +0.07%
smoke_tests.nativeaot.linux.arm64.checked.mch +0.07%
libraries_tests.run.linux.arm64.Release.mch +0.06%
realworld.run.linux.arm64.checked.mch +0.07%
FullOpts (+0.02% to +0.03%)
Collection PDIFF
benchmarks.run.linux.arm64.checked.mch +0.02%
libraries.crossgen2.linux.arm64.checked.mch +0.03%
libraries.pmi.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_tests_no_tiered_compilation.run.linux.arm64.Release.mch +0.02%
smoke_tests.nativeaot.linux.arm64.checked.mch +0.02%
libraries_tests.run.linux.arm64.Release.mch +0.02%
realworld.run.linux.arm64.checked.mch +0.02%

Details here


@ryujit-bot
Copy link

Diff results for #97739

Throughput diffs

Throughput diffs for linux/arm64 ran on windows/x64

MinOpts (-0.01% to +0.00%)
Collection PDIFF
libraries.pmi.linux.arm64.checked.mch -0.01%

Throughput diffs for windows/arm64 ran on windows/x64

MinOpts (-0.00% to +0.01%)
Collection PDIFF
libraries.pmi.windows.arm64.checked.mch +0.01%

Details here


@ryujit-bot
Copy link

Diff results for #97739

Throughput diffs

Throughput diffs for linux/arm64 ran on windows/x64

MinOpts (-0.01% to +0.00%)
Collection PDIFF
libraries.pmi.linux.arm64.checked.mch -0.01%

Throughput diffs for windows/arm64 ran on windows/x64

MinOpts (-0.00% to +0.01%)
Collection PDIFF
libraries.pmi.windows.arm64.checked.mch +0.01%

Details here


Throughput diffs for linux/arm64 ran on linux/x64

Overall (+0.02% to +0.05%)
Collection PDIFF
benchmarks.run_pgo.linux.arm64.checked.mch +0.03%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch +0.02%
libraries_tests.run.linux.arm64.Release.mch +0.03%
libraries.pmi.linux.arm64.checked.mch +0.02%
smoke_tests.nativeaot.linux.arm64.checked.mch +0.02%
realworld.run.linux.arm64.checked.mch +0.02%
benchmarks.run.linux.arm64.checked.mch +0.02%
libraries.crossgen2.linux.arm64.checked.mch +0.03%
benchmarks.run_tiered.linux.arm64.checked.mch +0.05%
coreclr_tests.run.linux.arm64.checked.mch +0.04%
MinOpts (+0.06% to +0.10%)
Collection PDIFF
benchmarks.run_pgo.linux.arm64.checked.mch +0.08%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch +0.08%
libraries_tests.run.linux.arm64.Release.mch +0.08%
libraries.pmi.linux.arm64.checked.mch +0.06%
smoke_tests.nativeaot.linux.arm64.checked.mch +0.06%
realworld.run.linux.arm64.checked.mch +0.10%
benchmarks.run.linux.arm64.checked.mch +0.07%
libraries.crossgen2.linux.arm64.checked.mch +0.07%
benchmarks.run_tiered.linux.arm64.checked.mch +0.08%
coreclr_tests.run.linux.arm64.checked.mch +0.07%
FullOpts (+0.02% to +0.03%)
Collection PDIFF
benchmarks.run_pgo.linux.arm64.checked.mch +0.02%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch +0.02%
libraries_tests.run.linux.arm64.Release.mch +0.02%
libraries.pmi.linux.arm64.checked.mch +0.02%
smoke_tests.nativeaot.linux.arm64.checked.mch +0.02%
realworld.run.linux.arm64.checked.mch +0.02%
benchmarks.run.linux.arm64.checked.mch +0.02%
libraries.crossgen2.linux.arm64.checked.mch +0.03%
benchmarks.run_tiered.linux.arm64.checked.mch +0.02%
coreclr_tests.run.linux.arm64.checked.mch +0.02%

Details here


@TIHan TIHan marked this pull request as ready for review February 1, 2024 03:05
@TIHan
Copy link
Contributor Author

TIHan commented Feb 1, 2024

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

@ryujit-bot
Copy link

Diff results for #97739

Throughput diffs

Throughput diffs for linux/arm64 ran on windows/x64

MinOpts (-0.01% to -0.00%)
Collection PDIFF
smoke_tests.nativeaot.linux.arm64.checked.mch -0.01%

Throughput diffs for windows/arm64 ran on windows/x64

MinOpts (-0.01% to +0.00%)
Collection PDIFF
libraries.pmi.windows.arm64.checked.mch -0.01%
smoke_tests.nativeaot.windows.arm64.checked.mch -0.01%

Details here


@ryujit-bot
Copy link

Diff results for #97739

Throughput diffs

Throughput diffs for linux/arm64 ran on linux/x64

Overall (+0.02% to +0.06%)
Collection PDIFF
libraries.pmi.linux.arm64.checked.mch +0.02%
smoke_tests.nativeaot.linux.arm64.checked.mch +0.02%
benchmarks.run.linux.arm64.checked.mch +0.02%
realworld.run.linux.arm64.checked.mch +0.02%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch +0.03%
libraries.crossgen2.linux.arm64.checked.mch +0.03%
libraries_tests.run.linux.arm64.Release.mch +0.04%
benchmarks.run_tiered.linux.arm64.checked.mch +0.06%
coreclr_tests.run.linux.arm64.checked.mch +0.05%
benchmarks.run_pgo.linux.arm64.checked.mch +0.03%
MinOpts (+0.07% to +0.12%)
Collection PDIFF
libraries.pmi.linux.arm64.checked.mch +0.07%
smoke_tests.nativeaot.linux.arm64.checked.mch +0.07%
benchmarks.run.linux.arm64.checked.mch +0.08%
realworld.run.linux.arm64.checked.mch +0.12%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch +0.09%
libraries.crossgen2.linux.arm64.checked.mch +0.08%
libraries_tests.run.linux.arm64.Release.mch +0.09%
benchmarks.run_tiered.linux.arm64.checked.mch +0.09%
coreclr_tests.run.linux.arm64.checked.mch +0.08%
benchmarks.run_pgo.linux.arm64.checked.mch +0.09%
FullOpts (+0.02% to +0.03%)
Collection PDIFF
libraries.pmi.linux.arm64.checked.mch +0.02%
smoke_tests.nativeaot.linux.arm64.checked.mch +0.02%
benchmarks.run.linux.arm64.checked.mch +0.02%
realworld.run.linux.arm64.checked.mch +0.02%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch +0.02%
libraries.crossgen2.linux.arm64.checked.mch +0.03%
libraries_tests.run.linux.arm64.Release.mch +0.02%
benchmarks.run_tiered.linux.arm64.checked.mch +0.02%
coreclr_tests.run.linux.arm64.checked.mch +0.02%
benchmarks.run_pgo.linux.arm64.checked.mch +0.02%

Details here


@kunalspathak
Copy link
Member

TP diffs are on the higher side, can you check why?

image

@TIHan
Copy link
Contributor Author

TIHan commented Feb 1, 2024

I can look. My first guess is the additional cases in emitIns_R_R_R_R.

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.

I need another pass through (there's a lot of code!), but so far this is looking good.

INS_OPTS_SCALABLE_S); // LDNT1SB {<Zt>.S }, <Pg>/Z, [<Zn>.S{, <Xm>}]
theEmitter->emitIns_R_R_R_R(INS_sve_ldnt1sh, EA_SCALABLE, REG_V3, REG_P4, REG_V1, REG_R2,
INS_OPTS_SCALABLE_S); // LDNT1SH {<Zt>.S }, <Pg>/Z, [<Zn>.S{, <Xm>}]
// REG_ZR can be used due to the optional {, <Xm>} of the format.
Copy link
Contributor

Choose a reason for hiding this comment

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

Alternatively, we could use emitIns_R_R_R() for these, but I think your way is better

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I did think about it. We still have to pass and encode REG_ZR regardless so it just made sense to keep it as emitIns_R_R_R_R.

*/

void emitter::emitIns_BARR(instruction ins, insBarrier barrier)
Copy link
Contributor

Choose a reason for hiding this comment

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

Am I right in thinking you've not touched emitIns_BARR() or emitIns_R_R_R_COND() and this is just the diff getting confused?

Which emitIns_ functions have you changed?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

The diff is confused... never touched those. I only touched emitIns_R_R_R_R.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I'm probably going to create a new emitIns called emitInsSve_R_R_R_R and put all the handling of the sve instructions in that and have emitIns_R_R_R_R call into it as a fallback. I'm hopeful that would limit the TP regressions and have it be more organized.

@ryujit-bot
Copy link

Diff results for #97739

Throughput diffs

Throughput diffs for linux/arm64 ran on windows/x64

MinOpts (-0.01% to +0.00%)
Collection PDIFF
smoke_tests.nativeaot.linux.arm64.checked.mch -0.01%

Throughput diffs for windows/arm64 ran on windows/x64

MinOpts (-0.01% to +0.00%)
Collection PDIFF
smoke_tests.nativeaot.windows.arm64.checked.mch -0.01%

Details here


Throughput diffs for linux/arm64 ran on linux/x64

Overall (+0.02% to +0.06%)
Collection PDIFF
benchmarks.run_pgo.linux.arm64.checked.mch +0.03%
realworld.run.linux.arm64.checked.mch +0.02%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch +0.03%
libraries.pmi.linux.arm64.checked.mch +0.02%
benchmarks.run_tiered.linux.arm64.checked.mch +0.06%
libraries_tests.run.linux.arm64.Release.mch +0.04%
smoke_tests.nativeaot.linux.arm64.checked.mch +0.02%
libraries.crossgen2.linux.arm64.checked.mch +0.03%
benchmarks.run.linux.arm64.checked.mch +0.02%
coreclr_tests.run.linux.arm64.checked.mch +0.05%
MinOpts (+0.07% to +0.12%)
Collection PDIFF
benchmarks.run_pgo.linux.arm64.checked.mch +0.09%
realworld.run.linux.arm64.checked.mch +0.12%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch +0.09%
libraries.pmi.linux.arm64.checked.mch +0.07%
benchmarks.run_tiered.linux.arm64.checked.mch +0.09%
libraries_tests.run.linux.arm64.Release.mch +0.09%
smoke_tests.nativeaot.linux.arm64.checked.mch +0.07%
libraries.crossgen2.linux.arm64.checked.mch +0.08%
benchmarks.run.linux.arm64.checked.mch +0.08%
coreclr_tests.run.linux.arm64.checked.mch +0.08%
FullOpts (+0.02% to +0.03%)
Collection PDIFF
benchmarks.run_pgo.linux.arm64.checked.mch +0.02%
realworld.run.linux.arm64.checked.mch +0.02%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch +0.02%
libraries.pmi.linux.arm64.checked.mch +0.02%
benchmarks.run_tiered.linux.arm64.checked.mch +0.02%
libraries_tests.run.linux.arm64.Release.mch +0.02%
smoke_tests.nativeaot.linux.arm64.checked.mch +0.02%
libraries.crossgen2.linux.arm64.checked.mch +0.03%
benchmarks.run.linux.arm64.checked.mch +0.02%
coreclr_tests.run.linux.arm64.checked.mch +0.02%

Details here


@ryujit-bot
Copy link

Diff results for #97739

Throughput diffs

Throughput diffs for linux/arm64 ran on linux/x64

Overall (+0.02% to +0.06%)
Collection PDIFF
benchmarks.run_pgo.linux.arm64.checked.mch +0.03%
realworld.run.linux.arm64.checked.mch +0.02%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch +0.03%
libraries.pmi.linux.arm64.checked.mch +0.02%
benchmarks.run_tiered.linux.arm64.checked.mch +0.06%
libraries_tests.run.linux.arm64.Release.mch +0.04%
smoke_tests.nativeaot.linux.arm64.checked.mch +0.02%
libraries.crossgen2.linux.arm64.checked.mch +0.03%
benchmarks.run.linux.arm64.checked.mch +0.02%
coreclr_tests.run.linux.arm64.checked.mch +0.05%
MinOpts (+0.07% to +0.12%)
Collection PDIFF
benchmarks.run_pgo.linux.arm64.checked.mch +0.09%
realworld.run.linux.arm64.checked.mch +0.12%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch +0.09%
libraries.pmi.linux.arm64.checked.mch +0.07%
benchmarks.run_tiered.linux.arm64.checked.mch +0.09%
libraries_tests.run.linux.arm64.Release.mch +0.09%
smoke_tests.nativeaot.linux.arm64.checked.mch +0.07%
libraries.crossgen2.linux.arm64.checked.mch +0.08%
benchmarks.run.linux.arm64.checked.mch +0.08%
coreclr_tests.run.linux.arm64.checked.mch +0.08%
FullOpts (+0.02% to +0.03%)
Collection PDIFF
benchmarks.run_pgo.linux.arm64.checked.mch +0.02%
realworld.run.linux.arm64.checked.mch +0.02%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch +0.02%
libraries.pmi.linux.arm64.checked.mch +0.02%
benchmarks.run_tiered.linux.arm64.checked.mch +0.02%
libraries_tests.run.linux.arm64.Release.mch +0.02%
smoke_tests.nativeaot.linux.arm64.checked.mch +0.02%
libraries.crossgen2.linux.arm64.checked.mch +0.03%
benchmarks.run.linux.arm64.checked.mch +0.02%
coreclr_tests.run.linux.arm64.checked.mch +0.02%

Details here


@ryujit-bot
Copy link

Diff results for #97739

Throughput diffs

Throughput diffs for linux/arm64 ran on windows/x64

Overall (-0.66% to -0.26%)
Collection PDIFF
benchmarks.run.linux.arm64.checked.mch -0.28%
benchmarks.run_pgo.linux.arm64.checked.mch -0.34%
benchmarks.run_tiered.linux.arm64.checked.mch -0.66%
coreclr_tests.run.linux.arm64.checked.mch -0.56%
libraries.crossgen2.linux.arm64.checked.mch -0.43%
libraries.pmi.linux.arm64.checked.mch -0.29%
libraries_tests.run.linux.arm64.Release.mch -0.41%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch -0.30%
realworld.run.linux.arm64.checked.mch -0.28%
smoke_tests.nativeaot.linux.arm64.checked.mch -0.26%
MinOpts (-1.28% to -0.76%)
Collection PDIFF
benchmarks.run.linux.arm64.checked.mch -1.01%
benchmarks.run_pgo.linux.arm64.checked.mch -1.02%
benchmarks.run_tiered.linux.arm64.checked.mch -1.04%
coreclr_tests.run.linux.arm64.checked.mch -0.97%
libraries.crossgen2.linux.arm64.checked.mch -1.05%
libraries.pmi.linux.arm64.checked.mch -0.76%
libraries_tests.run.linux.arm64.Release.mch -1.04%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch -1.02%
realworld.run.linux.arm64.checked.mch -1.28%
smoke_tests.nativeaot.linux.arm64.checked.mch -0.88%
FullOpts (-0.43% to -0.23%)
Collection PDIFF
benchmarks.run.linux.arm64.checked.mch -0.28%
benchmarks.run_pgo.linux.arm64.checked.mch -0.25%
benchmarks.run_tiered.linux.arm64.checked.mch -0.26%
coreclr_tests.run.linux.arm64.checked.mch -0.28%
libraries.crossgen2.linux.arm64.checked.mch -0.43%
libraries.pmi.linux.arm64.checked.mch -0.29%
libraries_tests.run.linux.arm64.Release.mch -0.23%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch -0.28%
realworld.run.linux.arm64.checked.mch -0.27%
smoke_tests.nativeaot.linux.arm64.checked.mch -0.26%

Throughput diffs for osx/arm64 ran on windows/x64

Overall (-0.59% to -0.27%)
Collection PDIFF
benchmarks.run.osx.arm64.checked.mch -0.27%
benchmarks.run_pgo.osx.arm64.checked.mch -0.39%
benchmarks.run_tiered.osx.arm64.checked.mch -0.59%
coreclr_tests.run.osx.arm64.checked.mch -0.56%
libraries.crossgen2.osx.arm64.checked.mch -0.43%
libraries.pmi.osx.arm64.checked.mch -0.29%
libraries_tests.run.osx.arm64.Release.mch -0.47%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch -0.30%
realworld.run.osx.arm64.checked.mch -0.28%
MinOpts (-1.29% to -0.76%)
Collection PDIFF
benchmarks.run.osx.arm64.checked.mch -1.12%
benchmarks.run_pgo.osx.arm64.checked.mch -1.05%
benchmarks.run_tiered.osx.arm64.checked.mch -1.07%
coreclr_tests.run.osx.arm64.checked.mch -0.96%
libraries.crossgen2.osx.arm64.checked.mch -1.04%
libraries.pmi.osx.arm64.checked.mch -0.76%
libraries_tests.run.osx.arm64.Release.mch -1.05%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch -1.02%
realworld.run.osx.arm64.checked.mch -1.29%
FullOpts (-0.43% to -0.23%)
Collection PDIFF
benchmarks.run.osx.arm64.checked.mch -0.27%
benchmarks.run_pgo.osx.arm64.checked.mch -0.24%
benchmarks.run_tiered.osx.arm64.checked.mch -0.25%
coreclr_tests.run.osx.arm64.checked.mch -0.29%
libraries.crossgen2.osx.arm64.checked.mch -0.43%
libraries.pmi.osx.arm64.checked.mch -0.29%
libraries_tests.run.osx.arm64.Release.mch -0.23%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch -0.28%
realworld.run.osx.arm64.checked.mch -0.27%

Throughput diffs for windows/arm64 ran on windows/x64

Overall (-0.57% to -0.26%)
Collection PDIFF
benchmarks.run.windows.arm64.checked.mch -0.27%
benchmarks.run_pgo.windows.arm64.checked.mch -0.34%
benchmarks.run_tiered.windows.arm64.checked.mch -0.57%
coreclr_tests.run.windows.arm64.checked.mch -0.56%
libraries.crossgen2.windows.arm64.checked.mch -0.43%
libraries.pmi.windows.arm64.checked.mch -0.29%
libraries_tests.run.windows.arm64.Release.mch -0.46%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch -0.30%
realworld.run.windows.arm64.checked.mch -0.28%
smoke_tests.nativeaot.windows.arm64.checked.mch -0.26%
MinOpts (-1.29% to -0.76%)
Collection PDIFF
benchmarks.run.windows.arm64.checked.mch -1.12%
benchmarks.run_pgo.windows.arm64.checked.mch -1.04%
benchmarks.run_tiered.windows.arm64.checked.mch -1.06%
coreclr_tests.run.windows.arm64.checked.mch -0.96%
libraries.crossgen2.windows.arm64.checked.mch -1.05%
libraries.pmi.windows.arm64.checked.mch -0.76%
libraries_tests.run.windows.arm64.Release.mch -1.05%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch -1.02%
realworld.run.windows.arm64.checked.mch -1.29%
smoke_tests.nativeaot.windows.arm64.checked.mch -0.88%
FullOpts (-0.43% to -0.24%)
Collection PDIFF
benchmarks.run.windows.arm64.checked.mch -0.27%
benchmarks.run_pgo.windows.arm64.checked.mch -0.24%
benchmarks.run_tiered.windows.arm64.checked.mch -0.25%
coreclr_tests.run.windows.arm64.checked.mch -0.29%
libraries.crossgen2.windows.arm64.checked.mch -0.43%
libraries.pmi.windows.arm64.checked.mch -0.29%
libraries_tests.run.windows.arm64.Release.mch -0.24%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch -0.28%
realworld.run.windows.arm64.checked.mch -0.27%
smoke_tests.nativeaot.windows.arm64.checked.mch -0.26%

Details here


@TIHan
Copy link
Contributor Author

TIHan commented Feb 2, 2024

@kunalspathak looks like I solved the TP regression :)

@ryujit-bot
Copy link

Diff results for #97739

Throughput diffs

Throughput diffs for linux/arm64 ran on linux/x64

Overall (-0.01% to -0.00%)
Collection PDIFF
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%
benchmarks.run.linux.arm64.checked.mch -0.01%
libraries_tests.run.linux.arm64.Release.mch -0.01%
realworld.run.linux.arm64.checked.mch -0.01%
libraries.crossgen2.linux.arm64.checked.mch -0.01%
coreclr_tests.run.linux.arm64.checked.mch -0.01%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch -0.01%
MinOpts (-0.04% to -0.01%)
Collection PDIFF
benchmarks.run_pgo.linux.arm64.checked.mch -0.02%
benchmarks.run_tiered.linux.arm64.checked.mch -0.02%
libraries.pmi.linux.arm64.checked.mch -0.01%
benchmarks.run.linux.arm64.checked.mch -0.01%
libraries_tests.run.linux.arm64.Release.mch -0.02%
realworld.run.linux.arm64.checked.mch -0.04%
libraries.crossgen2.linux.arm64.checked.mch -0.01%
smoke_tests.nativeaot.linux.arm64.checked.mch -0.01%
coreclr_tests.run.linux.arm64.checked.mch -0.02%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch -0.02%
FullOpts (-0.01% to -0.00%)
Collection PDIFF
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%
benchmarks.run.linux.arm64.checked.mch -0.01%
libraries_tests.run.linux.arm64.Release.mch -0.01%
realworld.run.linux.arm64.checked.mch -0.01%
libraries.crossgen2.linux.arm64.checked.mch -0.01%
coreclr_tests.run.linux.arm64.checked.mch -0.01%
libraries_tests_no_tiered_compilation.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.

Other than the one thing below, LGTM.

Disclaimer: I've not checked checked every single pattern by hand as there are a lot.

@@ -6344,6 +6344,384 @@ void CodeGen::genArm64EmitterUnitTestsSve()
INS_OPTS_SCALABLE_D); // LDFF1SH {<Zt>.D }, <Pg>/Z, [<Xn|SP>, <Zm>.D]
theEmitter->emitIns_R_R_R_R(INS_sve_ldff1w, EA_SCALABLE, REG_V4, REG_P3, REG_R2, REG_V1,
INS_OPTS_SCALABLE_D); // LDFF1W {<Zt>.D }, <Pg>/Z, [<Xn|SP>, <Zm>.D]

// IF_SVE_IF_4A
theEmitter->emitIns_R_R_R_R(INS_sve_ldnt1b, EA_SCALABLE, REG_V3, REG_P2, REG_V1, REG_R0,
Copy link
Contributor

Choose a reason for hiding this comment

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

Should probably call emitInsSve_R_R_R_R() directly here and remove the changes from emitIns_R_R_R_R() ?

@kunalspathak : not sure what your future plans for splitting things up was?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I could go either way. The benefit of calling emitInsSve is intent, and we could remove the scalable options from the emitIns.

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.

Thanks for covering many formats. Added some suggestions.

INS_SCALABLE_OPTS_LSL_N); // LD3Q {<Zt1>.Q, <Zt2>.Q, <Zt3>.Q }, <Pg>/Z, [<Xn|SP>,
// <Xm>,
// LSL #4]
theEmitter->emitIns_R_R_R_R(INS_sve_ld4q, EA_SCALABLE, REG_V5, REG_P1, REG_R4, REG_R3, INS_OPTS_SCALABLE_Q,
Copy link
Member

Choose a reason for hiding this comment

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

hhm, lot of instructions that needs consecutive registers.

* for the 'dtype' field.
*/

/*static*/ emitter::code_t emitter::insEncodeSveElemsize_dtype_ld1w(instruction ins, insFormat fmt, emitAttr size, code_t code)
Copy link
Member

Choose a reason for hiding this comment

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

is there a reason why this can't be part of insEncodeSveElemsize_dtype()? For each size, you can have a case INS_sve_ld1w and then a switch/case for the formats?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Yea, ld1w has to be handled differently for two formats while the other cases in insEncodeSveElemsize_dtype don't need to be.

Copy link
Member

@kunalspathak kunalspathak Feb 5, 2024

Choose a reason for hiding this comment

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

sure, so can you send the fmt to insEncodeSveElemsize_dtype and handle it accordingly instead of creating a new method?

Edit: possibly, we might need fmt to handle future instructions as well, so should be ok to send it in.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

fmt isn't needed for the other instructions, it's only needed for ld1w. Passing in fmt for insEncodeSveElemsize_dtype would imply that it will check the format for the other instructions which I didn't want.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

What makes ld1w special is that we have to set specific bits that are actually unrelated to dtype, but related to elemsize.

Copy link
Member

Choose a reason for hiding this comment

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

Passing in fmt for insEncodeSveElemsize_dtype would imply that it will check the format for the other instructions which I didn't want

You can just a case ld1w and do whatever you are doing in insEncodeSveElemsize_dtype_ld1w?

Copy link
Member

Choose a reason for hiding this comment

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

discussed this offline - we decided to keep insEncodeSveElemsize_dtype_ld1w but if more instructions need similar special handling, then we will merge it in insEncodeSveElemsize_dtype .

break;

default:
assert(!"Invalid instruction");
Copy link
Member

Choose a reason for hiding this comment

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

this is little odd that we have 4 cases that can land us inside this switch/case and here too we need to add default and assert.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

The default case should never be hit here. The assert is more for sanity.

Copy link
Member

Choose a reason for hiding this comment

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

I know, I am just pointing that we are writing odd looking pattern and testing C++ compiler here :) But honestly, not sure what's the best alternative here.

switch (ins)
{
  case insA:
  case insB:
  case insC:
  case insD:
      ...
      ...
      switch (ins)
      {
         case insA:
         case insB:
         case insC:
         case insD:
         ...
         default:
            assert("c++ compiler messed up :)");
      }
}

fmt = IF_SVE_IK_4A_I;
break;

default:
Copy link
Member

Choose a reason for hiding this comment

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

likewise here and down below.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Same with this, default case should never be hit.

* Returns true if the SVE instruction has a LSL addr.
* This is for formats that have [<Xn|SP>, <Xm>, LSL #N], [<Xn|SP>{, <Xm>, LSL #N}]
*/
/*static*/ bool emitter::insSveIsLslN(instruction ins, insFormat fmt)
Copy link
Member

Choose a reason for hiding this comment

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

this kind of methods should really be converted to a table driven lookup.

Copy link
Member

Choose a reason for hiding this comment

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

I have added this in one of the task of #93095

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Makes sense to me, though we shouldn't do it in this PR. A follow-up will be better.

@@ -2397,6 +2398,7 @@ class emitter
void emitAdvanceInstrDesc(instrDesc** id, size_t idSize) const;
size_t emitIssue1Instr(insGroup* ig, instrDesc* id, BYTE** dp);
size_t emitOutputInstr(insGroup* ig, instrDesc* id, BYTE** dp);
BYTE* emitInstrSve(instrDesc* id, BYTE* dst);
Copy link
Member

Choose a reason for hiding this comment

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

rename it to emitOutputInstrSve() . Also should be guarded by #ifdef TARGET_ARM64.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I originally wanted to name it that, but emitOutputInstrSve can't be called independently of emitOutputInstr, and the signature is different, such as emitOutputInstr returns a size_t where as the emitOutputInstrSve would return a BYTE*.

Maybe I'm being too picky on the name. I noticed we also have a emitOutput_Instr which has a similar signature to emitInstrSve. Maybe I can just call it emitOutput_InstrSve ... just putting an underscore in there.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Yea I wasn't thinking, this should have just been defined in emitarm64.h rather than in emit.h.

if (isVectorRegister(reg1))
{
// If the overall instruction is working on 128-bit
// registers, the size of this register for
Copy link
Member

Choose a reason for hiding this comment

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

given the capstone matches with JITDisasm, I just skimmed through the display code.

@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 Feb 3, 2024
@ryujit-bot
Copy link

Diff results for #97739

Throughput diffs

Throughput diffs for linux/arm64 ran on windows/x64

Overall (-0.62% to -0.26%)
Collection PDIFF
benchmarks.run.linux.arm64.checked.mch -0.27%
benchmarks.run_pgo.linux.arm64.checked.mch -0.35%
benchmarks.run_tiered.linux.arm64.checked.mch -0.62%
coreclr_tests.run.linux.arm64.checked.mch -0.56%
libraries.crossgen2.linux.arm64.checked.mch -0.44%
libraries.pmi.linux.arm64.checked.mch -0.29%
libraries_tests.run.linux.arm64.Release.mch -0.51%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch -0.30%
realworld.run.linux.arm64.checked.mch -0.28%
smoke_tests.nativeaot.linux.arm64.checked.mch -0.26%
MinOpts (-1.27% to -0.76%)
Collection PDIFF
benchmarks.run.linux.arm64.checked.mch -1.01%
benchmarks.run_pgo.linux.arm64.checked.mch -1.03%
benchmarks.run_tiered.linux.arm64.checked.mch -1.04%
coreclr_tests.run.linux.arm64.checked.mch -0.96%
libraries.crossgen2.linux.arm64.checked.mch -1.05%
libraries.pmi.linux.arm64.checked.mch -0.76%
libraries_tests.run.linux.arm64.Release.mch -1.06%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch -1.01%
realworld.run.linux.arm64.checked.mch -1.27%
smoke_tests.nativeaot.linux.arm64.checked.mch -0.88%
FullOpts (-0.44% to -0.25%)
Collection PDIFF
benchmarks.run.linux.arm64.checked.mch -0.27%
benchmarks.run_pgo.linux.arm64.checked.mch -0.26%
benchmarks.run_tiered.linux.arm64.checked.mch -0.25%
coreclr_tests.run.linux.arm64.checked.mch -0.28%
libraries.crossgen2.linux.arm64.checked.mch -0.44%
libraries.pmi.linux.arm64.checked.mch -0.29%
libraries_tests.run.linux.arm64.Release.mch -0.26%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch -0.28%
realworld.run.linux.arm64.checked.mch -0.27%
smoke_tests.nativeaot.linux.arm64.checked.mch -0.26%

Throughput diffs for osx/arm64 ran on windows/x64

Overall (-0.71% to -0.27%)
Collection PDIFF
benchmarks.run.osx.arm64.checked.mch -0.27%
benchmarks.run_pgo.osx.arm64.checked.mch -0.49%
benchmarks.run_tiered.osx.arm64.checked.mch -0.59%
coreclr_tests.run.osx.arm64.checked.mch -0.54%
libraries.crossgen2.osx.arm64.checked.mch -0.43%
libraries.pmi.osx.arm64.checked.mch -0.29%
libraries_tests.run.osx.arm64.Release.mch -0.71%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch -0.30%
realworld.run.osx.arm64.checked.mch -0.28%
MinOpts (-1.29% to -0.76%)
Collection PDIFF
benchmarks.run.osx.arm64.checked.mch -1.14%
benchmarks.run_pgo.osx.arm64.checked.mch -1.05%
benchmarks.run_tiered.osx.arm64.checked.mch -1.07%
coreclr_tests.run.osx.arm64.checked.mch -0.99%
libraries.crossgen2.osx.arm64.checked.mch -1.04%
libraries.pmi.osx.arm64.checked.mch -0.76%
libraries_tests.run.osx.arm64.Release.mch -1.07%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch -1.02%
realworld.run.osx.arm64.checked.mch -1.29%
FullOpts (-0.43% to -0.24%)
Collection PDIFF
benchmarks.run.osx.arm64.checked.mch -0.27%
benchmarks.run_pgo.osx.arm64.checked.mch -0.24%
benchmarks.run_tiered.osx.arm64.checked.mch -0.25%
coreclr_tests.run.osx.arm64.checked.mch -0.29%
libraries.crossgen2.osx.arm64.checked.mch -0.43%
libraries.pmi.osx.arm64.checked.mch -0.29%
libraries_tests.run.osx.arm64.Release.mch -0.26%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch -0.28%
realworld.run.osx.arm64.checked.mch -0.27%

Throughput diffs for windows/arm64 ran on windows/x64

Overall (-0.58% to -0.26%)
Collection PDIFF
benchmarks.run.windows.arm64.checked.mch -0.27%
benchmarks.run_pgo.windows.arm64.checked.mch -0.34%
benchmarks.run_tiered.windows.arm64.checked.mch -0.58%
coreclr_tests.run.windows.arm64.checked.mch -0.45%
libraries.crossgen2.windows.arm64.checked.mch -0.44%
libraries.pmi.windows.arm64.checked.mch -0.29%
libraries_tests.run.windows.arm64.Release.mch -0.33%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch -0.30%
realworld.run.windows.arm64.checked.mch -0.28%
smoke_tests.nativeaot.windows.arm64.checked.mch -0.26%
MinOpts (-1.29% to -0.76%)
Collection PDIFF
benchmarks.run.windows.arm64.checked.mch -1.12%
benchmarks.run_pgo.windows.arm64.checked.mch -1.04%
benchmarks.run_tiered.windows.arm64.checked.mch -1.06%
coreclr_tests.run.windows.arm64.checked.mch -0.92%
libraries.crossgen2.windows.arm64.checked.mch -1.05%
libraries.pmi.windows.arm64.checked.mch -0.76%
libraries_tests.run.windows.arm64.Release.mch -1.03%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch -1.02%
realworld.run.windows.arm64.checked.mch -1.29%
smoke_tests.nativeaot.windows.arm64.checked.mch -0.88%
FullOpts (-0.44% to -0.24%)
Collection PDIFF
benchmarks.run.windows.arm64.checked.mch -0.27%
benchmarks.run_pgo.windows.arm64.checked.mch -0.24%
benchmarks.run_tiered.windows.arm64.checked.mch -0.25%
coreclr_tests.run.windows.arm64.checked.mch -0.29%
libraries.crossgen2.windows.arm64.checked.mch -0.44%
libraries.pmi.windows.arm64.checked.mch -0.29%
libraries_tests.run.windows.arm64.Release.mch -0.28%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch -0.28%
realworld.run.windows.arm64.checked.mch -0.27%
smoke_tests.nativeaot.windows.arm64.checked.mch -0.26%

Details here


@ryujit-bot
Copy link

Diff results for #97739

Throughput diffs

Throughput diffs for linux/arm64 ran on linux/x64

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

Details here


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

@ryujit-bot
Copy link

Diff results for #97739

Throughput diffs

Throughput diffs for linux/arm64 ran on linux/x64

Overall (-0.62% to -0.26%)
Collection PDIFF
benchmarks.run.linux.arm64.checked.mch -0.27%
benchmarks.run_pgo.linux.arm64.checked.mch -0.35%
benchmarks.run_tiered.linux.arm64.checked.mch -0.62%
coreclr_tests.run.linux.arm64.checked.mch -0.47%
libraries.crossgen2.linux.arm64.checked.mch -0.44%
libraries.pmi.linux.arm64.checked.mch -0.29%
libraries_tests.run.linux.arm64.Release.mch -0.51%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch -0.30%
realworld.run.linux.arm64.checked.mch -0.28%
smoke_tests.nativeaot.linux.arm64.checked.mch -0.26%
MinOpts (-1.28% to -0.76%)
Collection PDIFF
benchmarks.run.linux.arm64.checked.mch -1.01%
benchmarks.run_pgo.linux.arm64.checked.mch -1.03%
benchmarks.run_tiered.linux.arm64.checked.mch -1.04%
coreclr_tests.run.linux.arm64.checked.mch -0.94%
libraries.crossgen2.linux.arm64.checked.mch -1.05%
libraries.pmi.linux.arm64.checked.mch -0.76%
libraries_tests.run.linux.arm64.Release.mch -1.06%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch -1.01%
realworld.run.linux.arm64.checked.mch -1.28%
smoke_tests.nativeaot.linux.arm64.checked.mch -0.88%
FullOpts (-0.44% to -0.25%)
Collection PDIFF
benchmarks.run.linux.arm64.checked.mch -0.27%
benchmarks.run_pgo.linux.arm64.checked.mch -0.26%
benchmarks.run_tiered.linux.arm64.checked.mch -0.25%
coreclr_tests.run.linux.arm64.checked.mch -0.29%
libraries.crossgen2.linux.arm64.checked.mch -0.44%
libraries.pmi.linux.arm64.checked.mch -0.29%
libraries_tests.run.linux.arm64.Release.mch -0.26%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch -0.28%
realworld.run.linux.arm64.checked.mch -0.27%
smoke_tests.nativeaot.linux.arm64.checked.mch -0.26%

Throughput diffs for osx/arm64 ran on linux/x64

Overall (-0.71% to -0.27%)
Collection PDIFF
benchmarks.run.osx.arm64.checked.mch -0.27%
benchmarks.run_pgo.osx.arm64.checked.mch -0.49%
benchmarks.run_tiered.osx.arm64.checked.mch -0.59%
coreclr_tests.run.osx.arm64.checked.mch -0.54%
libraries.crossgen2.osx.arm64.checked.mch -0.44%
libraries.pmi.osx.arm64.checked.mch -0.29%
libraries_tests.run.osx.arm64.Release.mch -0.71%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch -0.30%
realworld.run.osx.arm64.checked.mch -0.28%
MinOpts (-1.29% to -0.76%)
Collection PDIFF
benchmarks.run.osx.arm64.checked.mch -1.14%
benchmarks.run_pgo.osx.arm64.checked.mch -1.05%
benchmarks.run_tiered.osx.arm64.checked.mch -1.07%
coreclr_tests.run.osx.arm64.checked.mch -0.99%
libraries.crossgen2.osx.arm64.checked.mch -1.04%
libraries.pmi.osx.arm64.checked.mch -0.76%
libraries_tests.run.osx.arm64.Release.mch -1.07%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch -1.02%
realworld.run.osx.arm64.checked.mch -1.29%
FullOpts (-0.44% to -0.24%)
Collection PDIFF
benchmarks.run.osx.arm64.checked.mch -0.27%
benchmarks.run_pgo.osx.arm64.checked.mch -0.24%
benchmarks.run_tiered.osx.arm64.checked.mch -0.25%
coreclr_tests.run.osx.arm64.checked.mch -0.29%
libraries.crossgen2.osx.arm64.checked.mch -0.44%
libraries.pmi.osx.arm64.checked.mch -0.29%
libraries_tests.run.osx.arm64.Release.mch -0.26%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch -0.28%
realworld.run.osx.arm64.checked.mch -0.27%

Throughput diffs for windows/arm64 ran on linux/x64

Overall (-0.58% to -0.26%)
Collection PDIFF
benchmarks.run.windows.arm64.checked.mch -0.27%
benchmarks.run_pgo.windows.arm64.checked.mch -0.34%
benchmarks.run_tiered.windows.arm64.checked.mch -0.58%
coreclr_tests.run.windows.arm64.checked.mch -0.45%
libraries.crossgen2.windows.arm64.checked.mch -0.44%
libraries.pmi.windows.arm64.checked.mch -0.29%
libraries_tests.run.windows.arm64.Release.mch -0.33%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch -0.30%
realworld.run.windows.arm64.checked.mch -0.28%
smoke_tests.nativeaot.windows.arm64.checked.mch -0.26%
MinOpts (-1.29% to -0.76%)
Collection PDIFF
benchmarks.run.windows.arm64.checked.mch -1.12%
benchmarks.run_pgo.windows.arm64.checked.mch -1.04%
benchmarks.run_tiered.windows.arm64.checked.mch -1.06%
coreclr_tests.run.windows.arm64.checked.mch -0.92%
libraries.crossgen2.windows.arm64.checked.mch -1.05%
libraries.pmi.windows.arm64.checked.mch -0.76%
libraries_tests.run.windows.arm64.Release.mch -1.03%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch -1.02%
realworld.run.windows.arm64.checked.mch -1.29%
smoke_tests.nativeaot.windows.arm64.checked.mch -0.88%
FullOpts (-0.44% to -0.24%)
Collection PDIFF
benchmarks.run.windows.arm64.checked.mch -0.27%
benchmarks.run_pgo.windows.arm64.checked.mch -0.24%
benchmarks.run_tiered.windows.arm64.checked.mch -0.25%
coreclr_tests.run.windows.arm64.checked.mch -0.29%
libraries.crossgen2.windows.arm64.checked.mch -0.44%
libraries.pmi.windows.arm64.checked.mch -0.29%
libraries_tests.run.windows.arm64.Release.mch -0.28%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch -0.28%
realworld.run.windows.arm64.checked.mch -0.27%
smoke_tests.nativeaot.windows.arm64.checked.mch -0.26%

Details here


@ryujit-bot
Copy link

Diff results for #97739

Throughput diffs

Throughput diffs for linux/arm64 ran on windows/x64

Overall (-0.62% to -0.26%)
Collection PDIFF
benchmarks.run.linux.arm64.checked.mch -0.27%
benchmarks.run_pgo.linux.arm64.checked.mch -0.35%
benchmarks.run_tiered.linux.arm64.checked.mch -0.62%
coreclr_tests.run.linux.arm64.checked.mch -0.47%
libraries.crossgen2.linux.arm64.checked.mch -0.44%
libraries.pmi.linux.arm64.checked.mch -0.29%
libraries_tests.run.linux.arm64.Release.mch -0.51%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch -0.30%
realworld.run.linux.arm64.checked.mch -0.28%
smoke_tests.nativeaot.linux.arm64.checked.mch -0.26%
MinOpts (-1.28% to -0.76%)
Collection PDIFF
benchmarks.run.linux.arm64.checked.mch -1.01%
benchmarks.run_pgo.linux.arm64.checked.mch -1.03%
benchmarks.run_tiered.linux.arm64.checked.mch -1.04%
coreclr_tests.run.linux.arm64.checked.mch -0.94%
libraries.crossgen2.linux.arm64.checked.mch -1.05%
libraries.pmi.linux.arm64.checked.mch -0.76%
libraries_tests.run.linux.arm64.Release.mch -1.06%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch -1.01%
realworld.run.linux.arm64.checked.mch -1.28%
smoke_tests.nativeaot.linux.arm64.checked.mch -0.88%
FullOpts (-0.44% to -0.25%)
Collection PDIFF
benchmarks.run.linux.arm64.checked.mch -0.27%
benchmarks.run_pgo.linux.arm64.checked.mch -0.26%
benchmarks.run_tiered.linux.arm64.checked.mch -0.25%
coreclr_tests.run.linux.arm64.checked.mch -0.29%
libraries.crossgen2.linux.arm64.checked.mch -0.44%
libraries.pmi.linux.arm64.checked.mch -0.29%
libraries_tests.run.linux.arm64.Release.mch -0.26%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch -0.28%
realworld.run.linux.arm64.checked.mch -0.27%
smoke_tests.nativeaot.linux.arm64.checked.mch -0.26%

Throughput diffs for osx/arm64 ran on windows/x64

Overall (-0.71% to -0.27%)
Collection PDIFF
benchmarks.run.osx.arm64.checked.mch -0.27%
benchmarks.run_pgo.osx.arm64.checked.mch -0.49%
benchmarks.run_tiered.osx.arm64.checked.mch -0.59%
coreclr_tests.run.osx.arm64.checked.mch -0.54%
libraries.crossgen2.osx.arm64.checked.mch -0.44%
libraries.pmi.osx.arm64.checked.mch -0.29%
libraries_tests.run.osx.arm64.Release.mch -0.71%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch -0.30%
realworld.run.osx.arm64.checked.mch -0.28%
MinOpts (-1.29% to -0.76%)
Collection PDIFF
benchmarks.run.osx.arm64.checked.mch -1.14%
benchmarks.run_pgo.osx.arm64.checked.mch -1.05%
benchmarks.run_tiered.osx.arm64.checked.mch -1.07%
coreclr_tests.run.osx.arm64.checked.mch -0.99%
libraries.crossgen2.osx.arm64.checked.mch -1.04%
libraries.pmi.osx.arm64.checked.mch -0.76%
libraries_tests.run.osx.arm64.Release.mch -1.07%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch -1.02%
realworld.run.osx.arm64.checked.mch -1.29%
FullOpts (-0.44% to -0.24%)
Collection PDIFF
benchmarks.run.osx.arm64.checked.mch -0.27%
benchmarks.run_pgo.osx.arm64.checked.mch -0.24%
benchmarks.run_tiered.osx.arm64.checked.mch -0.25%
coreclr_tests.run.osx.arm64.checked.mch -0.29%
libraries.crossgen2.osx.arm64.checked.mch -0.44%
libraries.pmi.osx.arm64.checked.mch -0.29%
libraries_tests.run.osx.arm64.Release.mch -0.26%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch -0.28%
realworld.run.osx.arm64.checked.mch -0.27%

Throughput diffs for windows/arm64 ran on windows/x64

Overall (-0.58% to -0.26%)
Collection PDIFF
benchmarks.run.windows.arm64.checked.mch -0.27%
benchmarks.run_pgo.windows.arm64.checked.mch -0.34%
benchmarks.run_tiered.windows.arm64.checked.mch -0.58%
coreclr_tests.run.windows.arm64.checked.mch -0.45%
libraries.crossgen2.windows.arm64.checked.mch -0.44%
libraries.pmi.windows.arm64.checked.mch -0.29%
libraries_tests.run.windows.arm64.Release.mch -0.33%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch -0.30%
realworld.run.windows.arm64.checked.mch -0.28%
smoke_tests.nativeaot.windows.arm64.checked.mch -0.26%
MinOpts (-1.29% to -0.76%)
Collection PDIFF
benchmarks.run.windows.arm64.checked.mch -1.12%
benchmarks.run_pgo.windows.arm64.checked.mch -1.04%
benchmarks.run_tiered.windows.arm64.checked.mch -1.06%
coreclr_tests.run.windows.arm64.checked.mch -0.92%
libraries.crossgen2.windows.arm64.checked.mch -1.05%
libraries.pmi.windows.arm64.checked.mch -0.76%
libraries_tests.run.windows.arm64.Release.mch -1.03%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch -1.02%
realworld.run.windows.arm64.checked.mch -1.29%
smoke_tests.nativeaot.windows.arm64.checked.mch -0.88%
FullOpts (-0.44% to -0.24%)
Collection PDIFF
benchmarks.run.windows.arm64.checked.mch -0.27%
benchmarks.run_pgo.windows.arm64.checked.mch -0.24%
benchmarks.run_tiered.windows.arm64.checked.mch -0.25%
coreclr_tests.run.windows.arm64.checked.mch -0.29%
libraries.crossgen2.windows.arm64.checked.mch -0.44%
libraries.pmi.windows.arm64.checked.mch -0.29%
libraries_tests.run.windows.arm64.Release.mch -0.28%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch -0.28%
realworld.run.windows.arm64.checked.mch -0.27%
smoke_tests.nativeaot.windows.arm64.checked.mch -0.26%

Details here


Throughput diffs for linux/arm64 ran on linux/x64

Overall (-0.01% to -0.00%)
Collection PDIFF
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch -0.01%
libraries_tests.run.linux.arm64.Release.mch -0.01%
realworld.run.linux.arm64.checked.mch -0.01%
libraries.pmi.linux.arm64.checked.mch -0.01%
coreclr_tests.run.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_pgo.linux.arm64.checked.mch -0.01%
benchmarks.run.linux.arm64.checked.mch -0.01%
MinOpts (-0.06% to -0.01%)
Collection PDIFF
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch -0.03%
smoke_tests.nativeaot.linux.arm64.checked.mch -0.01%
libraries_tests.run.linux.arm64.Release.mch -0.03%
realworld.run.linux.arm64.checked.mch -0.06%
libraries.pmi.linux.arm64.checked.mch -0.02%
coreclr_tests.run.linux.arm64.checked.mch -0.02%
libraries.crossgen2.linux.arm64.checked.mch -0.01%
benchmarks.run_tiered.linux.arm64.checked.mch -0.02%
benchmarks.run_pgo.linux.arm64.checked.mch -0.03%
benchmarks.run.linux.arm64.checked.mch -0.01%
FullOpts (-0.01% to -0.00%)
Collection PDIFF
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch -0.01%
libraries_tests.run.linux.arm64.Release.mch -0.01%
realworld.run.linux.arm64.checked.mch -0.01%
libraries.pmi.linux.arm64.checked.mch -0.01%
coreclr_tests.run.linux.arm64.checked.mch -0.01%
libraries.crossgen2.linux.arm64.checked.mch -0.01%
benchmarks.run_pgo.linux.arm64.checked.mch -0.01%
benchmarks.run.linux.arm64.checked.mch -0.01%

Details here


@TIHan TIHan merged commit c772489 into dotnet:main Feb 5, 2024
126 of 129 checks passed
@TIHan TIHan deleted the arm64_sve_format_group4 branch February 5, 2024 22:17
@ryujit-bot
Copy link

Diff results for #97739

Throughput diffs

Throughput diffs for linux/arm64 ran on linux/x64

Overall (-0.01% to -0.00%)
Collection PDIFF
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch -0.01%
libraries_tests.run.linux.arm64.Release.mch -0.01%
realworld.run.linux.arm64.checked.mch -0.01%
libraries.pmi.linux.arm64.checked.mch -0.01%
coreclr_tests.run.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_pgo.linux.arm64.checked.mch -0.01%
benchmarks.run.linux.arm64.checked.mch -0.01%
MinOpts (-0.06% to -0.01%)
Collection PDIFF
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch -0.03%
smoke_tests.nativeaot.linux.arm64.checked.mch -0.01%
libraries_tests.run.linux.arm64.Release.mch -0.03%
realworld.run.linux.arm64.checked.mch -0.06%
libraries.pmi.linux.arm64.checked.mch -0.02%
coreclr_tests.run.linux.arm64.checked.mch -0.02%
libraries.crossgen2.linux.arm64.checked.mch -0.01%
benchmarks.run_tiered.linux.arm64.checked.mch -0.02%
benchmarks.run_pgo.linux.arm64.checked.mch -0.03%
benchmarks.run.linux.arm64.checked.mch -0.01%
FullOpts (-0.01% to -0.00%)
Collection PDIFF
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch -0.01%
libraries_tests.run.linux.arm64.Release.mch -0.01%
realworld.run.linux.arm64.checked.mch -0.01%
libraries.pmi.linux.arm64.checked.mch -0.01%
coreclr_tests.run.linux.arm64.checked.mch -0.01%
libraries.crossgen2.linux.arm64.checked.mch -0.01%
benchmarks.run_pgo.linux.arm64.checked.mch -0.01%
benchmarks.run.linux.arm64.checked.mch -0.01%

Details here


@github-actions github-actions bot locked and limited conversation to collaborators Mar 7, 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