-
Notifications
You must be signed in to change notification settings - Fork 2.7k
Conversation
17ec269
to
a1e37ba
Compare
x64 jit-diff fx:
x86 jit-diff fx:
Most of the diffs look like: movsx eax, al
- cmp al, 38
+ cmp eax, 38
ja SHORT G_M33493_IG08 The 18 byte regression from EventSource:GetHelperCallFirstArg has to do with register allocation choices. While unrelated to this it looks kind of interesting so here's a full diff: https://gist.github.com/mikedn/15e61328a8fe0812268125af04fa2b89 |
a1e37ba
to
a8c750c
Compare
a8c750c
to
d93735c
Compare
@dotnet-bot test Tizen armel Cross Debug Build |
It's probably worth pointing out that on x64 this bug results in silent bad code generation. For example the JIT generated: 4883F802 cmp rax, 2
7748 ja SHORT G_M55888_IG08
488D0D65000000 lea rcx, [reloc @RWD00]
8B0C81 mov ecx, dword ptr [rcx+4*rax] instead of the correct: 83F802 cmp eax, 2
774A ja SHORT G_M55888_IG08
8BC0 mov eax, eax
488D0D64000000 lea rcx, [reloc @RWD00]
8B0C81 mov ecx, dword ptr [rcx+4*rax] But it's unlikely to hit this in practice, at least in C# where this pattern occurs when switching on longs and the C# compiler adds its own long compare before the switch: G_M55888_IG02:
488BC1 mov rax, rcx
4883F802 cmp rax, 2
774E ja SHORT G_M55888_IG08
G_M55888_IG03:
; yeah, it's wrong if the upper 32 bits aren't 0 but that will never happen due to the above check
4883F802 cmp rax, 2
7748 ja SHORT G_M55888_IG08
488D0D65000000 lea rcx, [reloc @RWD00]
8B0C81 mov ecx, dword ptr [rcx+4*rax] |
@dotnet-bot test Ubuntu x64 corefx_baseline Just make sure this PR fixes the CI failure... |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM, thanks for fixing this.
Fixes #13486