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

Scalar/Packed conversions for floating point to integer #97529

Merged
merged 82 commits into from Apr 5, 2024

Conversation

khushal1996
Copy link
Contributor

@khushal1996 khushal1996 commented Jan 26, 2024

  • This PR gives saturating behavior to floating point to integer conversions

This PR covers the following cases -

Screenshot 2024-01-25 173814

Following is the overview of what all has been optimized -->
In the image below -
Helper - The conversion defaults to C++ helper function
Optimized - The conversion is optimized using combination of conversion instruction and other instructions to mimic saturation behavior.
Semi-Optimized - Fallback to using the optimized scalar version.
Capture

Case: Double to Ulong scalar

Test code

public class Program
{
    [MethodImplAttribute(MethodImplOptions.NoInlining)]
    public static ulong DoubleToUlong(double val)
    {
        return (ulong)val;
    }

    public static void Main(string[] args)
    {
        Console.WriteLine(DoubleToUlong(14.5f));
    }
}

AVX512

Before

; Assembly listing for method Program:DoubleToUlong(double):ulong (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Windows
; FullOpts code
; optimized code
; rsp based frame
; partially interruptible
; No PGO data

G_M000_IG01:                ;; offset=0x0000
       4883EC28             sub      rsp, 40
       C5F877               vzeroupper 
 
G_M000_IG02:                ;; offset=0x0007
       E89436C75F           call     CORINFO_HELP_DBL2ULNG
       90                   nop      
 
G_M000_IG03:                ;; offset=0x000D
       4883C428             add      rsp, 40
       C3                   ret      
 
; Total bytes of code 18

After

; Emitting BLENDED_CODE for X64 with AVX512 - Windows
; FullOpts code
; optimized code
; rsp based frame
; partially interruptible
; No PGO data

G_M000_IG01:                ;; offset=0x0000
       C5F877               vzeroupper 
 
G_M000_IG02:                ;; offset=0x0003
       62F3FD0855051200000000 vfixupimmsd xmm0, xmm0, xmmword ptr [reloc @RWD00], 0
       62F1FF0878C0         vcvttsd2usi  rax, xmm0
 
G_M000_IG03:                ;; offset=0x0014
       C3                   ret      
 
RWD00  	dq	0000000008000088h, 0000000000000000h

; Total bytes of code 21

Non-AVX512

NO CHANGE

Case: Double to Ulong vector

Test code

public class Program
{
    [MethodImplAttribute(MethodImplOptions.NoInlining)]
    public static Vector128<ulong> DoubleToUlong128(Vector128<double> val)
    {
        return Vector128.ConvertToUInt64(val);
    }

    public static void Main(string[] args)
    {
        Console.WriteLine(DoubleToUlong((Vector128.Create((double)ulong.MinValue - 1, (double)123432)));
    }
}

AVX512

Before

; Assembly listing for method Program:DoubleToUlong128(System.Runtime.Intrinsics.Vector128`1[double]):System.Runtime.Intrinsics.Vector128`1[ulong] (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Windows
; FullOpts code
; optimized code
; rsp based frame
; partially interruptible
; No PGO data
; 0 inlinees with PGO data; 8 single block inlinees; 4 inlinees without PGO data

G_M000_IG01:                ;; offset=0x0000
       57                   push     rdi
       56                   push     rsi
       53                   push     rbx
       4883EC50             sub      rsp, 80
       C5F877               vzeroupper 
       488BF1               mov      rsi, rcx
       488BDA               mov      rbx, rdx
 
G_M000_IG02:                ;; offset=0x0010
       488B03               mov      rax, qword ptr [rbx]
       4889442440           mov      qword ptr [rsp+0x40], rax
       C5FB10442440         vmovsd   xmm0, qword ptr [rsp+0x40]
       E80D36C75F           call     CORINFO_HELP_DBL2ULNG
       4889442448           mov      qword ptr [rsp+0x48], rax
       488B7C2448           mov      rdi, qword ptr [rsp+0x48]
       488B4308             mov      rax, qword ptr [rbx+0x08]
       4889442430           mov      qword ptr [rsp+0x30], rax
       C5FB10442430         vmovsd   xmm0, qword ptr [rsp+0x30]
       E8EF35C75F           call     CORINFO_HELP_DBL2ULNG
       4889442438           mov      qword ptr [rsp+0x38], rax
       488B442438           mov      rax, qword ptr [rsp+0x38]
       48897C2420           mov      qword ptr [rsp+0x20], rdi
       4889442428           mov      qword ptr [rsp+0x28], rax
       C5F828442420         vmovaps  xmm0, xmmword ptr [rsp+0x20]
       C5F81106             vmovups  xmmword ptr [rsi], xmm0
       488BC6               mov      rax, rsi
 
G_M000_IG03:                ;; offset=0x0062
       4883C450             add      rsp, 80
       5B                   pop      rbx
       5E                   pop      rsi
       5F                   pop      rdi
       C3                   ret      
 
; Total bytes of code 106

After

; Assembly listing for method Program:DoubleToUlong128(System.Runtime.Intrinsics.Vector128`1[double]):System.Runtime.Intrinsics.Vector128`1[ulong] (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Windows
; FullOpts code
; optimized code
; rsp based frame
; partially interruptible
; No PGO data

G_M000_IG01:                ;; offset=0x0000
       C5F877               vzeroupper 
 
G_M000_IG02:                ;; offset=0x0003
       C5F81002             vmovups  xmm0, xmmword ptr [rdx]
       62F3FD0854050E00000000 vfixupimmpd xmm0, xmm0, xmmword ptr [reloc @RWD00], 0
       62F1FD0878C0         vcvttpd2uqq xmm0, xmm0
       C5F81101             vmovups  xmmword ptr [rcx], xmm0
       488BC1               mov      rax, rcx
 
G_M000_IG03:                ;; offset=0x001F
       C3                   ret      
 
RWD00  	dq	0000000008000088h, 0000000008000088h

; Total bytes of code 32

Non-AVX512

NO CHANGE

Case: Float to Ulong scalar

Test code

public class Program
{
    [MethodImplAttribute(MethodImplOptions.NoInlining)]
    public static ulong FloatToUlong(float val)
    {
        return (ulong)val;
    }

    public static void Main(string[] args)
    {
        Console.WriteLine(FloatToUlong(14.5f));
    }
}

AVX512

Before

; Assembly listing for method Program:FloatToUlong(float):ulong (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Windows
; FullOpts code
; optimized code
; rsp based frame
; partially interruptible
; No PGO data

G_M000_IG01:                ;; offset=0x0000
       4883EC28             sub      rsp, 40
       C5F877               vzeroupper 
 
G_M000_IG02:                ;; offset=0x0007
       C5FA5AC0             vcvtss2sd xmm0, xmm0, xmm0
       E8002BC75F           call     CORINFO_HELP_DBL2ULNG
       90                   nop      
 
G_M000_IG03:                ;; offset=0x0011
       4883C428             add      rsp, 40
       C3                   ret      
 
; Total bytes of code 22

After

; Assembly listing for method Program:FloatToUlong(float):ulong (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Windows
; FullOpts code
; optimized code
; rsp based frame
; partially interruptible
; No PGO data

G_M000_IG01:                ;; offset=0x0000
       C5F877               vzeroupper 
 
G_M000_IG02:                ;; offset=0x0003
       62F37D0855051200000000 vfixupimmss xmm0, xmm0, xmmword ptr [reloc @RWD00], 0
       62F1FE0878C0         vcvttss2usi  rax, xmm0
 
G_M000_IG03:                ;; offset=0x0014
       C3                   ret      
 
RWD00  	dq	0000000008000088h, 0000000000000000h

; Total bytes of code 21

Non-AVX512

NO CHANGES

Case: Double to Long scalar

Test code

public class Program
{
    [MethodImplAttribute(MethodImplOptions.NoInlining)]
    public static long DoubleToLong(double val)
    {
        return (long)val;
    }

    public static void Main(string[] args)
    {
        Console.WriteLine(DoubleToLong(14.5f));
    }
}

AVX512

Before

; Assembly listing for method Program:DoubleToLong(double):long (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Windows
; FullOpts code
; optimized code
; rsp based frame
; partially interruptible
; No PGO data

G_M000_IG01:                ;; offset=0x0000
       C5F877               vzeroupper 
 
G_M000_IG02:                ;; offset=0x0003
       C4E1FB2CC0           vcvttsd2si  rax, xmm0
 
G_M000_IG03:                ;; offset=0x0008
       C3                   ret      
 
; Total bytes of code 9

After

; Assembly listing for method Program:DoubleToLong(double):long (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Windows
; FullOpts code
; optimized code
; rsp based frame
; partially interruptible
; No PGO data

G_M000_IG01:                ;; offset=0x0000
       C5F877               vzeroupper 
 
G_M000_IG02:                ;; offset=0x0003
       62F3FD0855053200000000 vfixupimmsd xmm0, xmm0, xmmword ptr [reloc @RWD00], 0
       C5F9C20D390000000D   vcmppd   xmm1, xmm0, xmmword ptr [reloc @RWD16], 13
       C5F8101541000000     vmovups  xmm2, xmmword ptr [reloc @RWD32]
       C4E1FB2CC0           vcvttsd2si  rax, xmm0
       62F2FD087CC0         vpbroadcastq  xmm0, rax
       62F3ED0825C8CA       vpternlogq xmm1, xmm2, xmm0, -54
       C4E1F97EC8           vmovd    rax, xmm1
 
G_M000_IG03:                ;; offset=0x0036
       C3                   ret      
 
RWD00  	dq	0000000000000088h, 0000000000000000h
RWD16  	dq	43E0000000000000h, 43E0000000000000h
RWD32  	dq	7FFFFFFFFFFFFFFFh, 7FFFFFFFFFFFFFFFh

; Total bytes of code 55

###AVX
Before

; Assembly listing for method Program:DoubleToLong(double):long (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Windows
; FullOpts code
; optimized code
; rsp based frame
; partially interruptible
; No PGO data

G_M000_IG01:                ;; offset=0x0000
 
G_M000_IG02:                ;; offset=0x0000
       C4E1FB2CC0           vcvttsd2si  rax, xmm0
 
G_M000_IG03:                ;; offset=0x0005
       C3                   ret      
 
; Total bytes of code 6

After

; Assembly listing for method Program:DoubleToLong(double):long (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Windows
; FullOpts code
; optimized code
; rsp based frame
; partially interruptible
; No PGO data

G_M000_IG01:                ;; offset=0x0000
 
G_M000_IG02:                ;; offset=0x0000
       C5FB12C0             vmovddup xmm0, xmm0
       C5F9C2C800           vcmppd   xmm1, xmm0, xmm0, 0
       C5F154C0             vandpd   xmm0, xmm1, xmm0
       C5F9C20D2A0000000D   vcmppd   xmm1, xmm0, xmmword ptr [reloc @RWD00], 13
       C4E1FB2CC0           vcvttsd2si  rax, xmm0
       C4E1F96EC0           vmovd    xmm0, rax
       C5F96CC0             vpunpcklqdq xmm0, xmm0, xmm0
       C4E3794C052200000010 vpblendvb xmm0 xmm0, xmmword ptr [reloc @RWD16], xmm1
       C4E1F97EC0           vmovd    rax, xmm0
 
G_M000_IG03:                ;; offset=0x0033
       C3                   ret      
 
RWD00  	dq	43E0000000000000h, 43E0000000000000h
RWD16  	dq	7FFFFFFFFFFFFFFFh, 7FFFFFFFFFFFFFFFh

; Total bytes of code 52

SSE41

Before

; Assembly listing for method Program:DoubleToLong(double):long (FullOpts)
; Emitting BLENDED_CODE for generic X64 - Windows
; FullOpts code
; optimized code
; rsp based frame
; partially interruptible
; No PGO data

G_M000_IG01:                ;; offset=0x0000
 
G_M000_IG02:                ;; offset=0x0000
       F2480F2CC0           cvttsd2si  rax, xmm0
 
G_M000_IG03:                ;; offset=0x0005
       C3                   ret      
 
; Total bytes of code 6

After

 Assembly listing for method Program:DoubleToLong(double):long (FullOpts)
; Emitting BLENDED_CODE for generic X64 - Windows
; FullOpts code
; optimized code
; rsp based frame
; partially interruptible
; No PGO data

G_M000_IG01:                ;; offset=0x0000
 
G_M000_IG02:                ;; offset=0x0000
       F20F12C0             movddup  xmm0, xmm0
       0F28C8               movaps   xmm1, xmm0
       660FC2C800           cmppd    xmm1, xmm0, 0
       660F54C1             andpd    xmm0, xmm1
       0F100D39000000       movups   xmm1, xmmword ptr [reloc @RWD00]
       660FC2C802           cmppd    xmm1, xmm0, 2
       0F10153D000000       movups   xmm2, xmmword ptr [reloc @RWD16]
       F2480F2CC0           cvttsd2si  rax, xmm0
       66480F6EC0           movd     xmm0, rax
       0F28D8               movaps   xmm3, xmm0
       660F6CD8             punpcklqdq xmm3, xmm0
       0F28C1               movaps   xmm0, xmm1
       660F3810DA           pblendvb xmm3, xmm2
       66480F7ED8           movd     rax, xmm3
 
G_M000_IG03:                ;; offset=0x0041
       C3                   ret      
 
RWD00  	dq	43E0000000000000h, 43E0000000000000h
RWD16  	dq	7FFFFFFFFFFFFFFFh, 7FFFFFFFFFFFFFFFh

; Total bytes of code 66

Pre-SSE41

Before

; Assembly listing for method Program:DoubleToLong(double):long (FullOpts)
; Emitting BLENDED_CODE for generic X64 - Windows
; FullOpts code
; optimized code
; rsp based frame
; partially interruptible
; No PGO data

G_M000_IG01:                ;; offset=0x0000
 
G_M000_IG02:                ;; offset=0x0000
       F2480F2CC0           cvttsd2si  rax, xmm0
 
G_M000_IG03:                ;; offset=0x0005
       C3                   ret      
 
; Total bytes of code 6

After

; Assembly listing for method Program:DoubleToLong(double):long (FullOpts)
; Emitting BLENDED_CODE for generic X64 - Windows
; FullOpts code
; optimized code
; rsp based frame
; partially interruptible
; No PGO data

G_M000_IG01:                ;; offset=0x0000
       4883EC28             sub      rsp, 40
 
G_M000_IG02:                ;; offset=0x0004
       E8B708A15F           call     CORINFO_HELP_DBL2LNG
       90                   nop      
 
G_M000_IG03:                ;; offset=0x000A
       4883C428             add      rsp, 40
       C3                   ret      
 
; Total bytes of code 15

Case: Double to Long packed

Test code

public class Program
{
    [MethodImplAttribute(MethodImplOptions.NoInlining)]
    public static Vector128<long> DoubleToLong128(Vector128<double> val)
    {
        return Vector128.ConvertToInt64(val);
    }

    public static void Main(string[] args)
    {
        Console.WriteLine(DoubleToLong128(Vector128.Create((double)123432));
    }
}

AVX512

Before

; Assembly listing for method Program:DoubleToLong128(System.Runtime.Intrinsics.Vector128`1[double]):System.Runtime.Intrinsics.Vector128`1[long] (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Windows
; FullOpts code
; optimized code
; rsp based frame
; partially interruptible
; No PGO data
; 0 inlinees with PGO data; 8 single block inlinees; 4 inlinees without PGO data

G_M000_IG01:                ;; offset=0x0000
       4883EC38             sub      rsp, 56
       C5F877               vzeroupper 
 
G_M000_IG02:                ;; offset=0x0007
       488B02               mov      rax, qword ptr [rdx]
       4889442428           mov      qword ptr [rsp+0x28], rax
       C4E1FB2C442428       vcvttsd2si rax, qword ptr [rsp+0x28]
       4889442430           mov      qword ptr [rsp+0x30], rax
       488B442430           mov      rax, qword ptr [rsp+0x30]
       488B5208             mov      rdx, qword ptr [rdx+0x08]
       4889542418           mov      qword ptr [rsp+0x18], rdx
       C4E1FB2C542418       vcvttsd2si rdx, qword ptr [rsp+0x18]
       4889542420           mov      qword ptr [rsp+0x20], rdx
       488B542420           mov      rdx, qword ptr [rsp+0x20]
       48890424             mov      qword ptr [rsp], rax
       4889542408           mov      qword ptr [rsp+0x08], rdx
       C5F8280424           vmovaps  xmm0, xmmword ptr [rsp]
       C5F81101             vmovups  xmmword ptr [rcx], xmm0
       488BC1               mov      rax, rcx
 
G_M000_IG03:                ;; offset=0x004F
       4883C438             add      rsp, 56
       C3                   ret      
 
; Total bytes of code 84

After

; Assembly listing for method Program:DoubleToLong128(System.Runtime.Intrinsics.Vector128`1[double]):System.Runtime.Intrinsics.Vector128`1[long] (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Windows
; FullOpts code
; optimized code
; rsp based frame
; partially interruptible
; No PGO data

G_M000_IG01:                ;; offset=0x0000
       C5F877               vzeroupper 
 
G_M000_IG02:                ;; offset=0x0003
       C5F81002             vmovups  xmm0, xmmword ptr [rdx]
       62F3FD0854052E00000000 vfixupimmpd xmm0, xmm0, xmmword ptr [reloc @RWD00], 0
       C5F9C20D350000000D   vcmppd   xmm1, xmm0, xmmword ptr [reloc @RWD16], 13
       C5F810153D000000     vmovups  xmm2, xmmword ptr [reloc @RWD32]
       62F1FD087AC0         vcvttpd2qq xmm0, xmm0
       62F3ED0825C8CA       vpternlogq xmm1, xmm2, xmm0, -54
       C5F81109             vmovups  xmmword ptr [rcx], xmm1
       488BC1               mov      rax, rcx
 
G_M000_IG03:                ;; offset=0x0037
       C3                   ret      
 
RWD00  	dq	0000000000000088h, 0000000000000088h
RWD16  	dq	43E0000000000000h, 43E0000000000000h
RWD32  	dq	7FFFFFFFFFFFFFFFh, 7FFFFFFFFFFFFFFFh

; Total bytes of code 56

SSE41

Before

; Assembly listing for method Program:DoubleToLong128(System.Runtime.Intrinsics.Vector128`1[double]):System.Runtime.Intrinsics.Vector128`1[long] (FullOpts)
; Emitting BLENDED_CODE for generic X64 - Windows
; FullOpts code
; optimized code
; rsp based frame
; partially interruptible
; No PGO data
; 0 inlinees with PGO data; 8 single block inlinees; 4 inlinees without PGO data

G_M000_IG01:                ;; offset=0x0000
       4883EC38             sub      rsp, 56
 
G_M000_IG02:                ;; offset=0x0004
       488B02               mov      rax, qword ptr [rdx]
       4889442428           mov      qword ptr [rsp+0x28], rax
       F2480F2C442428       cvttsd2si rax, qword ptr [rsp+0x28]
       4889442430           mov      qword ptr [rsp+0x30], rax
       488B442430           mov      rax, qword ptr [rsp+0x30]
       488B5208             mov      rdx, qword ptr [rdx+0x08]
       4889542418           mov      qword ptr [rsp+0x18], rdx
       F2480F2C542418       cvttsd2si rdx, qword ptr [rsp+0x18]
       4889542420           mov      qword ptr [rsp+0x20], rdx
       488B542420           mov      rdx, qword ptr [rsp+0x20]
       48890424             mov      qword ptr [rsp], rax
       4889542408           mov      qword ptr [rsp+0x08], rdx
       0F280424             movaps   xmm0, xmmword ptr [rsp]
       0F1101               movups   xmmword ptr [rcx], xmm0
       488BC1               mov      rax, rcx
 
G_M000_IG03:                ;; offset=0x004A
       4883C438             add      rsp, 56
       C3                   ret      
 
; Total bytes of code 79

After

; Assembly listing for method Program:DoubleToLong128(System.Runtime.Intrinsics.Vector128`1[double]):System.Runtime.Intrinsics.Vector128`1[long] (FullOpts)
; Emitting BLENDED_CODE for generic X64 - Windows
; FullOpts code
; optimized code
; rsp based frame
; partially interruptible
; No PGO data
; 0 inlinees with PGO data; 8 single block inlinees; 4 inlinees without PGO data

G_M000_IG01:                ;; offset=0x0000
       4883EC38             sub      rsp, 56
 
G_M000_IG02:                ;; offset=0x0004
       488B02               mov      rax, qword ptr [rdx]
       4889442428           mov      qword ptr [rsp+0x28], rax
       F20F12442428         movddup  xmm0, qword ptr [rsp+0x28]
       0F28C8               movaps   xmm1, xmm0
       660FC2C800           cmppd    xmm1, xmm0, 0
       660F54C1             andpd    xmm0, xmm1
       0F100D9B000000       movups   xmm1, xmmword ptr [reloc @RWD00]
       0F28D1               movaps   xmm2, xmm1
       660FC2D002           cmppd    xmm2, xmm0, 2
       0F101D9C000000       movups   xmm3, xmmword ptr [reloc @RWD16]
       F2480F2CC0           cvttsd2si  rax, xmm0
       66480F6EC0           movd     xmm0, rax
       0F28E0               movaps   xmm4, xmm0
       660F6CE0             punpcklqdq xmm4, xmm0
       0F28C2               movaps   xmm0, xmm2
       660F3810E3           pblendvb xmm4, xmm3
       66480F7EE0           movd     rax, xmm4
       4889442430           mov      qword ptr [rsp+0x30], rax
       488B442430           mov      rax, qword ptr [rsp+0x30]
       488B5208             mov      rdx, qword ptr [rdx+0x08]
       4889542418           mov      qword ptr [rsp+0x18], rdx
       F20F12442418         movddup  xmm0, qword ptr [rsp+0x18]
       0F28D0               movaps   xmm2, xmm0
       660FC2D000           cmppd    xmm2, xmm0, 0
       660F54C2             andpd    xmm0, xmm2
       660FC2C802           cmppd    xmm1, xmm0, 2
       F2480F2CD0           cvttsd2si  rdx, xmm0
       66480F6EC2           movd     xmm0, rdx
       0F28D0               movaps   xmm2, xmm0
       660F6CD0             punpcklqdq xmm2, xmm0
       0F28C1               movaps   xmm0, xmm1
       660F3810D3           pblendvb xmm2, xmm3
       66480F7ED2           movd     rdx, xmm2
       4889542420           mov      qword ptr [rsp+0x20], rdx
       488B542420           mov      rdx, qword ptr [rsp+0x20]
       48890424             mov      qword ptr [rsp], rax
       4889542408           mov      qword ptr [rsp+0x08], rdx
       0F280424             movaps   xmm0, xmmword ptr [rsp]
       0F1101               movups   xmmword ptr [rcx], xmm0
       488BC1               mov      rax, rcx
 
G_M000_IG03:                ;; offset=0x00B7
       4883C438             add      rsp, 56
       C3                   ret      
 
RWD00  	dq	43E0000000000000h, 43E0000000000000h
RWD16  	dq	7FFFFFFFFFFFFFFFh, 7FFFFFFFFFFFFFFFh

; Total bytes of code 188

Pre-SSE41

Before

; Assembly listing for method Program:DoubleToLong128(System.Runtime.Intrinsics.Vector128`1[double]):System.Runtime.Intrinsics.Vector128`1[long] (FullOpts)
; Emitting BLENDED_CODE for generic X64 - Windows
; FullOpts code
; optimized code
; rsp based frame
; partially interruptible
; No PGO data
; 0 inlinees with PGO data; 8 single block inlinees; 4 inlinees without PGO data

G_M000_IG01:                ;; offset=0x0000
       4883EC38             sub      rsp, 56
 
G_M000_IG02:                ;; offset=0x0004
       488B02               mov      rax, qword ptr [rdx]
       4889442428           mov      qword ptr [rsp+0x28], rax
       F2480F2C442428       cvttsd2si rax, qword ptr [rsp+0x28]
       4889442430           mov      qword ptr [rsp+0x30], rax
       488B442430           mov      rax, qword ptr [rsp+0x30]
       488B5208             mov      rdx, qword ptr [rdx+0x08]
       4889542418           mov      qword ptr [rsp+0x18], rdx
       F2480F2C542418       cvttsd2si rdx, qword ptr [rsp+0x18]
       4889542420           mov      qword ptr [rsp+0x20], rdx
       488B542420           mov      rdx, qword ptr [rsp+0x20]
       48890424             mov      qword ptr [rsp], rax
       4889542408           mov      qword ptr [rsp+0x08], rdx
       0F280424             movaps   xmm0, xmmword ptr [rsp]
       0F1101               movups   xmmword ptr [rcx], xmm0
       488BC1               mov      rax, rcx
 
G_M000_IG03:                ;; offset=0x004A
       4883C438             add      rsp, 56
       C3                   ret      
 
; Total bytes of code 79

After

; Assembly listing for method Program:DoubleToLong128(System.Runtime.Intrinsics.Vector128`1[double]):System.Runtime.Intrinsics.Vector128`1[long] (FullOpts)
; Emitting BLENDED_CODE for generic X64 - Windows
; FullOpts code
; optimized code
; rsp based frame
; partially interruptible
; No PGO data
; 0 inlinees with PGO data; 8 single block inlinees; 4 inlinees without PGO data

G_M000_IG01:                ;; offset=0x0000
       57                   push     rdi
       56                   push     rsi
       53                   push     rbx
       4883EC50             sub      rsp, 80
       488BF1               mov      rsi, rcx
       488BDA               mov      rbx, rdx
 
G_M000_IG02:                ;; offset=0x000D
       488B03               mov      rax, qword ptr [rbx]
       4889442440           mov      qword ptr [rsp+0x40], rax
       F20F10442440         movsd    xmm0, qword ptr [rsp+0x40]
       E8F081C95F           call     CORINFO_HELP_DBL2LNG
       4889442448           mov      qword ptr [rsp+0x48], rax
       488B7C2448           mov      rdi, qword ptr [rsp+0x48]
       488B4308             mov      rax, qword ptr [rbx+0x08]
       4889442430           mov      qword ptr [rsp+0x30], rax
       F20F10442430         movsd    xmm0, qword ptr [rsp+0x30]
       E8D281C95F           call     CORINFO_HELP_DBL2LNG
       4889442438           mov      qword ptr [rsp+0x38], rax
       488B442438           mov      rax, qword ptr [rsp+0x38]
       48897C2420           mov      qword ptr [rsp+0x20], rdi
       4889442428           mov      qword ptr [rsp+0x28], rax
       0F28442420           movaps   xmm0, xmmword ptr [rsp+0x20]
       0F1106               movups   xmmword ptr [rsi], xmm0
       488BC6               mov      rax, rsi
 
G_M000_IG03:                ;; offset=0x005D
       4883C450             add      rsp, 80
       5B                   pop      rbx
       5E                   pop      rsi
       5F                   pop      rdi
       C3                   ret      
 
; Total bytes of code 101

Case: float to Long scalar

Test code

public class Program
{
    [MethodImplAttribute(MethodImplOptions.NoInlining)]
    public static long FloatToLong(float val)
    {
        return (long)val;
    }

    public static void Main(string[] args)
    {
        onsole.WriteLine(FloatToLong(123432));
    }
}

AVX512

Before

; Assembly listing for method Program:FloatToLong(float):long (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Windows
; FullOpts code
; optimized code
; rsp based frame
; partially interruptible
; No PGO data

G_M000_IG01:                ;; offset=0x0000
       C5F877               vzeroupper 
 
G_M000_IG02:                ;; offset=0x0003
       C4E1FA2CC0           vcvttss2si  rax, xmm0
 
G_M000_IG03:                ;; offset=0x0008
       C3                   ret      
 
; Total bytes of code 9

After

; Assembly listing for method Program:FloatToLong(float):long (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Windows
; FullOpts code
; optimized code
; rsp based frame
; partially interruptible
; No PGO data

G_M000_IG01:                ;; offset=0x0000
       C5F877               vzeroupper 
 
G_M000_IG02:                ;; offset=0x0003
       62F37D0855053200000000 vfixupimmss xmm0, xmm0, xmmword ptr [reloc @RWD00], 0
       C5F8C20D390000000D   vcmpps   xmm1, xmm0, xmmword ptr [reloc @RWD16], 13
       C5F8101541000000     vmovups  xmm2, xmmword ptr [reloc @RWD32]
       C4E1FA2CC0           vcvttss2si  rax, xmm0
       62F2FD087CC0         vpbroadcastq  xmm0, rax
       62F3ED0825C8CA       vpternlogq xmm1, xmm2, xmm0, -54
       C4E1F97EC8           vmovd    rax, xmm1
 
G_M000_IG03:                ;; offset=0x0036
       C3                   ret      
 
RWD00  	dq	0000000000000088h, 0000000000000000h
RWD16  	dq	5F0000005F000000h, 5F0000005F000000h
RWD32  	dq	7FFFFFFFFFFFFFFFh, 7FFFFFFFFFFFFFFFh

AVX

Before

; Assembly listing for method Program:FloatToLong(float):long (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Windows
; FullOpts code
; optimized code
; rsp based frame
; partially interruptible
; No PGO data

G_M000_IG01:                ;; offset=0x0000
 
G_M000_IG02:                ;; offset=0x0000
       C4E1FA2CC0           vcvttss2si  rax, xmm0
 
G_M000_IG03:                ;; offset=0x0005
       C3                   ret      
 
; Total bytes of code 6

After

; Assembly listing for method Program:FloatToLong(float):long (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Windows
; FullOpts code
; optimized code
; rsp based frame
; partially interruptible
; No PGO data

G_M000_IG01:                ;; offset=0x0000
 
G_M000_IG02:                ;; offset=0x0000
       C5FA5AC0             vcvtss2sd xmm0, xmm0, xmm0
       C5FB12C0             vmovddup xmm0, xmm0
       C5F9C2C800           vcmppd   xmm1, xmm0, xmm0, 0
       C5F154C0             vandpd   xmm0, xmm1, xmm0
       C5F9C20D260000000D   vcmppd   xmm1, xmm0, xmmword ptr [reloc @RWD00], 13
       C4E1FB2CC0           vcvttsd2si  rax, xmm0
       C4E1F96EC0           vmovd    xmm0, rax
       C5F96CC0             vpunpcklqdq xmm0, xmm0, xmm0
       C4E3794C051E00000010 vpblendvb xmm0 xmm0, xmmword ptr [reloc @RWD16], xmm1
       C4E1F97EC0           vmovd    rax, xmm0
 
G_M000_IG03:                ;; offset=0x0037
       C3                   ret      
 
RWD00  	dq	43E0000000000000h, 43E0000000000000h
RWD16  	dq	7FFFFFFFFFFFFFFFh, 7FFFFFFFFFFFFFFFh

; Total bytes of code 56

SSE41

Before

; Assembly listing for method Program:FloatToLong(float):long (FullOpts)
; Emitting BLENDED_CODE for generic X64 - Windows
; FullOpts code
; optimized code
; rsp based frame
; partially interruptible
; No PGO data

G_M000_IG01:                ;; offset=0x0000
 
G_M000_IG02:                ;; offset=0x0000
       F3480F2CC0           cvttss2si  rax, xmm0
 
G_M000_IG03:                ;; offset=0x0005
       C3                   ret      
 
; Total bytes of code 6

After

; Assembly listing for method Program:FloatToLong(float):long (FullOpts)
; Emitting BLENDED_CODE for generic X64 - Windows
; FullOpts code
; optimized code
; rsp based frame
; partially interruptible
; No PGO data

G_M000_IG01:                ;; offset=0x0000
 
G_M000_IG02:                ;; offset=0x0000
       F30F5AC0             cvtss2sd xmm0, xmm0
       F20F12C0             movddup  xmm0, xmm0
       0F28C8               movaps   xmm1, xmm0
       660FC2C800           cmppd    xmm1, xmm0, 0
       660F54C1             andpd    xmm0, xmm1
       0F100D35000000       movups   xmm1, xmmword ptr [reloc @RWD00]
       660FC2C802           cmppd    xmm1, xmm0, 2
       0F101539000000       movups   xmm2, xmmword ptr [reloc @RWD16]
       F2480F2CC0           cvttsd2si  rax, xmm0
       66480F6EC0           movd     xmm0, rax
       0F28D8               movaps   xmm3, xmm0
       660F6CD8             punpcklqdq xmm3, xmm0
       0F28C1               movaps   xmm0, xmm1
       660F3810DA           pblendvb xmm3, xmm2
       66480F7ED8           movd     rax, xmm3
 
G_M000_IG03:                ;; offset=0x0045
       C3                   ret      
 
RWD00  	dq	43E0000000000000h, 43E0000000000000h
RWD16  	dq	7FFFFFFFFFFFFFFFh, 7FFFFFFFFFFFFFFFh

; Total bytes of code 70

Pre-SSE41

Before

; Assembly listing for method Program:FloatToLong(float):long (FullOpts)
; Emitting BLENDED_CODE for generic X64 - Windows
; FullOpts code
; optimized code
; rsp based frame
; partially interruptible
; No PGO data

G_M000_IG01:                ;; offset=0x0000
 
G_M000_IG02:                ;; offset=0x0000
       F3480F2CC0           cvttss2si  rax, xmm0
 
G_M000_IG03:                ;; offset=0x0005
       C3                   ret      
 
; Total bytes of code 6

After

; Assembly listing for method Program:FloatToLong(float):long (FullOpts)
; Emitting BLENDED_CODE for generic X64 - Windows
; FullOpts code
; optimized code
; rsp based frame
; partially interruptible
; No PGO data

G_M000_IG01:                ;; offset=0x0000
       4883EC28             sub      rsp, 40
 
G_M000_IG02:                ;; offset=0x0004
       F30F5AC0             cvtss2sd xmm0, xmm0
       E8B377C95F           call     CORINFO_HELP_DBL2LNG
       90                   nop      
 
G_M000_IG03:                ;; offset=0x000E
       4883C428             add      rsp, 40
       C3                   ret      
 
; Total bytes of code 19

Case: double to uint scalar

Test code

public class Program
{
    [MethodImplAttribute(MethodImplOptions.NoInlining)]
    public static uint DoubleToUint(double val)
    {
        return (uint)val;
    }

    public static void Main(string[] args)
    {
        Console.WriteLine("14.5f: " + DoubleToUint(14.5f));
    }
}

AVX512

Before

; Assembly listing for method Program:DoubleToUint(double):uint (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Windows
; FullOpts code
; optimized code
; rsp based frame
; partially interruptible
; No PGO data

G_M000_IG01:                ;; offset=0x0000
       C5F877               vzeroupper 
 
G_M000_IG02:                ;; offset=0x0003
       C4E1FB2CC0           vcvttsd2si  rax, xmm0
 
G_M000_IG03:                ;; offset=0x0008
       C3                   ret      
 
; Total bytes of code 9

After

; Assembly listing for method Program:DoubleToUint(double):uint (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Windows
; FullOpts code
; optimized code
; rsp based frame
; partially interruptible
; No PGO data

G_M000_IG01:                ;; offset=0x0000
       C5F877               vzeroupper 
 
G_M000_IG02:                ;; offset=0x0003
       62F3FD0855051200000000 vfixupimmsd xmm0, xmm0, xmmword ptr [reloc @RWD00], 0
       62F17F0878C0         vcvttsd2usi  eax, xmm0
 
G_M000_IG03:                ;; offset=0x0014
       C3                   ret      
 
RWD00  	dq	0000000008000088h, 0000000000000000h

; Total bytes of code 21

AVX

Before

; Assembly listing for method Program:DoubleToUint(double):uint (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Windows
; FullOpts code
; optimized code
; rsp based frame
; partially interruptible
; No PGO data

G_M000_IG01:                ;; offset=0x0000
 
G_M000_IG02:                ;; offset=0x0000
       C4E1FB2CC0           vcvttsd2si  rax, xmm0
 
G_M000_IG03:                ;; offset=0x0005
       C3                   ret      
 
; Total bytes of code 6

After

; Assembly listing for method Program:DoubleToUint(double):uint (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Windows
; FullOpts code
; optimized code
; rsp based frame
; partially interruptible
; No PGO data

G_M000_IG01:                ;; offset=0x0000
 
G_M000_IG02:                ;; offset=0x0000
       C5FB12C0             vmovddup xmm0, xmm0
       C5F9C2C800           vcmppd   xmm1, xmm0, xmm0, 0
       C5E857D2             vxorps   xmm2, xmm2, xmm2
       C5F9C2D20D           vcmppd   xmm2, xmm0, xmm2, 13
       C5E954C9             vandpd   xmm1, xmm2, xmm1
       C5F154C0             vandpd   xmm0, xmm1, xmm0
       C5F8100D1E000000     vmovups  xmm1, xmmword ptr [reloc @RWD00]
       C5F9C2D10D           vcmppd   xmm2, xmm0, xmm1, 13
       C4E3794BC120         vblendvpd xmm0 xmm0, xmm1, xmm2
       C4E1FB2CC0           vcvttsd2si  rax, xmm0
 
G_M000_IG03:                ;; offset=0x0032
       C3                   ret      
 
RWD00  	dq	41EFFFFFFFE00000h, 41EFFFFFFFE00000h

; Total bytes of code 51

SSE41

Before

; Assembly listing for method Program:DoubleToUint(double):uint (FullOpts)
; Emitting BLENDED_CODE for generic X64 - Windows
; FullOpts code
; optimized code
; rsp based frame
; partially interruptible
; No PGO data

G_M000_IG01:                ;; offset=0x0000
 
G_M000_IG02:                ;; offset=0x0000
       F2480F2CC0           cvttsd2si  rax, xmm0
 
G_M000_IG03:                ;; offset=0x0005
       C3                   ret      
 
; Total bytes of code 6

After

; Assembly listing for method Program:DoubleToUint(double):uint (FullOpts)
; Emitting BLENDED_CODE for generic X64 - Windows
; FullOpts code
; optimized code
; rsp based frame
; partially interruptible
; No PGO data

G_M000_IG01:                ;; offset=0x0000
 
G_M000_IG02:                ;; offset=0x0000
       F20F12C0             movddup  xmm0, xmm0
       0F28C8               movaps   xmm1, xmm0
       660FC2C800           cmppd    xmm1, xmm0, 0
       0F57D2               xorps    xmm2, xmm2
       660FC2D002           cmppd    xmm2, xmm0, 2
       660F54CA             andpd    xmm1, xmm2
       660F54C8             andpd    xmm1, xmm0
       0F10151D000000       movups   xmm2, xmmword ptr [reloc @RWD00]
       0F28C2               movaps   xmm0, xmm2
       660FC2C102           cmppd    xmm0, xmm1, 2
       660F3815CA           blendvpd xmm1, xmm2
       F2480F2CC1           cvttsd2si  rax, xmm1
 
G_M000_IG03:                ;; offset=0x0035
       C3                   ret      
 
RWD00  	dq	41EFFFFFFFE00000h, 41EFFFFFFFE00000h

; Total bytes of code 54

Pre-SSE41

Before

; Assembly listing for method Program:DoubleToUint(double):uint (FullOpts)
; Emitting BLENDED_CODE for generic X64 - Windows
; FullOpts code
; optimized code
; rsp based frame
; partially interruptible
; No PGO data

G_M000_IG01:                ;; offset=0x0000
 
G_M000_IG02:                ;; offset=0x0000
       F2480F2CC0           cvttsd2si  rax, xmm0
 
G_M000_IG03:                ;; offset=0x0005
       C3                   ret      
 
; Total bytes of code 6

After

; Assembly listing for method Program:DoubleToUint(double):uint (FullOpts)
; Emitting BLENDED_CODE for generic X64 - Windows
; FullOpts code
; optimized code
; rsp based frame
; partially interruptible
; No PGO data

G_M000_IG01:                ;; offset=0x0000
       4883EC28             sub      rsp, 40
 
G_M000_IG02:                ;; offset=0x0004
       E8A7D1B45F           call     CORINFO_HELP_DBL2UINT
       90                   nop      
 
G_M000_IG03:                ;; offset=0x000A
       4883C428             add      rsp, 40
       C3                   ret      
 
; Total bytes of code 15

Case: float to uint scalar

Test code

public class Program
{
    [MethodImplAttribute(MethodImplOptions.NoInlining)]
    public static uint FloatToUint(float val)
    {
        return (uint)val;
    }

    public static void Main(string[] args)
    {
        Console.WriteLine("14.5f: " + FloatToUint(14.5f));
    }
}

AVX512

Before

; Assembly listing for method Program:FloatToUint(float):uint (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Windows
; FullOpts code
; optimized code
; rsp based frame
; partially interruptible
; No PGO data

G_M000_IG01:                ;; offset=0x0000
       C5F877               vzeroupper 
 
G_M000_IG02:                ;; offset=0x0003
       C4E1FA2CC0           vcvttss2si  rax, xmm0
 
G_M000_IG03:                ;; offset=0x0008
       C3                   ret      
 
; Total bytes of code 9

After

; Assembly listing for method Program:FloatToUint(float):uint (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Windows
; FullOpts code
; optimized code
; rsp based frame
; partially interruptible
; No PGO data

G_M000_IG01:                ;; offset=0x0000
       C5F877               vzeroupper 
 
G_M000_IG02:                ;; offset=0x0003
       62F37D0855051200000000 vfixupimmss xmm0, xmm0, xmmword ptr [reloc @RWD00], 0
       62F17E0878C0         vcvttss2usi  eax, xmm0
 
G_M000_IG03:                ;; offset=0x0014
       C3                   ret      
 
RWD00  	dq	0000000008000088h, 0000000000000000h

; Total bytes of code 21

AVX

Before

; Assembly listing for method Program:FloatToUint(float):uint (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Windows
; FullOpts code
; optimized code
; rsp based frame
; partially interruptible
; No PGO data

G_M000_IG01:                ;; offset=0x0000
 
G_M000_IG02:                ;; offset=0x0000
       C4E1FA2CC0           vcvttss2si  rax, xmm0
 
G_M000_IG03:                ;; offset=0x0005
       C3                   ret      
 
; Total bytes of code 6

After

; Assembly listing for method Program:FloatToUint(float):uint (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Windows
; FullOpts code
; optimized code
; rsp based frame
; partially interruptible
; No PGO data

G_M000_IG01:                ;; offset=0x0000
 
G_M000_IG02:                ;; offset=0x0000
       C5FA5AC0             vcvtss2sd xmm0, xmm0, xmm0
       C5FB12C0             vmovddup xmm0, xmm0
       C5F9C2C800           vcmppd   xmm1, xmm0, xmm0, 0
       C5E857D2             vxorps   xmm2, xmm2, xmm2
       C5F9C2D20D           vcmppd   xmm2, xmm0, xmm2, 13
       C5E954C9             vandpd   xmm1, xmm2, xmm1
       C5F154C0             vandpd   xmm0, xmm1, xmm0
       C5F8100D1A000000     vmovups  xmm1, xmmword ptr [reloc @RWD00]
       C5F9C2D10D           vcmppd   xmm2, xmm0, xmm1, 13
       C4E3794BC120         vblendvpd xmm0 xmm0, xmm1, xmm2
       C4E1FB2CC0           vcvttsd2si  rax, xmm0
 
G_M000_IG03:                ;; offset=0x0036
       C3                   ret      
 
RWD00  	dq	41EFFFFFFFE00000h, 41EFFFFFFFE00000h

; Total bytes of code 55

SSE41

Before

; Assembly listing for method Program:FloatToUint(float):uint (FullOpts)
; Emitting BLENDED_CODE for generic X64 - Windows
; FullOpts code
; optimized code
; rsp based frame
; partially interruptible
; No PGO data

G_M000_IG01:                ;; offset=0x0000
 
G_M000_IG02:                ;; offset=0x0000
       F3480F2CC0           cvttss2si  rax, xmm0
 
G_M000_IG03:                ;; offset=0x0005
       C3                   ret      
 
; Total bytes of code 6

After

; Assembly listing for method Program:FloatToUint(float):uint (FullOpts)
; Emitting BLENDED_CODE for generic X64 - Windows
; FullOpts code
; optimized code
; rsp based frame
; partially interruptible
; No PGO data

G_M000_IG01:                ;; offset=0x0000
 
G_M000_IG02:                ;; offset=0x0000
       F30F5AC0             cvtss2sd xmm0, xmm0
       F20F12C0             movddup  xmm0, xmm0
       0F28C8               movaps   xmm1, xmm0
       660FC2C800           cmppd    xmm1, xmm0, 0
       0F57D2               xorps    xmm2, xmm2
       660FC2D002           cmppd    xmm2, xmm0, 2
       660F54CA             andpd    xmm1, xmm2
       660F54C8             andpd    xmm1, xmm0
       0F101519000000       movups   xmm2, xmmword ptr [reloc @RWD00]
       0F28C2               movaps   xmm0, xmm2
       660FC2C102           cmppd    xmm0, xmm1, 2
       660F3815CA           blendvpd xmm1, xmm2
       F2480F2CC1           cvttsd2si  rax, xmm1
 
G_M000_IG03:                ;; offset=0x0039
       C3                   ret      
 
RWD00  	dq	41EFFFFFFFE00000h, 41EFFFFFFFE00000h

; Total bytes of code 58

Pre-SSE41

Before

; Assembly listing for method Program:FloatToUint(float):uint (FullOpts)
; Emitting BLENDED_CODE for generic X64 - Windows
; FullOpts code
; optimized code
; rsp based frame
; partially interruptible
; No PGO data

G_M000_IG01:                ;; offset=0x0000
 
G_M000_IG02:                ;; offset=0x0000
       F3480F2CC0           cvttss2si  rax, xmm0
 
G_M000_IG03:                ;; offset=0x0005
       C3                   ret      
 
; Total bytes of code 6

After

; Assembly listing for method Program:FloatToUint(float):uint (FullOpts)
; Emitting BLENDED_CODE for generic X64 - Windows
; FullOpts code
; optimized code
; rsp based frame
; partially interruptible
; No PGO data

G_M000_IG01:                ;; offset=0x0000
       4883EC28             sub      rsp, 40
 
G_M000_IG02:                ;; offset=0x0004
       E867CCB75F           call     CORINFO_HELP_FLT2UINT
       90                   nop      
 
G_M000_IG03:                ;; offset=0x000A
       4883C428             add      rsp, 40
       C3                   ret      
 
; Total bytes of code 15

Case: float to uint packed

Test code

public class Program
{
    [MethodImplAttribute(MethodImplOptions.NoInlining)]
    public static Vector128<uint> FloatToUint128(Vector128<float> val)
    {
        return Vector128.ConvertToUInt32(val); ;
    }

    public static void Main(string[] args)
    {
        Console.WriteLine(FloatToUint128(Vector128.Create(14.5f)));
    }
}

AVX512

Before

; Assembly listing for method Program:FloatToUint128(System.Runtime.Intrinsics.Vector128`1[float]):System.Runtime.Intrinsics.Vector128`1[uint] (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Windows
; FullOpts code
; optimized code
; rsp based frame
; partially interruptible
; No PGO data
; 0 inlinees with PGO data; 8 single block inlinees; 4 inlinees without PGO data

G_M000_IG01:                ;; offset=0x0000
       4883EC38             sub      rsp, 56
       C5F877               vzeroupper 
 
G_M000_IG02:                ;; offset=0x0007
       488B02               mov      rax, qword ptr [rdx]
       4889442428           mov      qword ptr [rsp+0x28], rax
       C4E1FA2C442428       vcvttss2si rax, dword ptr [rsp+0x28]
       89442430             mov      dword ptr [rsp+0x30], eax
       C4E1FA2C44242C       vcvttss2si rax, dword ptr [rsp+0x2C]
       89442434             mov      dword ptr [rsp+0x34], eax
       488B442430           mov      rax, qword ptr [rsp+0x30]
       488B5208             mov      rdx, qword ptr [rdx+0x08]
       4889542418           mov      qword ptr [rsp+0x18], rdx
       C4E1FA2C542418       vcvttss2si rdx, dword ptr [rsp+0x18]
       89542420             mov      dword ptr [rsp+0x20], edx
       C4E1FA2C54241C       vcvttss2si rdx, dword ptr [rsp+0x1C]
       89542424             mov      dword ptr [rsp+0x24], edx
       488B542420           mov      rdx, qword ptr [rsp+0x20]
       48890424             mov      qword ptr [rsp], rax
       4889542408           mov      qword ptr [rsp+0x08], rdx
       C5F8280424           vmovaps  xmm0, xmmword ptr [rsp]
       C5F81101             vmovups  xmmword ptr [rcx], xmm0
       488BC1               mov      rax, rcx
 
G_M000_IG03:                ;; offset=0x0063
       4883C438             add      rsp, 56
       C3                   ret      
 
; Total bytes of code 104

After

; Assembly listing for method Program:FloatToUint128(System.Runtime.Intrinsics.Vector128`1[float]):System.Runtime.Intrinsics.Vector128`1[uint] (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Windows
; FullOpts code
; optimized code
; rsp based frame
; partially interruptible
; No PGO data

G_M000_IG01:                ;; offset=0x0000
       C5F877               vzeroupper 
 
G_M000_IG02:                ;; offset=0x0003
       C5F81002             vmovups  xmm0, xmmword ptr [rdx]
       62F37D0854050E00000000 vfixupimmps xmm0, xmm0, xmmword ptr [reloc @RWD00], 0
       62F17C0878C0         vcvttps2udq xmm0, xmm0
       C5F81101             vmovups  xmmword ptr [rcx], xmm0
       488BC1               mov      rax, rcx
 
G_M000_IG03:                ;; offset=0x001F
       C3                   ret      
 
RWD00  	dq	0800008808000088h, 0800008808000088h

; Total bytes of code 32

SSE41

Before

; Assembly listing for method Program:FloatToUint128(System.Runtime.Intrinsics.Vector128`1[float]):System.Runtime.Intrinsics.Vector128`1[uint] (FullOpts)
; Emitting BLENDED_CODE for generic X64 - Windows
; FullOpts code
; optimized code
; rsp based frame
; partially interruptible
; No PGO data
; 0 inlinees with PGO data; 8 single block inlinees; 4 inlinees without PGO data

G_M000_IG01:                ;; offset=0x0000
       4883EC38             sub      rsp, 56
 
G_M000_IG02:                ;; offset=0x0004
       488B02               mov      rax, qword ptr [rdx]
       4889442428           mov      qword ptr [rsp+0x28], rax
       F3480F2C442428       cvttss2si rax, dword ptr [rsp+0x28]
       89442430             mov      dword ptr [rsp+0x30], eax
       F3480F2C44242C       cvttss2si rax, dword ptr [rsp+0x2C]
       89442434             mov      dword ptr [rsp+0x34], eax
       488B442430           mov      rax, qword ptr [rsp+0x30]
       488B5208             mov      rdx, qword ptr [rdx+0x08]
       4889542418           mov      qword ptr [rsp+0x18], rdx
       F3480F2C542418       cvttss2si rdx, dword ptr [rsp+0x18]
       89542420             mov      dword ptr [rsp+0x20], edx
       F3480F2C54241C       cvttss2si rdx, dword ptr [rsp+0x1C]
       89542424             mov      dword ptr [rsp+0x24], edx
       488B542420           mov      rdx, qword ptr [rsp+0x20]
       48890424             mov      qword ptr [rsp], rax
       4889542408           mov      qword ptr [rsp+0x08], rdx
       0F280424             movaps   xmm0, xmmword ptr [rsp]
       0F1101               movups   xmmword ptr [rcx], xmm0
       488BC1               mov      rax, rcx
 
G_M000_IG03:                ;; offset=0x005E
       4883C438             add      rsp, 56
       C3                   ret      
 
; Total bytes of code 99

After

; Assembly listing for method Program:FloatToUint128(System.Runtime.Intrinsics.Vector128`1[float]):System.Runtime.Intrinsics.Vector128`1[uint] (FullOpts)
; Emitting BLENDED_CODE for generic X64 - Windows
; FullOpts code
; optimized code
; rsp based frame
; partially interruptible
; No PGO data
; 0 inlinees with PGO data; 8 single block inlinees; 4 inlinees without PGO data

G_M000_IG01:                ;; offset=0x0000
       4883EC38             sub      rsp, 56
 
G_M000_IG02:                ;; offset=0x0004
       488B02               mov      rax, qword ptr [rdx]
       4889442428           mov      qword ptr [rsp+0x28], rax
       F30F5A442428         cvtss2sd xmm0, dword ptr [rsp+0x28]
       F20F12C8             movddup  xmm1, xmm0
       0F28C1               movaps   xmm0, xmm1
       660FC2C100           cmppd    xmm0, xmm1, 0
       0F57D2               xorps    xmm2, xmm2
       660FC2D102           cmppd    xmm2, xmm1, 2
       660F54C2             andpd    xmm0, xmm2
       660F54C1             andpd    xmm0, xmm1
       0F1015FB000000       movups   xmm2, xmmword ptr [reloc @RWD00]
       0F28CA               movaps   xmm1, xmm2
       660FC2C802           cmppd    xmm1, xmm0, 2
       0F28D8               movaps   xmm3, xmm0
       0F28C1               movaps   xmm0, xmm1
       660F3815DA           blendvpd xmm3, xmm2
       F2480F2CC3           cvttsd2si  rax, xmm3
       89442430             mov      dword ptr [rsp+0x30], eax
       F30F5A44242C         cvtss2sd xmm0, dword ptr [rsp+0x2C]
       F20F12C8             movddup  xmm1, xmm0
       0F28D9               movaps   xmm3, xmm1
       660FC2D900           cmppd    xmm3, xmm1, 0
       0F57C0               xorps    xmm0, xmm0
       660FC2C102           cmppd    xmm0, xmm1, 2
       660F54D8             andpd    xmm3, xmm0
       660F54D9             andpd    xmm3, xmm1
       0F28C2               movaps   xmm0, xmm2
       660FC2C302           cmppd    xmm0, xmm3, 2
       0F28CB               movaps   xmm1, xmm3
       660F3815CA           blendvpd xmm1, xmm2
       F2480F2CC1           cvttsd2si  rax, xmm1
       89442434             mov      dword ptr [rsp+0x34], eax
       488B442430           mov      rax, qword ptr [rsp+0x30]
       488B5208             mov      rdx, qword ptr [rdx+0x08]
       4889542418           mov      qword ptr [rsp+0x18], rdx
       F30F5A442418         cvtss2sd xmm0, dword ptr [rsp+0x18]
       F20F12C8             movddup  xmm1, xmm0
       0F28C1               movaps   xmm0, xmm1
       660FC2C100           cmppd    xmm0, xmm1, 0
       0F57DB               xorps    xmm3, xmm3
       660FC2D902           cmppd    xmm3, xmm1, 2
       660F54C3             andpd    xmm0, xmm3
       660F54C1             andpd    xmm0, xmm1
       0F28CA               movaps   xmm1, xmm2
       660FC2C802           cmppd    xmm1, xmm0, 2
       0F28D8               movaps   xmm3, xmm0
       0F28C1               movaps   xmm0, xmm1
       660F3815DA           blendvpd xmm3, xmm2
       F2480F2CD3           cvttsd2si  rdx, xmm3
       89542420             mov      dword ptr [rsp+0x20], edx
       F30F5A44241C         cvtss2sd xmm0, dword ptr [rsp+0x1C]
       F20F12C8             movddup  xmm1, xmm0
       0F28D9               movaps   xmm3, xmm1
       660FC2D900           cmppd    xmm3, xmm1, 0
       0F57C0               xorps    xmm0, xmm0
       660FC2C102           cmppd    xmm0, xmm1, 2
       660F54D8             andpd    xmm3, xmm0
       660F54D9             andpd    xmm3, xmm1
       0F28C2               movaps   xmm0, xmm2
       660FC2C302           cmppd    xmm0, xmm3, 2
       0F28CB               movaps   xmm1, xmm3
       660F3815CA           blendvpd xmm1, xmm2
       F2480F2CD1           cvttsd2si  rdx, xmm1
       89542424             mov      dword ptr [rsp+0x24], edx
       488B542420           mov      rdx, qword ptr [rsp+0x20]
       48890424             mov      qword ptr [rsp], rax
       4889542408           mov      qword ptr [rsp+0x08], rdx
       0F280424             movaps   xmm0, xmmword ptr [rsp]
       0F1101               movups   xmmword ptr [rcx], xmm0
       488BC1               mov      rax, rcx
 
G_M000_IG03:                ;; offset=0x012B
       4883C438             add      rsp, 56
       C3                   ret      
 
RWD00  	dq	41EFFFFFFFE00000h, 41EFFFFFFFE00000h

; Total bytes of code 304

Pre-SSE41

Before

; Assembly listing for method Program:FloatToUint128(System.Runtime.Intrinsics.Vector128`1[float]):System.Runtime.Intrinsics.Vector128`1[uint] (FullOpts)
; Emitting BLENDED_CODE for generic X64 - Windows
; FullOpts code
; optimized code
; rsp based frame
; partially interruptible
; No PGO data
; 0 inlinees with PGO data; 8 single block inlinees; 4 inlinees without PGO data

G_M000_IG01:                ;; offset=0x0000
       4883EC38             sub      rsp, 56
 
G_M000_IG02:                ;; offset=0x0004
       488B02               mov      rax, qword ptr [rdx]
       4889442428           mov      qword ptr [rsp+0x28], rax
       F3480F2C442428       cvttss2si rax, dword ptr [rsp+0x28]
       89442430             mov      dword ptr [rsp+0x30], eax
       F3480F2C44242C       cvttss2si rax, dword ptr [rsp+0x2C]
       89442434             mov      dword ptr [rsp+0x34], eax
       488B442430           mov      rax, qword ptr [rsp+0x30]
       488B5208             mov      rdx, qword ptr [rdx+0x08]
       4889542418           mov      qword ptr [rsp+0x18], rdx
       F3480F2C542418       cvttss2si rdx, dword ptr [rsp+0x18]
       89542420             mov      dword ptr [rsp+0x20], edx
       F3480F2C54241C       cvttss2si rdx, dword ptr [rsp+0x1C]
       89542424             mov      dword ptr [rsp+0x24], edx
       488B542420           mov      rdx, qword ptr [rsp+0x20]
       48890424             mov      qword ptr [rsp], rax
       4889542408           mov      qword ptr [rsp+0x08], rdx
       0F280424             movaps   xmm0, xmmword ptr [rsp]
       0F1101               movups   xmmword ptr [rcx], xmm0
       488BC1               mov      rax, rcx
 
G_M000_IG03:                ;; offset=0x005E
       4883C438             add      rsp, 56
       C3                   ret      
 
; Total bytes of code 99

After

; Assembly listing for method Program:FloatToUint128(System.Runtime.Intrinsics.Vector128`1[float]):System.Runtime.Intrinsics.Vector128`1[uint] (FullOpts)
; Emitting BLENDED_CODE for generic X64 - Windows
; FullOpts code
; optimized code
; rsp based frame
; partially interruptible
; No PGO data
; 0 inlinees with PGO data; 8 single block inlinees; 4 inlinees without PGO data

G_M000_IG01:                ;; offset=0x0000
       57                   push     rdi
       56                   push     rsi
       53                   push     rbx
       4883EC50             sub      rsp, 80
       488BF1               mov      rsi, rcx
       488BDA               mov      rbx, rdx
 
G_M000_IG02:                ;; offset=0x000D
       488B03               mov      rax, qword ptr [rbx]
       4889442440           mov      qword ptr [rsp+0x40], rax
       F30F10442440         movss    xmm0, dword ptr [rsp+0x40]
       E820CCB45F           call     CORINFO_HELP_FLT2UINT
       89442448             mov      dword ptr [rsp+0x48], eax
       F30F10442444         movss    xmm0, dword ptr [rsp+0x44]
       E811CCB45F           call     CORINFO_HELP_FLT2UINT
       8944244C             mov      dword ptr [rsp+0x4C], eax
       488B7C2448           mov      rdi, qword ptr [rsp+0x48]
       488B4308             mov      rax, qword ptr [rbx+0x08]
       4889442430           mov      qword ptr [rsp+0x30], rax
       F30F10442430         movss    xmm0, dword ptr [rsp+0x30]
       E8F4CBB45F           call     CORINFO_HELP_FLT2UINT
       89442438             mov      dword ptr [rsp+0x38], eax
       F30F10442434         movss    xmm0, dword ptr [rsp+0x34]
       E8E5CBB45F           call     CORINFO_HELP_FLT2UINT
       8944243C             mov      dword ptr [rsp+0x3C], eax
       488B442438           mov      rax, qword ptr [rsp+0x38]
       48897C2420           mov      qword ptr [rsp+0x20], rdi
       4889442428           mov      qword ptr [rsp+0x28], rax
       0F28442420           movaps   xmm0, xmmword ptr [rsp+0x20]
       0F1106               movups   xmmword ptr [rsi], xmm0
       488BC6               mov      rax, rsi
 
G_M000_IG03:                ;; offset=0x0079
       4883C450             add      rsp, 80
       5B                   pop      rbx
       5E                   pop      rsi
       5F                   pop      rdi
       C3                   ret      
 
; Total bytes of code 129

Case: double to int scalar

Test code

public class Program
{
    [MethodImplAttribute(MethodImplOptions.NoInlining)]
    public static int DoubleToInt(double val)
    {
        return (int)val;
    }

    public static void Main(string[] args)
    {
        Console.WriteLine("-14.5f: " + DoubleToInt(-14.5f));
    }
}

AVX512

Before

; Assembly listing for method Program:DoubleToInt(double):int (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Windows
; FullOpts code
; optimized code
; rsp based frame
; partially interruptible
; No PGO data

G_M000_IG01:                ;; offset=0x0000
       C5F877               vzeroupper 
 
G_M000_IG02:                ;; offset=0x0003
       C5FB2CC0             vcvttsd2si  eax, xmm0
 
G_M000_IG03:                ;; offset=0x0007
       C3                   ret      
 
; Total bytes of code 8

After

; Assembly listing for method Program:DoubleToInt(double):int (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Windows
; FullOpts code
; optimized code
; rsp based frame
; partially interruptible
; No PGO data

G_M000_IG01:                ;; offset=0x0000
       C5F877               vzeroupper 
 
G_M000_IG02:                ;; offset=0x0003
       62F3FD0855053200000000 vfixupimmsd xmm0, xmm0, xmmword ptr [reloc @RWD00], 0
       C5F9C20D390000000D   vcmppd   xmm1, xmm0, xmmword ptr [reloc @RWD16], 13
       C5F8101541000000     vmovups  xmm2, xmmword ptr [reloc @RWD32]
       C5FB2CC0             vcvttsd2si  eax, xmm0
       62F27D087CC0         vpbroadcastd  xmm0, eax
       62F36D0825C8CA       vpternlogd xmm1, xmm2, xmm0, -54
       C5F97EC8             vmovd    eax, xmm1
 
G_M000_IG03:                ;; offset=0x0034
       C3                   ret      
 
RWD00  	dq	0000000000000088h, 0000000000000000h
RWD16  	dq	41DFFFFFFFC00000h, 41DFFFFFFFC00000h
RWD32  	dq	7FFFFFFF7FFFFFFFh, 7FFFFFFF7FFFFFFFh

; Total bytes of code 53

###AVX
Before

; Assembly listing for method Program:DoubleToInt(double):int (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Windows
; FullOpts code
; optimized code
; rsp based frame
; partially interruptible
; No PGO data

G_M000_IG01:                ;; offset=0x0000
 
G_M000_IG02:                ;; offset=0x0000
       C5FB2CC0             vcvttsd2si  eax, xmm0
 
G_M000_IG03:                ;; offset=0x0004
       C3                   ret      
 
; Total bytes of code 5

After

; Assembly listing for method Program:DoubleToInt(double):int (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Windows
; FullOpts code
; optimized code
; rsp based frame
; partially interruptible
; No PGO data

G_M000_IG01:                ;; offset=0x0000
 
G_M000_IG02:                ;; offset=0x0000
       C5FB12C0             vmovddup xmm0, xmm0
       C5F9C2C800           vcmppd   xmm1, xmm0, xmm0, 0
       C5F154C0             vandpd   xmm0, xmm1, xmm0
       C5F9C20D2A0000000D   vcmppd   xmm1, xmm0, xmmword ptr [reloc @RWD00], 13
       C5FB2CC0             vcvttsd2si  eax, xmm0
       C5F96EC0             vmovd    xmm0, eax
       C5F970C000           vpshufd  xmm0, xmm0, 0
       C4E3794C052300000010 vpblendvb xmm0 xmm0, xmmword ptr [reloc @RWD16], xmm1
       C5F97EC0             vmovd    eax, xmm0
 
G_M000_IG03:                ;; offset=0x0031
       C3                   ret      
 
RWD00  	dq	41DFFFFFFFC00000h, 41DFFFFFFFC00000h
RWD16  	dq	7FFFFFFF7FFFFFFFh, 7FFFFFFF7FFFFFFFh

; Total bytes of code 50

SSE41

Before

; Assembly listing for method Program:DoubleToInt(double):int (FullOpts)
; Emitting BLENDED_CODE for generic X64 - Windows
; FullOpts code
; optimized code
; rsp based frame
; partially interruptible
; No PGO data

G_M000_IG01:                ;; offset=0x0000
 
G_M000_IG02:                ;; offset=0x0000
       F20F2CC0             cvttsd2si  eax, xmm0
 
G_M000_IG03:                ;; offset=0x0004
       C3                   ret      
 
; Total bytes of code 5

After

; Assembly listing for method Program:DoubleToInt(double):int (FullOpts)
; Emitting BLENDED_CODE for generic X64 - Windows
; FullOpts code
; optimized code
; rsp based frame
; partially interruptible
; No PGO data

G_M000_IG01:                ;; offset=0x0000
 
G_M000_IG02:                ;; offset=0x0000
       F20F12C0             movddup  xmm0, xmm0
       0F28C8               movaps   xmm1, xmm0
       660FC2C800           cmppd    xmm1, xmm0, 0
       660F54C1             andpd    xmm0, xmm1
       0F100D29000000       movups   xmm1, xmmword ptr [reloc @RWD00]
       660FC2C802           cmppd    xmm1, xmm0, 2
       0F10152D000000       movups   xmm2, xmmword ptr [reloc @RWD16]
       F20F2CC0             cvttsd2si  eax, xmm0
       660F6ED8             movd     xmm3, eax
       660F70DB00           pshufd   xmm3, xmm3, 0
       0F28C1               movaps   xmm0, xmm1
       660F3810DA           pblendvb xmm3, xmm2
       660F7ED8             movd     eax, xmm3
 
G_M000_IG03:                ;; offset=0x003C
       C3                   ret      
 
RWD00  	dq	41DFFFFFFFC00000h, 41DFFFFFFFC00000h
RWD16  	dq	7FFFFFFF7FFFFFFFh, 7FFFFFFF7FFFFFFFh

; Total bytes of code 61

Pre-SSE41

Before

; Assembly listing for method Program:DoubleToInt(double):int (FullOpts)
; Emitting BLENDED_CODE for generic X64 - Windows
; FullOpts code
; optimized code
; rsp based frame
; partially interruptible
; No PGO data

G_M000_IG01:                ;; offset=0x0000
 
G_M000_IG02:                ;; offset=0x0000
       F20F2CC0             cvttsd2si  eax, xmm0
 
G_M000_IG03:                ;; offset=0x0004
       C3                   ret      
 
; Total bytes of code 5

After

; Assembly listing for method Program:DoubleToInt(double):int (FullOpts)
; Emitting BLENDED_CODE for generic X64 - Windows
; FullOpts code
; optimized code
; rsp based frame
; partially interruptible
; No PGO data

G_M000_IG01:                ;; offset=0x0000
       4883EC28             sub      rsp, 40
 
G_M000_IG02:                ;; offset=0x0004
       E8D7D0B75F           call     CORINFO_HELP_DBL2INT
       90                   nop      
 
G_M000_IG03:                ;; offset=0x000A
       4883C428             add      rsp, 40
       C3                   ret      
 
; Total bytes of code 15

Case: float to int scalar

Test code

public class Program
{
    [MethodImplAttribute(MethodImplOptions.NoInlining)]
    public static int FloatToInt(float val)
    {
        return (int)val;
    }

    public static void Main(string[] args)
    {
        Console.WriteLine("-14.5f: " + FloatToInt(-14.5f));
    }
}

AVX512

Before

; Assembly listing for method Program:FloatToInt(float):int (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Windows
; FullOpts code
; optimized code
; rsp based frame
; partially interruptible
; No PGO data

G_M000_IG01:                ;; offset=0x0000
       C5F877               vzeroupper 
 
G_M000_IG02:                ;; offset=0x0003
       C5FA2CC0             vcvttss2si  eax, xmm0
 
G_M000_IG03:                ;; offset=0x0007
       C3                   ret      
 
; Total bytes of code 8

After

; Assembly listing for method Program:FloatToInt(float):int (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Windows
; FullOpts code
; optimized code
; rsp based frame
; partially interruptible
; No PGO data

G_M000_IG01:                ;; offset=0x0000
       C5F877               vzeroupper 
 
G_M000_IG02:                ;; offset=0x0003
       62F37D0855053200000000 vfixupimmss xmm0, xmm0, xmmword ptr [reloc @RWD00], 0
       C5F8C20D390000000D   vcmpps   xmm1, xmm0, xmmword ptr [reloc @RWD16], 13
       C5F8101541000000     vmovups  xmm2, xmmword ptr [reloc @RWD32]
       C5FA2CC0             vcvttss2si  eax, xmm0
       62F27D087CC0         vpbroadcastd  xmm0, eax
       62F36D0825C8CA       vpternlogd xmm1, xmm2, xmm0, -54
       C5F97EC8             vmovd    eax, xmm1
 
G_M000_IG03:                ;; offset=0x0034
       C3                   ret      
 
RWD00  	dq	0000000000000088h, 0000000000000000h
RWD16  	dq	4F0000004F000000h, 4F0000004F000000h
RWD32  	dq	7FFFFFFF7FFFFFFFh, 7FFFFFFF7FFFFFFFh

AVX

*Before

; Assembly listing for method Program:FloatToInt(float):int (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Windows
; FullOpts code
; optimized code
; rsp based frame
; partially interruptible
; No PGO data

G_M000_IG01:                ;; offset=0x0000
 
G_M000_IG02:                ;; offset=0x0000
       C5FA2CC0             vcvttss2si  eax, xmm0
 
G_M000_IG03:                ;; offset=0x0004
       C3                   ret      
 
; Total bytes of code 5

After

; Assembly listing for method Program:FloatToInt(float):int (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Windows
; FullOpts code
; optimized code
; rsp based frame
; partially interruptible
; No PGO data

G_M000_IG01:                ;; offset=0x0000
 
G_M000_IG02:                ;; offset=0x0000
       C4E37904C000         vpermilps xmm0, xmm0, 0
       C5F8C2C800           vcmpps   xmm1, xmm0, xmm0, 0
       C5F054C0             vandps   xmm0, xmm1, xmm0
       C5F8C20D280000000D   vcmpps   xmm1, xmm0, xmmword ptr [reloc @RWD00], 13
       C5FA2CC0             vcvttss2si  eax, xmm0
       C5F96EC0             vmovd    xmm0, eax
       C5F970C000           vpshufd  xmm0, xmm0, 0
       C4E3794C052100000010 vpblendvb xmm0 xmm0, xmmword ptr [reloc @RWD16], xmm1
       C5F97EC0             vmovd    eax, xmm0
 
G_M000_IG03:                ;; offset=0x0033
       C3                   ret      
 
RWD00  	dq	4F0000004F000000h, 4F0000004F000000h
RWD16  	dq	7FFFFFFF7FFFFFFFh, 7FFFFFFF7FFFFFFFh

; Total bytes of code 52

SSE41

Before

; Assembly listing for method Program:FloatToInt(float):int (FullOpts)
; Emitting BLENDED_CODE for generic X64 - Windows
; FullOpts code
; optimized code
; rsp based frame
; partially interruptible
; No PGO data

G_M000_IG01:                ;; offset=0x0000
 
G_M000_IG02:                ;; offset=0x0000
       F30F2CC0             cvttss2si  eax, xmm0
 
G_M000_IG03:                ;; offset=0x0004
       C3                   ret      
 
; Total bytes of code 5

After

; Assembly listing for method Program:FloatToInt(float):int (FullOpts)
; Emitting BLENDED_CODE for generic X64 - Windows
; FullOpts code
; optimized code
; rsp based frame
; partially interruptible
; No PGO data

G_M000_IG01:                ;; offset=0x0000
 
G_M000_IG02:                ;; offset=0x0000
       0FC6C000             shufps   xmm0, xmm0, 0
       0F28C8               movaps   xmm1, xmm0
       0FC2C800             cmpps    xmm1, xmm0, 0
       0F54C1               andps    xmm0, xmm1
       0F100D2B000000       movups   xmm1, xmmword ptr [reloc @RWD00]
       0FC2C802             cmpps    xmm1, xmm0, 2
       0F101530000000       movups   xmm2, xmmword ptr [reloc @RWD16]
       F30F2CC0             cvttss2si  eax, xmm0
       660F6ED8             movd     xmm3, eax
       660F70DB00           pshufd   xmm3, xmm3, 0
       0F28C1               movaps   xmm0, xmm1
       660F3810DA           pblendvb xmm3, xmm2
       660F7ED8             movd     eax, xmm3
 
G_M000_IG03:                ;; offset=0x0039
       C3                   ret      
 
RWD00  	dq	4F0000004F000000h, 4F0000004F000000h
RWD16  	dq	7FFFFFFF7FFFFFFFh, 7FFFFFFF7FFFFFFFh

; Total bytes of code 58

Pre-SSE41

Before

; Assembly listing for method Program:FloatToInt(float):int (FullOpts)
; Emitting BLENDED_CODE for generic X64 - Windows
; FullOpts code
; optimized code
; rsp based frame
; partially interruptible
; No PGO data

G_M000_IG01:                ;; offset=0x0000
 
G_M000_IG02:                ;; offset=0x0000
       F30F2CC0             cvttss2si  eax, xmm0
 
G_M000_IG03:                ;; offset=0x0004
       C3                   ret      
 
; Total bytes of code 5

After

; Assembly listing for method Program:FloatToInt(float):int (FullOpts)
; Emitting BLENDED_CODE for generic X64 - Windows
; FullOpts code
; optimized code
; rsp based frame
; partially interruptible
; No PGO data

G_M000_IG01:                ;; offset=0x0000
       4883EC28             sub      rsp, 40
 
G_M000_IG02:                ;; offset=0x0004
       F30F5AC0             cvtss2sd xmm0, xmm0
       E863C9B55F           call     CORINFO_HELP_DBL2INT
       90                   nop      
 
G_M000_IG03:                ;; offset=0x000E
       4883C428             add      rsp, 40
       C3                   ret      
 
; Total bytes of code 19

Case: float to int packed

Test code

public class Program
{
    [MethodImplAttribute(MethodImplOptions.NoInlining)]
    public static Vector512<int> FloatToInt512(Vector512<float> val)
    {
        return Vector512.ConvertToInt32(val); ;
    }

    public static void Main(string[] args)
    {
        Console.WriteLine(FloatToInt512(Vector512.Create(-14.5f)));
    }
}

AVX512

Before

; Assembly listing for method Program:FloatToInt512(System.Runtime.Intrinsics.Vector512`1[float]):System.Runtime.Intrinsics.Vector512`1[int] (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Windows
; FullOpts code
; optimized code
; rsp based frame
; partially interruptible
; No PGO data

G_M000_IG01:                ;; offset=0x0000
       C5F877               vzeroupper 
 
G_M000_IG02:                ;; offset=0x0003
       62F17E485B02         vcvttps2dq zmm0, zmmword ptr [rdx]
       62F17C481101         vmovups  zmmword ptr [rcx], zmm0
       488BC1               mov      rax, rcx
 
G_M000_IG03:                ;; offset=0x0012
       C5F877               vzeroupper 
       C3                   ret      
 
; Total bytes of code 22

After

; Assembly listing for method Program:FloatToInt512(System.Runtime.Intrinsics.Vector512`1[float]):System.Runtime.Intrinsics.Vector512`1[int] (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Windows
; FullOpts code
; optimized code
; rsp based frame
; partially interruptible
; No PGO data

G_M000_IG01:                ;; offset=0x0000
       C5F877               vzeroupper 
 
G_M000_IG02:                ;; offset=0x0003
       62F17C481002         vmovups  zmm0, zmmword ptr [rdx]
       62F37D4854054C00000000 vfixupimmps zmm0, zmm0, zmmword ptr [reloc @RWD00], 0
       62F17C48C20D810000000D vcmpps   k1, zmm0, zmmword ptr [reloc @RWD64], 13
       62F17E485BC0         vcvttps2dq zmm0, zmm0
       62F27D496405B1000000 vpblendmd zmm0 {k1}, zmm0, zmmword ptr [reloc @RWD128]
       62F17C481101         vmovups  zmmword ptr [rcx], zmm0
       488BC1               mov      rax, rcx
 
G_M000_IG03:                ;; offset=0x0038
       C5F877               vzeroupper 
       C3                   ret      
 
RWD00  	dq	0000008800000088h, 0000008800000088h, 0000008800000088h, 0000008800000088h, 0000008800000088h, 0000008800000088h, 0000008800000088h, 0000008800000088h
RWD64  	dq	4F0000004F000000h, 4F0000004F000000h, 4F0000004F000000h, 4F0000004F000000h, 4F0000004F000000h, 4F0000004F000000h, 4F0000004F000000h, 4F0000004F000000h
RWD128 	dq	7FFFFFFF7FFFFFFFh, 7FFFFFFF7FFFFFFFh, 7FFFFFFF7FFFFFFFh, 7FFFFFFF7FFFFFFFh, 7FFFFFFF7FFFFFFFh, 7FFFFFFF7FFFFFFFh, 7FFFFFFF7FFFFFFFh, 7FFFFFFF7FFFFFFFh

###AVX
Before

; Assembly listing for method Program:FloatToInt256(System.Runtime.Intrinsics.Vector256`1[float]):System.Runtime.Intrinsics.Vector256`1[int] (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Windows
; FullOpts code
; optimized code
; rsp based frame
; partially interruptible
; No PGO data

G_M000_IG01:                ;; offset=0x0000
 
G_M000_IG02:                ;; offset=0x0000
       C5FE5B02             vcvttps2dq ymm0, ymmword ptr [rdx]
       C5FC1101             vmovups  ymmword ptr [rcx], ymm0
       488BC1               mov      rax, rcx
 
G_M000_IG03:                ;; offset=0x000B
       C5F877               vzeroupper 
       C3                   ret      
 
; Total bytes of code 15

After

; Assembly listing for method Program:FloatToInt256(System.Runtime.Intrinsics.Vector256`1[float]):System.Runtime.Intrinsics.Vector256`1[int] (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Windows
; FullOpts code
; optimized code
; rsp based frame
; partially interruptible
; No PGO data

G_M000_IG01:                ;; offset=0x0000
 
G_M000_IG02:                ;; offset=0x0000
       C5FC1002             vmovups  ymm0, ymmword ptr [rdx]
       C5FCC2C800           vcmpps   ymm1, ymm0, ymm0, 0
       C5F454C0             vandps   ymm0, ymm1, ymm0
       C5FCC20D3A0000000D   vcmpps   ymm1, ymm0, ymmword ptr [reloc @RWD00], 13
       C5F4541552000000     vandps   ymm2, ymm1, ymmword ptr [reloc @RWD32]
       C5FE5BC0             vcvttps2dq ymm0, ymm0
       C5F455C0             vandnps  ymm0, ymm1, ymm0
       C5FC56C2             vorps    ymm0, ymm0, ymm2
       C5FC1101             vmovups  ymmword ptr [rcx], ymm0
       488BC1               mov      rax, rcx
 
G_M000_IG03:                ;; offset=0x0031
       C5F877               vzeroupper 
       C3                   ret      
 
RWD00  	dq	4F0000004F000000h, 4F0000004F000000h, 4F0000004F000000h, 4F0000004F000000h
RWD32  	dq	7FFFFFFF7FFFFFFFh, 7FFFFFFF7FFFFFFFh, 7FFFFFFF7FFFFFFFh, 7FFFFFFF7FFFFFFFh

; Total bytes of code 53

SSE41

Before

; Assembly listing for method Program:FloatToInt512(System.Runtime.Intrinsics.Vector512`1[float]):System.Runtime.Intrinsics.Vector512`1[int] (FullOpts)
; Emitting BLENDED_CODE for generic X64 - Windows
; FullOpts code
; optimized code
; rsp based frame
; partially interruptible
; No PGO data
; 0 inlinees with PGO data; 13 single block inlinees; 5 inlinees without PGO data

G_M000_IG01:                ;; offset=0x0000
 
G_M000_IG02:                ;; offset=0x0000
       0F1002               movups   xmm0, xmmword ptr [rdx]
       0F104A10             movups   xmm1, xmmword ptr [rdx+0x10]
       F30F5BC0             cvttps2dq xmm0, xmm0
       F30F5BC9             cvttps2dq xmm1, xmm1
       0F105220             movups   xmm2, xmmword ptr [rdx+0x20]
       0F105A30             movups   xmm3, xmmword ptr [rdx+0x30]
       F30F5BD2             cvttps2dq xmm2, xmm2
       F30F5BDB             cvttps2dq xmm3, xmm3
       0F1101               movups   xmmword ptr [rcx], xmm0
       0F114910             movups   xmmword ptr [rcx+0x10], xmm1
       0F115120             movups   xmmword ptr [rcx+0x20], xmm2
       0F115930             movups   xmmword ptr [rcx+0x30], xmm3
       488BC1               mov      rax, rcx
 
G_M000_IG03:                ;; offset=0x0031
       C3                   ret      
 
; Total bytes of code 50

After

; Assembly listing for method Program:FloatToInt512(System.Runtime.Intrinsics.Vector512`1[float]):System.Runtime.Intrinsics.Vector512`1[int] (FullOpts)
; Emitting BLENDED_CODE for generic X64 - Windows
; FullOpts code
; optimized code
; rsp based frame
; partially interruptible
; No PGO data
; 0 inlinees with PGO data; 13 single block inlinees; 5 inlinees without PGO data

G_M000_IG01:                ;; offset=0x0000
       4883EC28             sub      rsp, 40
       0F29742410           movaps   xmmword ptr [rsp+0x10], xmm6
       0F293C24             movaps   xmmword ptr [rsp], xmm7
 
G_M000_IG02:                ;; offset=0x000D
       0F1002               movups   xmm0, xmmword ptr [rdx]
       0F104A10             movups   xmm1, xmmword ptr [rdx+0x10]
       0F28D0               movaps   xmm2, xmm0
       0FC2D000             cmpps    xmm2, xmm0, 0
       0F54C2               andps    xmm0, xmm2
       0F10159B000000       movups   xmm2, xmmword ptr [reloc @RWD00]
       0F28DA               movaps   xmm3, xmm2
       0FC2D802             cmpps    xmm3, xmm0, 2
       0F10259D000000       movups   xmm4, xmmword ptr [reloc @RWD16]
       F30F5BE8             cvttps2dq xmm5, xmm0
       0F28C3               movaps   xmm0, xmm3
       660F3810EC           pblendvb xmm5, xmm4
       0F28C1               movaps   xmm0, xmm1
       0FC2C100             cmpps    xmm0, xmm1, 0
       0F54C1               andps    xmm0, xmm1
       0F28CA               movaps   xmm1, xmm2
       0FC2C802             cmpps    xmm1, xmm0, 2
       F30F5BD8             cvttps2dq xmm3, xmm0
       0F28C1               movaps   xmm0, xmm1
       660F3810DC           pblendvb xmm3, xmm4
       0F104220             movups   xmm0, xmmword ptr [rdx+0x20]
       0F104A30             movups   xmm1, xmmword ptr [rdx+0x30]
       0F28F0               movaps   xmm6, xmm0
       0FC2F000             cmpps    xmm6, xmm0, 0
       0F54C6               andps    xmm0, xmm6
       0F28F2               movaps   xmm6, xmm2
       0FC2F002             cmpps    xmm6, xmm0, 2
       F30F5BF8             cvttps2dq xmm7, xmm0
       0F28C6               movaps   xmm0, xmm6
       660F3810FC           pblendvb xmm7, xmm4
       0F28C1               movaps   xmm0, xmm1
       0FC2C100             cmpps    xmm0, xmm1, 0
       0F54C1               andps    xmm0, xmm1
       0FC2D002             cmpps    xmm2, xmm0, 2
       F30F5BC8             cvttps2dq xmm1, xmm0
       0F28C2               movaps   xmm0, xmm2
       660F3810CC           pblendvb xmm1, xmm4
       0F1129               movups   xmmword ptr [rcx], xmm5
       0F115910             movups   xmmword ptr [rcx+0x10], xmm3
       0F117920             movups   xmmword ptr [rcx+0x20], xmm7
       0F114930             movups   xmmword ptr [rcx+0x30], xmm1
       488BC1               mov      rax, rcx
 
G_M000_IG03:                ;; offset=0x00AD
       0F28742410           movaps   xmm6, xmmword ptr [rsp+0x10]
       0F283C24             movaps   xmm7, xmmword ptr [rsp]
       4883C428             add      rsp, 40
       C3                   ret      
 
RWD00  	dq	4F0000004F000000h, 4F0000004F000000h
RWD16  	dq	7FFFFFFF7FFFFFFFh, 7FFFFFFF7FFFFFFFh

; Total bytes of code 187

Pre-SSE41

Before

; Assembly listing for method Program:FloatToInt512(System.Runtime.Intrinsics.Vector512`1[float]):System.Runtime.Intrinsics.Vector512`1[int] (FullOpts)
; Emitting BLENDED_CODE for generic X64 - Windows
; FullOpts code
; optimized code
; rsp based frame
; partially interruptible
; No PGO data
; 0 inlinees with PGO data; 13 single block inlinees; 5 inlinees without PGO data

G_M000_IG01:                ;; offset=0x0000
 
G_M000_IG02:                ;; offset=0x0000
       0F1002               movups   xmm0, xmmword ptr [rdx]
       0F104A10             movups   xmm1, xmmword ptr [rdx+0x10]
       F30F5BC0             cvttps2dq xmm0, xmm0
       F30F5BC9             cvttps2dq xmm1, xmm1
       0F105220             movups   xmm2, xmmword ptr [rdx+0x20]
       0F105A30             movups   xmm3, xmmword ptr [rdx+0x30]
       F30F5BD2             cvttps2dq xmm2, xmm2
       F30F5BDB             cvttps2dq xmm3, xmm3
       0F1101               movups   xmmword ptr [rcx], xmm0
       0F114910             movups   xmmword ptr [rcx+0x10], xmm1
       0F115120             movups   xmmword ptr [rcx+0x20], xmm2
       0F115930             movups   xmmword ptr [rcx+0x30], xmm3
       488BC1               mov      rax, rcx
 
G_M000_IG03:                ;; offset=0x0031
       C3                   ret      
 
; Total bytes of code 50

After

; Assembly listing for method Program:FloatToInt512(System.Runtime.Intrinsics.Vector512`1[float]):System.Runtime.Intrinsics.Vector512`1[int] (FullOpts)
; Emitting BLENDED_CODE for generic X64 - Windows
; FullOpts code
; optimized code
; rsp based frame
; partially interruptible
; No PGO data
; 0 inlinees with PGO data; 45 single block inlinees; 21 inlinees without PGO data

G_M000_IG01:                ;; offset=0x0000
       57                   push     rdi
       56                   push     rsi
       53                   push     rbx
       4881EC60010000       sub      rsp, 352
       0F29B42450010000     movaps   xmmword ptr [rsp+0x150], xmm6
       0F29BC2440010000     movaps   xmmword ptr [rsp+0x140], xmm7
       440F29842430010000   movaps   xmmword ptr [rsp+0x130], xmm8
       440F298C2420010000   movaps   xmmword ptr [rsp+0x120], xmm9
       488BF1               mov      rsi, rcx
       488BDA               mov      rbx, rdx
 
G_M000_IG02:                ;; offset=0x0032
       0F1003               movups   xmm0, xmmword ptr [rbx]
       0F107310             movups   xmm6, xmmword ptr [rbx+0x10]
       0F29842410010000     movaps   xmmword ptr [rsp+0x110], xmm0
       488B842410010000     mov      rax, qword ptr [rsp+0x110]
       4889842400010000     mov      qword ptr [rsp+0x100], rax
       F30F5A842400010000   cvtss2sd xmm0, dword ptr [rsp+0x100]
       E891C6B55F           call     CORINFO_HELP_DBL2INT
       89842408010000       mov      dword ptr [rsp+0x108], eax
       F30F5A842404010000   cvtss2sd xmm0, dword ptr [rsp+0x104]
       E87CC6B55F           call     CORINFO_HELP_DBL2INT
       8984240C010000       mov      dword ptr [rsp+0x10C], eax
       488BBC2408010000     mov      rdi, qword ptr [rsp+0x108]
       488B842418010000     mov      rax, qword ptr [rsp+0x118]
       48898424F0000000     mov      qword ptr [rsp+0xF0], rax
       F30F5A8424F0000000   cvtss2sd xmm0, dword ptr [rsp+0xF0]
       E84FC6B55F           call     CORINFO_HELP_DBL2INT
       898424F8000000       mov      dword ptr [rsp+0xF8], eax
       F30F5A8424F4000000   cvtss2sd xmm0, dword ptr [rsp+0xF4]
       E83AC6B55F           call     CORINFO_HELP_DBL2INT
       898424FC000000       mov      dword ptr [rsp+0xFC], eax
       488B8424F8000000     mov      rax, qword ptr [rsp+0xF8]
       4889BC24E0000000     mov      qword ptr [rsp+0xE0], rdi
       48898424E8000000     mov      qword ptr [rsp+0xE8], rax
       0F28BC24E0000000     movaps   xmm7, xmmword ptr [rsp+0xE0]
       0F29B424D0000000     movaps   xmmword ptr [rsp+0xD0], xmm6
       488B8424D0000000     mov      rax, qword ptr [rsp+0xD0]
       48898424C0000000     mov      qword ptr [rsp+0xC0], rax
       F30F5A8424C0000000   cvtss2sd xmm0, dword ptr [rsp+0xC0]
       E8EDC5B55F           call     CORINFO_HELP_DBL2INT
       898424C8000000       mov      dword ptr [rsp+0xC8], eax
       F30F5A8424C4000000   cvtss2sd xmm0, dword ptr [rsp+0xC4]
       E8D8C5B55F           call     CORINFO_HELP_DBL2INT
       898424CC000000       mov      dword ptr [rsp+0xCC], eax
       488BBC24C8000000     mov      rdi, qword ptr [rsp+0xC8]
       488B8424D8000000     mov      rax, qword ptr [rsp+0xD8]
       48898424B0000000     mov      qword ptr [rsp+0xB0], rax
       F30F5A8424B0000000   cvtss2sd xmm0, dword ptr [rsp+0xB0]
       E8ABC5B55F           call     CORINFO_HELP_DBL2INT
       898424B8000000       mov      dword ptr [rsp+0xB8], eax
       F30F5A8424B4000000   cvtss2sd xmm0, dword ptr [rsp+0xB4]
       E896C5B55F           call     CORINFO_HELP_DBL2INT
       898424BC000000       mov      dword ptr [rsp+0xBC], eax
       488B8424B8000000     mov      rax, qword ptr [rsp+0xB8]
       4889BC24A0000000     mov      qword ptr [rsp+0xA0], rdi
       48898424A8000000     mov      qword ptr [rsp+0xA8], rax
 
G_M000_IG03:                ;; offset=0x0179
       0F28B424A0000000     movaps   xmm6, xmmword ptr [rsp+0xA0]
       0F104320             movups   xmm0, xmmword ptr [rbx+0x20]
       440F104330           movups   xmm8, xmmword ptr [rbx+0x30]
       0F29842490000000     movaps   xmmword ptr [rsp+0x90], xmm0
       488B842490000000     mov      rax, qword ptr [rsp+0x90]
       4889842480000000     mov      qword ptr [rsp+0x80], rax
       F30F5A842480000000   cvtss2sd xmm0, dword ptr [rsp+0x80]
       E840C5B55F           call     CORINFO_HELP_DBL2INT
       89842488000000       mov      dword ptr [rsp+0x88], eax
       F30F5A842484000000   cvtss2sd xmm0, dword ptr [rsp+0x84]
       E82BC5B55F           call     CORINFO_HELP_DBL2INT
       8984248C000000       mov      dword ptr [rsp+0x8C], eax
       488B9C2488000000     mov      rbx, qword ptr [rsp+0x88]
       488B842498000000     mov      rax, qword ptr [rsp+0x98]
       4889442470           mov      qword ptr [rsp+0x70], rax
       F30F5A442470         cvtss2sd xmm0, dword ptr [rsp+0x70]
       E804C5B55F           call     CORINFO_HELP_DBL2INT
       89442478             mov      dword ptr [rsp+0x78], eax
       F30F5A442474         cvtss2sd xmm0, dword ptr [rsp+0x74]
       E8F5C4B55F           call     CORINFO_HELP_DBL2INT
       8944247C             mov      dword ptr [rsp+0x7C], eax
       488B442478           mov      rax, qword ptr [rsp+0x78]
       48895C2460           mov      qword ptr [rsp+0x60], rbx
       4889442468           mov      qword ptr [rsp+0x68], rax
       440F284C2460         movaps   xmm9, xmmword ptr [rsp+0x60]
       440F29442450         movaps   xmmword ptr [rsp+0x50], xmm8
       488B442450           mov      rax, qword ptr [rsp+0x50]
       4889442440           mov      qword ptr [rsp+0x40], rax
       F30F5A442440         cvtss2sd xmm0, dword ptr [rsp+0x40]
       E8C1C4B55F           call     CORINFO_HELP_DBL2INT
       89442448             mov      dword ptr [rsp+0x48], eax
       F30F5A442444         cvtss2sd xmm0, dword ptr [rsp+0x44]
       E8B2C4B55F           call     CORINFO_HELP_DBL2INT
       8944244C             mov      dword ptr [rsp+0x4C], eax
       488B5C2448           mov      rbx, qword ptr [rsp+0x48]
       488B442458           mov      rax, qword ptr [rsp+0x58]
       4889442430           mov      qword ptr [rsp+0x30], rax
       F30F5A442430         cvtss2sd xmm0, dword ptr [rsp+0x30]
       E894C4B55F           call     CORINFO_HELP_DBL2INT
       89442438             mov      dword ptr [rsp+0x38], eax
       F30F5A442434         cvtss2sd xmm0, dword ptr [rsp+0x34]
       E885C4B55F           call     CORINFO_HELP_DBL2INT
       8944243C             mov      dword ptr [rsp+0x3C], eax
       488B442438           mov      rax, qword ptr [rsp+0x38]
       48895C2420           mov      qword ptr [rsp+0x20], rbx
 
G_M000_IG04:                ;; offset=0x0279
       4889442428           mov      qword ptr [rsp+0x28], rax
       0F113E               movups   xmmword ptr [rsi], xmm7
       0F117610             movups   xmmword ptr [rsi+0x10], xmm6
       440F114E20           movups   xmmword ptr [rsi+0x20], xmm9
       0F28442420           movaps   xmm0, xmmword ptr [rsp+0x20]
       0F114630             movups   xmmword ptr [rsi+0x30], xmm0
       488BC6               mov      rax, rsi
 
G_M000_IG05:                ;; offset=0x0296
       0F28B42450010000     movaps   xmm6, xmmword ptr [rsp+0x150]
       0F28BC2440010000     movaps   xmm7, xmmword ptr [rsp+0x140]
       440F28842430010000   movaps   xmm8, xmmword ptr [rsp+0x130]
       440F288C2420010000   movaps   xmm9, xmmword ptr [rsp+0x120]
       4881C460010000       add      rsp, 352
       5B                   pop      rbx
       5E                   pop      rsi
       5F                   pop      rdi
       C3                   ret      
 
; Total bytes of code 707

Perf

Base - No changes. Same environment variables
Diff - PR changes. Same environment variables as Base.
Diff / Base - Ratio of diff and base

Scalar
Capture_perf

Packed
Capture_perf_vector

tracking #40234

@ghost ghost added the community-contribution Indicates that the PR has been added by a community member label Jan 26, 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 26, 2024
@ghost
Copy link

ghost commented Jan 26, 2024

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

Issue Details

NO NEED FOR REVIEW AS OF NOW

Author: khushal1996
Assignees: -
Labels:

area-CodeGen-coreclr, community-contribution

Milestone: -

@ryujit-bot
Copy link

Diff results for #97529

Assembly diffs

Assembly diffs for linux/arm64 ran on windows/x64

Diffs are based on 95,287 contexts (40,999 MinOpts, 54,288 FullOpts).

MISSED contexts: base: 0 (0.00%), diff: 54,574 (35.48%)

Overall (+12,884 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm64.checked.mch 1,346,400 +832
benchmarks.run_pgo.linux.arm64.checked.mch 3,029,072 -380
benchmarks.run_tiered.linux.arm64.checked.mch 2,686,108 +16
coreclr_tests.run.linux.arm64.checked.mch 265,276 -32
libraries.pmi.linux.arm64.checked.mch 1,426,088 +4,784
libraries_tests.run.linux.arm64.Release.mch 2,011,980 +184
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch 1,298,624 +3,160
realworld.run.linux.arm64.checked.mch 1,975,784 +4,320
MinOpts (-512 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.arm64.checked.mch 2,177,252 -220
benchmarks.run_tiered.linux.arm64.checked.mch 2,399,152 -236
libraries_tests.run.linux.arm64.Release.mch 1,918,600 -56
FullOpts (+13,396 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm64.checked.mch 1,290,156 +832
benchmarks.run_pgo.linux.arm64.checked.mch 851,820 -160
benchmarks.run_tiered.linux.arm64.checked.mch 286,956 +252
coreclr_tests.run.linux.arm64.checked.mch 265,276 -32
libraries.pmi.linux.arm64.checked.mch 1,426,088 +4,784
libraries_tests.run.linux.arm64.Release.mch 93,380 +240
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch 1,298,624 +3,160
realworld.run.linux.arm64.checked.mch 1,961,272 +4,320

Assembly diffs for osx/arm64 ran on windows/x64

Diffs are based on 90,586 contexts (40,285 MinOpts, 50,301 FullOpts).

MISSED contexts: base: 0 (0.00%), diff: 47,361 (33.47%)

Overall (+12,056 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.osx.arm64.checked.mch 1,340,312 +884
benchmarks.run_pgo.osx.arm64.checked.mch 2,401,052 +8
benchmarks.run_tiered.osx.arm64.checked.mch 2,330,800 -192
coreclr_tests.run.osx.arm64.checked.mch 528,604 +100
libraries.pmi.osx.arm64.checked.mch 1,311,668 +3,248
libraries_tests.run.osx.arm64.Release.mch 2,054,128 -68
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch 1,296,204 +2,792
realworld.run.osx.arm64.checked.mch 2,049,968 +5,284
MinOpts (-640 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch 2,007,056 -228
benchmarks.run_tiered.osx.arm64.checked.mch 2,061,072 -352
coreclr_tests.run.osx.arm64.checked.mch 404,024 -4
libraries_tests.run.osx.arm64.Release.mch 2,038,356 -56
FullOpts (+12,696 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.osx.arm64.checked.mch 1,339,888 +884
benchmarks.run_pgo.osx.arm64.checked.mch 393,996 +236
benchmarks.run_tiered.osx.arm64.checked.mch 269,728 +160
coreclr_tests.run.osx.arm64.checked.mch 124,580 +104
libraries.pmi.osx.arm64.checked.mch 1,310,832 +3,248
libraries_tests.run.osx.arm64.Release.mch 15,772 -12
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch 1,296,204 +2,792
realworld.run.osx.arm64.checked.mch 2,049,868 +5,284

Assembly diffs for windows/arm64 ran on windows/x64

Diffs are based on 95,065 contexts (36,507 MinOpts, 58,558 FullOpts).

MISSED contexts: base: 0 (0.00%), diff: 54,513 (35.50%)

Overall (+10,872 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.arm64.checked.mch 1,133,696 +836
benchmarks.run_pgo.windows.arm64.checked.mch 2,273,500 -680
benchmarks.run_tiered.windows.arm64.checked.mch 2,189,152 +216
coreclr_tests.run.windows.arm64.checked.mch 275,388 +20
libraries.pmi.windows.arm64.checked.mch 1,249,004 +2,720
libraries_tests.run.windows.arm64.Release.mch 2,089,172 +328
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch 1,240,428 +3,080
realworld.run.windows.arm64.checked.mch 1,943,440 +4,352
MinOpts (-248 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch 1,757,772 -96
benchmarks.run_tiered.windows.arm64.checked.mch 1,926,004 -96
libraries_tests.run.windows.arm64.Release.mch 2,005,008 -56
FullOpts (+11,120 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.arm64.checked.mch 1,133,548 +836
benchmarks.run_pgo.windows.arm64.checked.mch 515,728 -584
benchmarks.run_tiered.windows.arm64.checked.mch 263,148 +312
coreclr_tests.run.windows.arm64.checked.mch 275,388 +20
libraries.pmi.windows.arm64.checked.mch 1,249,004 +2,720
libraries_tests.run.windows.arm64.Release.mch 84,164 +384
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch 1,240,428 +3,080
realworld.run.windows.arm64.checked.mch 1,943,340 +4,352

Details here


Assembly diffs for linux/arm ran on windows/x86

Diffs are based on 104,582 contexts (34,422 MinOpts, 70,160 FullOpts).

MISSED contexts: base: 2,785 (1.74%), diff: 52,364 (32.62%)

Overall (+7,880 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm.checked.mch 1,221,696 +798
benchmarks.run_pgo.linux.arm.checked.mch 2,429,618 -5,282
benchmarks.run_tiered.linux.arm.checked.mch 2,096,812 +492
coreclr_tests.run.linux.arm.checked.mch 405,476 +218
libraries.pmi.linux.arm.checked.mch 1,144,640 +4,704
libraries_tests.run.linux.arm.Release.mch 939,238 +810
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch 894,282 +2,676
realworld.run.linux.arm.checked.mch 3,364,120 +3,464
MinOpts (-226 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.arm.checked.mch 1,196,190 -152
benchmarks.run_tiered.linux.arm.checked.mch 1,501,706 -126
coreclr_tests.run.linux.arm.checked.mch 295,394 +92
libraries_tests.run.linux.arm.Release.mch 752,254 -40
FullOpts (+8,106 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm.checked.mch 1,143,408 +798
benchmarks.run_pgo.linux.arm.checked.mch 1,233,428 -5,130
benchmarks.run_tiered.linux.arm.checked.mch 595,106 +618
coreclr_tests.run.linux.arm.checked.mch 110,082 +126
libraries.pmi.linux.arm.checked.mch 1,144,640 +4,704
libraries_tests.run.linux.arm.Release.mch 186,984 +850
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch 894,282 +2,676
realworld.run.linux.arm.checked.mch 3,354,282 +3,464

Assembly diffs for windows/x86 ran on windows/x86

Diffs are based on 64,348 contexts (22,203 MinOpts, 42,145 FullOpts).

MISSED contexts: base: 3 (0.00%), diff: 74,344 (52.26%)

Overall (+6,474 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.x86.checked.mch 378,560 +506
benchmarks.run_pgo.windows.x86.checked.mch 841,834 -1,320
benchmarks.run_tiered.windows.x86.checked.mch 777,492 +343
coreclr_tests.run.windows.x86.checked.mch 88,890 -11
libraries.pmi.windows.x86.checked.mch 1,533,349 +3,178
libraries_tests.run.windows.x86.Release.mch 796,580 +860
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch 359,330 +1,657
realworld.run.windows.x86.checked.mch 559,958 +1,261
MinOpts (-42 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_tiered.windows.x86.checked.mch 571,759 -8
libraries_tests.run.windows.x86.Release.mch 703,554 -34
FullOpts (+6,516 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.x86.checked.mch 378,435 +506
benchmarks.run_pgo.windows.x86.checked.mch 334,595 -1,320
benchmarks.run_tiered.windows.x86.checked.mch 205,733 +351
coreclr_tests.run.windows.x86.checked.mch 88,890 -11
libraries.pmi.windows.x86.checked.mch 1,533,349 +3,178
libraries_tests.run.windows.x86.Release.mch 93,026 +894
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch 359,330 +1,657
realworld.run.windows.x86.checked.mch 559,901 +1,261

Details here


Throughput diffs

Throughput diffs for linux/arm64 ran on linux/x64

Overall (-0.36% to +0.25%)
Collection PDIFF
benchmarks.run.linux.arm64.checked.mch -0.13%
benchmarks.run_tiered.linux.arm64.checked.mch -0.15%
libraries.pmi.linux.arm64.checked.mch +0.25%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch +0.19%
benchmarks.run_pgo.linux.arm64.checked.mch -0.36%
smoke_tests.nativeaot.linux.arm64.checked.mch -0.01%
coreclr_tests.run.linux.arm64.checked.mch -0.12%
libraries.crossgen2.linux.arm64.checked.mch -0.01%
realworld.run.linux.arm64.checked.mch +0.13%
MinOpts (-0.01% to +1.09%)
Collection PDIFF
benchmarks.run_tiered.linux.arm64.checked.mch -0.01%
benchmarks.run_pgo.linux.arm64.checked.mch +0.01%
coreclr_tests.run.linux.arm64.checked.mch +1.09%
FullOpts (-0.55% to +0.25%)
Collection PDIFF
benchmarks.run.linux.arm64.checked.mch -0.13%
benchmarks.run_tiered.linux.arm64.checked.mch -0.46%
libraries.pmi.linux.arm64.checked.mch +0.25%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch +0.19%
benchmarks.run_pgo.linux.arm64.checked.mch -0.55%
libraries_tests.run.linux.arm64.Release.mch -0.01%
smoke_tests.nativeaot.linux.arm64.checked.mch -0.01%
coreclr_tests.run.linux.arm64.checked.mch -0.12%
libraries.crossgen2.linux.arm64.checked.mch -0.01%
realworld.run.linux.arm64.checked.mch +0.13%

Throughput diffs for linux/x64 ran on linux/x64

Overall (-0.20% to +0.21%)
Collection PDIFF
benchmarks.run.linux.x64.checked.mch -0.18%
benchmarks.run_pgo.linux.x64.checked.mch -0.10%
libraries_tests.run.linux.x64.Release.mch +0.06%
libraries.pmi.linux.x64.checked.mch +0.21%
libraries.crossgen2.linux.x64.checked.mch +0.02%
realworld.run.linux.x64.checked.mch +0.15%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch +0.21%
benchmarks.run_tiered.linux.x64.checked.mch -0.08%
coreclr_tests.run.linux.x64.checked.mch -0.20%
MinOpts (0.00% to +0.17%)
Collection PDIFF
benchmarks.run.linux.x64.checked.mch +0.07%
benchmarks.run_pgo.linux.x64.checked.mch +0.07%
libraries_tests.run.linux.x64.Release.mch +0.05%
benchmarks.run_tiered.linux.x64.checked.mch +0.13%
coreclr_tests.run.linux.x64.checked.mch +0.17%
FullOpts (-0.43% to +0.21%)
Collection PDIFF
benchmarks.run.linux.x64.checked.mch -0.18%
benchmarks.run_pgo.linux.x64.checked.mch -0.24%
libraries_tests.run.linux.x64.Release.mch +0.08%
libraries.pmi.linux.x64.checked.mch +0.21%
libraries.crossgen2.linux.x64.checked.mch +0.02%
realworld.run.linux.x64.checked.mch +0.15%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch +0.21%
benchmarks.run_tiered.linux.x64.checked.mch -0.36%
coreclr_tests.run.linux.x64.checked.mch -0.43%

Details here


@ryujit-bot
Copy link

Diff results for #97529

Throughput diffs

Throughput diffs for linux/arm64 ran on windows/x64

Overall (-0.56% to +0.10%)
Collection PDIFF
benchmarks.run.linux.arm64.checked.mch +0.01%
benchmarks.run_pgo.linux.arm64.checked.mch -0.56%
benchmarks.run_tiered.linux.arm64.checked.mch -0.03%
coreclr_tests.run.linux.arm64.checked.mch -0.03%
libraries.crossgen2.linux.arm64.checked.mch -0.20%
libraries.pmi.linux.arm64.checked.mch +0.09%
libraries_tests.run.linux.arm64.Release.mch -0.05%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch +0.06%
realworld.run.linux.arm64.checked.mch +0.10%
MinOpts (-0.00% to +0.01%)
Collection PDIFF
benchmarks.run_pgo.linux.arm64.checked.mch +0.01%
FullOpts (-0.65% to +0.10%)
Collection PDIFF
benchmarks.run.linux.arm64.checked.mch +0.01%
benchmarks.run_pgo.linux.arm64.checked.mch -0.65%
benchmarks.run_tiered.linux.arm64.checked.mch -0.09%
coreclr_tests.run.linux.arm64.checked.mch -0.08%
libraries.crossgen2.linux.arm64.checked.mch -0.20%
libraries.pmi.linux.arm64.checked.mch +0.09%
libraries_tests.run.linux.arm64.Release.mch -0.08%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch +0.06%
realworld.run.linux.arm64.checked.mch +0.10%

Throughput diffs for linux/x64 ran on windows/x64

Overall (-0.55% to +0.55%)
Collection PDIFF
benchmarks.run.linux.x64.checked.mch -0.06%
benchmarks.run_pgo.linux.x64.checked.mch -0.55%
benchmarks.run_tiered.linux.x64.checked.mch -0.01%
coreclr_tests.run.linux.x64.checked.mch +0.55%
libraries.crossgen2.linux.x64.checked.mch -0.01%
libraries.pmi.linux.x64.checked.mch +0.09%
libraries_tests.run.linux.x64.Release.mch -0.04%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch +0.21%
realworld.run.linux.x64.checked.mch +0.13%
MinOpts (-0.00% to +0.24%)
Collection PDIFF
benchmarks.run_pgo.linux.x64.checked.mch +0.02%
benchmarks.run_tiered.linux.x64.checked.mch +0.02%
coreclr_tests.run.linux.x64.checked.mch +0.24%
libraries_tests.run.linux.x64.Release.mch +0.03%
FullOpts (-0.63% to +0.74%)
Collection PDIFF
benchmarks.run.linux.x64.checked.mch -0.07%
benchmarks.run_pgo.linux.x64.checked.mch -0.63%
benchmarks.run_tiered.linux.x64.checked.mch -0.05%
coreclr_tests.run.linux.x64.checked.mch +0.74%
libraries.crossgen2.linux.x64.checked.mch -0.01%
libraries.pmi.linux.x64.checked.mch +0.09%
libraries_tests.run.linux.x64.Release.mch -0.08%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch +0.21%
realworld.run.linux.x64.checked.mch +0.13%

Throughput diffs for osx/arm64 ran on windows/x64

Overall (-0.45% to +0.09%)
Collection PDIFF
benchmarks.run.osx.arm64.checked.mch -0.01%
benchmarks.run_pgo.osx.arm64.checked.mch -0.45%
benchmarks.run_tiered.osx.arm64.checked.mch -0.09%
coreclr_tests.run.osx.arm64.checked.mch -0.04%
libraries.pmi.osx.arm64.checked.mch +0.06%
libraries_tests.run.osx.arm64.Release.mch -0.07%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch +0.06%
realworld.run.osx.arm64.checked.mch +0.09%
MinOpts (-0.00% to +0.01%)
Collection PDIFF
benchmarks.run_pgo.osx.arm64.checked.mch +0.01%
FullOpts (-0.57% to +0.09%)
Collection PDIFF
benchmarks.run.osx.arm64.checked.mch -0.01%
benchmarks.run_pgo.osx.arm64.checked.mch -0.57%
benchmarks.run_tiered.osx.arm64.checked.mch -0.24%
coreclr_tests.run.osx.arm64.checked.mch -0.11%
libraries.pmi.osx.arm64.checked.mch +0.06%
libraries_tests.run.osx.arm64.Release.mch -0.14%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch +0.06%
realworld.run.osx.arm64.checked.mch +0.09%

Throughput diffs for windows/arm64 ran on windows/x64

Overall (-0.77% to +0.09%)
Collection PDIFF
benchmarks.run_pgo.windows.arm64.checked.mch -0.77%
benchmarks.run_tiered.windows.arm64.checked.mch -0.06%
coreclr_tests.run.windows.arm64.checked.mch -0.04%
libraries.pmi.windows.arm64.checked.mch +0.08%
libraries_tests.run.windows.arm64.Release.mch -0.06%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch +0.06%
realworld.run.windows.arm64.checked.mch +0.09%
MinOpts (-0.01% 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%
FullOpts (-0.93% to +0.09%)
Collection PDIFF
benchmarks.run_pgo.windows.arm64.checked.mch -0.93%
benchmarks.run_tiered.windows.arm64.checked.mch -0.14%
coreclr_tests.run.windows.arm64.checked.mch -0.10%
libraries.pmi.windows.arm64.checked.mch +0.08%
libraries_tests.run.windows.arm64.Release.mch -0.11%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch +0.06%
realworld.run.windows.arm64.checked.mch +0.09%

Throughput diffs for windows/x64 ran on windows/x64

Overall (-11.45% to -0.38%)
Collection PDIFF
aspnet.run.windows.x64.checked.mch -0.53%
benchmarks.run.windows.x64.checked.mch -1.23%
benchmarks.run_pgo.windows.x64.checked.mch -0.38%
benchmarks.run_tiered.windows.x64.checked.mch -0.49%
coreclr_tests.run.windows.x64.checked.mch -1.23%
libraries.crossgen2.windows.x64.checked.mch -11.45%
libraries.pmi.windows.x64.checked.mch -1.93%
libraries_tests.run.windows.x64.Release.mch -2.04%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch -2.29%
realworld.run.windows.x64.checked.mch -0.63%
smoke_tests.nativeaot.windows.x64.checked.mch -2.12%
MinOpts (-9.46% to +0.00%)
Collection PDIFF
aspnet.run.windows.x64.checked.mch -1.30%
benchmarks.run_pgo.windows.x64.checked.mch -0.96%
benchmarks.run_tiered.windows.x64.checked.mch -0.74%
coreclr_tests.run.windows.x64.checked.mch -3.65%
libraries_tests.run.windows.x64.Release.mch -1.49%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch -9.46%
FullOpts (-11.45% to +0.34%)
Collection PDIFF
aspnet.run.windows.x64.checked.mch -0.36%
benchmarks.run.windows.x64.checked.mch -1.23%
benchmarks.run_pgo.windows.x64.checked.mch -0.31%
benchmarks.run_tiered.windows.x64.checked.mch -0.24%
coreclr_tests.run.windows.x64.checked.mch +0.34%
libraries.crossgen2.windows.x64.checked.mch -11.45%
libraries.pmi.windows.x64.checked.mch -1.93%
libraries_tests.run.windows.x64.Release.mch -2.41%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch -2.26%
realworld.run.windows.x64.checked.mch -0.63%
smoke_tests.nativeaot.windows.x64.checked.mch -2.12%

Details here


Throughput diffs for linux/arm ran on linux/x86

Overall (-0.35% to +0.14%)
Collection PDIFF
benchmarks.run.linux.arm.checked.mch +0.07%
benchmarks.run_pgo.linux.arm.checked.mch -0.35%
benchmarks.run_tiered.linux.arm.checked.mch +0.07%
coreclr_tests.run.linux.arm.checked.mch +0.01%
libraries.pmi.linux.arm.checked.mch +0.12%
libraries_tests.run.linux.arm.Release.mch -0.03%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch +0.11%
realworld.run.linux.arm.checked.mch +0.14%
MinOpts (0.00% to +0.02%)
Collection PDIFF
benchmarks.run_pgo.linux.arm.checked.mch +0.01%
benchmarks.run_tiered.linux.arm.checked.mch +0.02%
libraries_tests.run.linux.arm.Release.mch +0.01%
FullOpts (-0.39% to +0.14%)
Collection PDIFF
benchmarks.run.linux.arm.checked.mch +0.08%
benchmarks.run_pgo.linux.arm.checked.mch -0.39%
benchmarks.run_tiered.linux.arm.checked.mch +0.11%
coreclr_tests.run.linux.arm.checked.mch +0.01%
libraries.pmi.linux.arm.checked.mch +0.12%
libraries_tests.run.linux.arm.Release.mch -0.05%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch +0.11%
realworld.run.linux.arm.checked.mch +0.14%

Details here


@ryujit-bot
Copy link

Diff results for #97529

Throughput diffs

Throughput diffs for windows/x86 ran on windows/x86

Overall (-1.58% to +0.11%)
Collection PDIFF
benchmarks.run.windows.x86.checked.mch -0.19%
benchmarks.run_pgo.windows.x86.checked.mch -1.58%
benchmarks.run_tiered.windows.x86.checked.mch -0.18%
coreclr_tests.run.windows.x86.checked.mch -0.14%
libraries.pmi.windows.x86.checked.mch +0.11%
libraries_tests.run.windows.x86.Release.mch -0.07%
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch -0.01%
realworld.run.windows.x86.checked.mch +0.09%
MinOpts (-0.01% to +0.01%)
Collection PDIFF
benchmarks.run_pgo.windows.x86.checked.mch +0.01%
benchmarks.run_tiered.windows.x86.checked.mch +0.01%
coreclr_tests.run.windows.x86.checked.mch -0.01%
FullOpts (-1.80% to +0.11%)
Collection PDIFF
benchmarks.run.windows.x86.checked.mch -0.19%
benchmarks.run_pgo.windows.x86.checked.mch -1.80%
benchmarks.run_tiered.windows.x86.checked.mch -0.32%
coreclr_tests.run.windows.x86.checked.mch -0.20%
libraries.pmi.windows.x86.checked.mch +0.11%
libraries_tests.run.windows.x86.Release.mch -0.12%
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch -0.01%
realworld.run.windows.x86.checked.mch +0.10%

Details here


@ryujit-bot
Copy link

Diff results for #97529

Throughput diffs

Throughput diffs for linux/arm64 ran on linux/x64

Overall (-0.36% to +0.25%)
Collection PDIFF
realworld.run.linux.arm64.checked.mch +0.13%
benchmarks.run_pgo.linux.arm64.checked.mch -0.36%
smoke_tests.nativeaot.linux.arm64.checked.mch -0.01%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch +0.19%
benchmarks.run.linux.arm64.checked.mch -0.13%
coreclr_tests.run.linux.arm64.checked.mch -0.12%
libraries.crossgen2.linux.arm64.checked.mch -0.01%
benchmarks.run_tiered.linux.arm64.checked.mch -0.15%
libraries.pmi.linux.arm64.checked.mch +0.25%
MinOpts (-0.01% to +1.09%)
Collection PDIFF
benchmarks.run_pgo.linux.arm64.checked.mch +0.01%
coreclr_tests.run.linux.arm64.checked.mch +1.09%
benchmarks.run_tiered.linux.arm64.checked.mch -0.01%
FullOpts (-0.55% to +0.25%)
Collection PDIFF
realworld.run.linux.arm64.checked.mch +0.13%
benchmarks.run_pgo.linux.arm64.checked.mch -0.55%
smoke_tests.nativeaot.linux.arm64.checked.mch -0.01%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch +0.19%
benchmarks.run.linux.arm64.checked.mch -0.13%
libraries_tests.run.linux.arm64.Release.mch -0.01%
coreclr_tests.run.linux.arm64.checked.mch -0.12%
libraries.crossgen2.linux.arm64.checked.mch -0.01%
benchmarks.run_tiered.linux.arm64.checked.mch -0.46%
libraries.pmi.linux.arm64.checked.mch +0.25%

Throughput diffs for linux/x64 ran on linux/x64

Overall (-0.21% to +0.20%)
Collection PDIFF
libraries_tests.run.linux.x64.Release.mch +0.05%
benchmarks.run_tiered.linux.x64.checked.mch -0.09%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch +0.20%
libraries.crossgen2.linux.x64.checked.mch +0.01%
libraries.pmi.linux.x64.checked.mch +0.20%
benchmarks.run.linux.x64.checked.mch -0.19%
coreclr_tests.run.linux.x64.checked.mch -0.21%
benchmarks.run_pgo.linux.x64.checked.mch -0.11%
realworld.run.linux.x64.checked.mch +0.15%
MinOpts (0.00% to +0.15%)
Collection PDIFF
libraries_tests.run.linux.x64.Release.mch +0.03%
benchmarks.run_tiered.linux.x64.checked.mch +0.11%
benchmarks.run.linux.x64.checked.mch +0.06%
coreclr_tests.run.linux.x64.checked.mch +0.15%
benchmarks.run_pgo.linux.x64.checked.mch +0.05%
FullOpts (-0.44% to +0.20%)
Collection PDIFF
libraries_tests.run.linux.x64.Release.mch +0.08%
benchmarks.run_tiered.linux.x64.checked.mch -0.36%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch +0.20%
libraries.crossgen2.linux.x64.checked.mch +0.01%
libraries.pmi.linux.x64.checked.mch +0.20%
benchmarks.run.linux.x64.checked.mch -0.19%
coreclr_tests.run.linux.x64.checked.mch -0.44%
benchmarks.run_pgo.linux.x64.checked.mch -0.24%
realworld.run.linux.x64.checked.mch +0.15%

Details here


@ryujit-bot
Copy link

Diff results for #97529

Assembly diffs

Assembly diffs for linux/arm64 ran on windows/x64

Diffs are based on 95,287 contexts (40,999 MinOpts, 54,288 FullOpts).

MISSED contexts: base: 0 (0.00%), diff: 54,574 (35.48%)

Overall (+12,884 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm64.checked.mch 1,346,400 +832
benchmarks.run_pgo.linux.arm64.checked.mch 3,029,072 -380
benchmarks.run_tiered.linux.arm64.checked.mch 2,686,108 +16
coreclr_tests.run.linux.arm64.checked.mch 265,276 -32
libraries.pmi.linux.arm64.checked.mch 1,426,088 +4,784
libraries_tests.run.linux.arm64.Release.mch 2,011,980 +184
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch 1,298,624 +3,160
realworld.run.linux.arm64.checked.mch 1,975,784 +4,320
MinOpts (-512 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.arm64.checked.mch 2,177,252 -220
benchmarks.run_tiered.linux.arm64.checked.mch 2,399,152 -236
libraries_tests.run.linux.arm64.Release.mch 1,918,600 -56
FullOpts (+13,396 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm64.checked.mch 1,290,156 +832
benchmarks.run_pgo.linux.arm64.checked.mch 851,820 -160
benchmarks.run_tiered.linux.arm64.checked.mch 286,956 +252
coreclr_tests.run.linux.arm64.checked.mch 265,276 -32
libraries.pmi.linux.arm64.checked.mch 1,426,088 +4,784
libraries_tests.run.linux.arm64.Release.mch 93,380 +240
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch 1,298,624 +3,160
realworld.run.linux.arm64.checked.mch 1,961,272 +4,320

Assembly diffs for osx/arm64 ran on windows/x64

Diffs are based on 90,586 contexts (40,285 MinOpts, 50,301 FullOpts).

MISSED contexts: base: 0 (0.00%), diff: 47,361 (33.47%)

Overall (+12,056 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.osx.arm64.checked.mch 1,340,312 +884
benchmarks.run_pgo.osx.arm64.checked.mch 2,401,052 +8
benchmarks.run_tiered.osx.arm64.checked.mch 2,330,800 -192
coreclr_tests.run.osx.arm64.checked.mch 528,604 +100
libraries.pmi.osx.arm64.checked.mch 1,311,668 +3,248
libraries_tests.run.osx.arm64.Release.mch 2,054,128 -68
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch 1,296,204 +2,792
realworld.run.osx.arm64.checked.mch 2,049,968 +5,284
MinOpts (-640 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch 2,007,056 -228
benchmarks.run_tiered.osx.arm64.checked.mch 2,061,072 -352
coreclr_tests.run.osx.arm64.checked.mch 404,024 -4
libraries_tests.run.osx.arm64.Release.mch 2,038,356 -56
FullOpts (+12,696 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.osx.arm64.checked.mch 1,339,888 +884
benchmarks.run_pgo.osx.arm64.checked.mch 393,996 +236
benchmarks.run_tiered.osx.arm64.checked.mch 269,728 +160
coreclr_tests.run.osx.arm64.checked.mch 124,580 +104
libraries.pmi.osx.arm64.checked.mch 1,310,832 +3,248
libraries_tests.run.osx.arm64.Release.mch 15,772 -12
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch 1,296,204 +2,792
realworld.run.osx.arm64.checked.mch 2,049,868 +5,284

Assembly diffs for windows/arm64 ran on windows/x64

Diffs are based on 95,065 contexts (36,507 MinOpts, 58,558 FullOpts).

MISSED contexts: base: 2 (0.00%), diff: 54,513 (35.50%)

Overall (+10,872 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.arm64.checked.mch 1,133,696 +836
benchmarks.run_pgo.windows.arm64.checked.mch 2,273,500 -680
benchmarks.run_tiered.windows.arm64.checked.mch 2,189,152 +216
coreclr_tests.run.windows.arm64.checked.mch 275,388 +20
libraries.pmi.windows.arm64.checked.mch 1,249,004 +2,720
libraries_tests.run.windows.arm64.Release.mch 2,089,172 +328
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch 1,240,428 +3,080
realworld.run.windows.arm64.checked.mch 1,943,440 +4,352
MinOpts (-248 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch 1,757,772 -96
benchmarks.run_tiered.windows.arm64.checked.mch 1,926,004 -96
libraries_tests.run.windows.arm64.Release.mch 2,005,008 -56
FullOpts (+11,120 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.arm64.checked.mch 1,133,548 +836
benchmarks.run_pgo.windows.arm64.checked.mch 515,728 -584
benchmarks.run_tiered.windows.arm64.checked.mch 263,148 +312
coreclr_tests.run.windows.arm64.checked.mch 275,388 +20
libraries.pmi.windows.arm64.checked.mch 1,249,004 +2,720
libraries_tests.run.windows.arm64.Release.mch 84,164 +384
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch 1,240,428 +3,080
realworld.run.windows.arm64.checked.mch 1,943,340 +4,352

Details here


Assembly diffs for linux/arm ran on windows/x86

Diffs are based on 104,582 contexts (34,422 MinOpts, 70,160 FullOpts).

MISSED contexts: base: 2,785 (1.74%), diff: 52,364 (32.62%)

Overall (+7,880 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm.checked.mch 1,221,696 +798
benchmarks.run_pgo.linux.arm.checked.mch 2,429,618 -5,282
benchmarks.run_tiered.linux.arm.checked.mch 2,096,812 +492
coreclr_tests.run.linux.arm.checked.mch 405,476 +218
libraries.pmi.linux.arm.checked.mch 1,144,640 +4,704
libraries_tests.run.linux.arm.Release.mch 939,238 +810
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch 894,282 +2,676
realworld.run.linux.arm.checked.mch 3,364,120 +3,464
MinOpts (-226 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.arm.checked.mch 1,196,190 -152
benchmarks.run_tiered.linux.arm.checked.mch 1,501,706 -126
coreclr_tests.run.linux.arm.checked.mch 295,394 +92
libraries_tests.run.linux.arm.Release.mch 752,254 -40
FullOpts (+8,106 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm.checked.mch 1,143,408 +798
benchmarks.run_pgo.linux.arm.checked.mch 1,233,428 -5,130
benchmarks.run_tiered.linux.arm.checked.mch 595,106 +618
coreclr_tests.run.linux.arm.checked.mch 110,082 +126
libraries.pmi.linux.arm.checked.mch 1,144,640 +4,704
libraries_tests.run.linux.arm.Release.mch 186,984 +850
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch 894,282 +2,676
realworld.run.linux.arm.checked.mch 3,354,282 +3,464

Assembly diffs for windows/x86 ran on windows/x86

Diffs are based on 64,348 contexts (22,203 MinOpts, 42,145 FullOpts).

MISSED contexts: base: 3 (0.00%), diff: 74,344 (52.26%)

Overall (+6,474 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.x86.checked.mch 378,560 +506
benchmarks.run_pgo.windows.x86.checked.mch 841,834 -1,320
benchmarks.run_tiered.windows.x86.checked.mch 777,492 +343
coreclr_tests.run.windows.x86.checked.mch 88,890 -11
libraries.pmi.windows.x86.checked.mch 1,533,349 +3,178
libraries_tests.run.windows.x86.Release.mch 796,580 +860
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch 359,330 +1,657
realworld.run.windows.x86.checked.mch 559,958 +1,261
MinOpts (-42 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_tiered.windows.x86.checked.mch 571,759 -8
libraries_tests.run.windows.x86.Release.mch 703,554 -34
FullOpts (+6,516 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.x86.checked.mch 378,435 +506
benchmarks.run_pgo.windows.x86.checked.mch 334,595 -1,320
benchmarks.run_tiered.windows.x86.checked.mch 205,733 +351
coreclr_tests.run.windows.x86.checked.mch 88,890 -11
libraries.pmi.windows.x86.checked.mch 1,533,349 +3,178
libraries_tests.run.windows.x86.Release.mch 93,026 +894
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch 359,330 +1,657
realworld.run.windows.x86.checked.mch 559,901 +1,261

Details here


Throughput diffs

Throughput diffs for linux/arm64 ran on windows/x64

Warning: Different compilers used for base and diff JITs. Results may be misleading.
Base JIT's compiler: MSVC 193933218
Diff JIT's compiler: MSVC 193933321

Overall (-0.58% to +0.07%)
Collection PDIFF
benchmarks.run.linux.arm64.checked.mch -0.01%
benchmarks.run_pgo.linux.arm64.checked.mch -0.58%
benchmarks.run_tiered.linux.arm64.checked.mch -0.04%
coreclr_tests.run.linux.arm64.checked.mch -0.05%
libraries.crossgen2.linux.arm64.checked.mch -0.22%
libraries.pmi.linux.arm64.checked.mch +0.07%
libraries_tests.run.linux.arm64.Release.mch -0.06%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch +0.05%
realworld.run.linux.arm64.checked.mch +0.07%
smoke_tests.nativeaot.linux.arm64.checked.mch -0.02%
FullOpts (-0.67% to +0.07%)
Collection PDIFF
benchmarks.run.linux.arm64.checked.mch -0.01%
benchmarks.run_pgo.linux.arm64.checked.mch -0.67%
benchmarks.run_tiered.linux.arm64.checked.mch -0.11%
coreclr_tests.run.linux.arm64.checked.mch -0.11%
libraries.crossgen2.linux.arm64.checked.mch -0.22%
libraries.pmi.linux.arm64.checked.mch +0.07%
libraries_tests.run.linux.arm64.Release.mch -0.10%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch +0.05%
realworld.run.linux.arm64.checked.mch +0.07%
smoke_tests.nativeaot.linux.arm64.checked.mch -0.02%

Throughput diffs for linux/x64 ran on windows/x64

Warning: Different compilers used for base and diff JITs. Results may be misleading.
Base JIT's compiler: MSVC 193933218
Diff JIT's compiler: MSVC 193933321

Overall (-0.55% to +0.55%)
Collection PDIFF
benchmarks.run.linux.x64.checked.mch -0.07%
benchmarks.run_pgo.linux.x64.checked.mch -0.55%
benchmarks.run_tiered.linux.x64.checked.mch -0.01%
coreclr_tests.run.linux.x64.checked.mch +0.55%
libraries.crossgen2.linux.x64.checked.mch -0.01%
libraries.pmi.linux.x64.checked.mch +0.08%
libraries_tests.run.linux.x64.Release.mch -0.05%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch +0.20%
realworld.run.linux.x64.checked.mch +0.12%
MinOpts (-0.01% to +0.23%)
Collection PDIFF
benchmarks.run_pgo.linux.x64.checked.mch +0.02%
benchmarks.run_tiered.linux.x64.checked.mch +0.01%
coreclr_tests.run.linux.x64.checked.mch +0.23%
libraries_tests.run.linux.x64.Release.mch +0.02%
smoke_tests.nativeaot.linux.x64.checked.mch -0.01%
FullOpts (-0.63% to +0.73%)
Collection PDIFF
benchmarks.run.linux.x64.checked.mch -0.07%
benchmarks.run_pgo.linux.x64.checked.mch -0.63%
benchmarks.run_tiered.linux.x64.checked.mch -0.05%
coreclr_tests.run.linux.x64.checked.mch +0.73%
libraries.crossgen2.linux.x64.checked.mch -0.01%
libraries.pmi.linux.x64.checked.mch +0.08%
libraries_tests.run.linux.x64.Release.mch -0.09%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch +0.20%
realworld.run.linux.x64.checked.mch +0.13%

Throughput diffs for osx/arm64 ran on windows/x64

Warning: Different compilers used for base and diff JITs. Results may be misleading.
Base JIT's compiler: MSVC 193933218
Diff JIT's compiler: MSVC 193933321

Overall (-0.46% to +0.06%)
Collection PDIFF
benchmarks.run.osx.arm64.checked.mch -0.03%
benchmarks.run_pgo.osx.arm64.checked.mch -0.46%
benchmarks.run_tiered.osx.arm64.checked.mch -0.10%
coreclr_tests.run.osx.arm64.checked.mch -0.05%
libraries.crossgen2.osx.arm64.checked.mch -0.02%
libraries.pmi.osx.arm64.checked.mch +0.03%
libraries_tests.run.osx.arm64.Release.mch -0.09%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch +0.04%
realworld.run.osx.arm64.checked.mch +0.06%
FullOpts (-0.59% to +0.07%)
Collection PDIFF
benchmarks.run.osx.arm64.checked.mch -0.03%
benchmarks.run_pgo.osx.arm64.checked.mch -0.59%
benchmarks.run_tiered.osx.arm64.checked.mch -0.26%
coreclr_tests.run.osx.arm64.checked.mch -0.14%
libraries.crossgen2.osx.arm64.checked.mch -0.02%
libraries.pmi.osx.arm64.checked.mch +0.03%
libraries_tests.run.osx.arm64.Release.mch -0.17%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch +0.04%
realworld.run.osx.arm64.checked.mch +0.07%

Throughput diffs for windows/arm64 ran on windows/x64

Warning: Different compilers used for base and diff JITs. Results may be misleading.
Base JIT's compiler: MSVC 193933218
Diff JIT's compiler: MSVC 193933321

Overall (-0.78% to +0.06%)
Collection PDIFF
benchmarks.run.windows.arm64.checked.mch -0.02%
benchmarks.run_pgo.windows.arm64.checked.mch -0.78%
benchmarks.run_tiered.windows.arm64.checked.mch -0.07%
coreclr_tests.run.windows.arm64.checked.mch -0.05%
libraries.crossgen2.windows.arm64.checked.mch -0.02%
libraries.pmi.windows.arm64.checked.mch +0.06%
libraries_tests.run.windows.arm64.Release.mch -0.07%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch +0.04%
realworld.run.windows.arm64.checked.mch +0.06%
smoke_tests.nativeaot.windows.arm64.checked.mch -0.02%
MinOpts (-0.01% to +0.00%)
Collection PDIFF
coreclr_tests.run.windows.arm64.checked.mch -0.01%
FullOpts (-0.95% to +0.07%)
Collection PDIFF
benchmarks.run.windows.arm64.checked.mch -0.02%
benchmarks.run_pgo.windows.arm64.checked.mch -0.95%
benchmarks.run_tiered.windows.arm64.checked.mch -0.16%
coreclr_tests.run.windows.arm64.checked.mch -0.12%
libraries.crossgen2.windows.arm64.checked.mch -0.02%
libraries.pmi.windows.arm64.checked.mch +0.06%
libraries_tests.run.windows.arm64.Release.mch -0.13%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch +0.04%
realworld.run.windows.arm64.checked.mch +0.07%
smoke_tests.nativeaot.windows.arm64.checked.mch -0.02%

Throughput diffs for windows/x64 ran on windows/x64

Warning: Different compilers used for base and diff JITs. Results may be misleading.
Base JIT's compiler: MSVC 193933218
Diff JIT's compiler: MSVC 193933321

Overall (-11.46% to -0.39%)
Collection PDIFF
aspnet.run.windows.x64.checked.mch -0.54%
benchmarks.run.windows.x64.checked.mch -1.24%
benchmarks.run_pgo.windows.x64.checked.mch -0.39%
benchmarks.run_tiered.windows.x64.checked.mch -0.50%
coreclr_tests.run.windows.x64.checked.mch -1.24%
libraries.crossgen2.windows.x64.checked.mch -11.46%
libraries.pmi.windows.x64.checked.mch -1.94%
libraries_tests.run.windows.x64.Release.mch -2.04%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch -2.29%
realworld.run.windows.x64.checked.mch -0.63%
smoke_tests.nativeaot.windows.x64.checked.mch -2.13%
MinOpts (-9.46% to +0.00%)
Collection PDIFF
aspnet.run.windows.x64.checked.mch -1.31%
benchmarks.run_pgo.windows.x64.checked.mch -0.96%
benchmarks.run_tiered.windows.x64.checked.mch -0.74%
coreclr_tests.run.windows.x64.checked.mch -3.65%
libraries_tests.run.windows.x64.Release.mch -1.49%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch -9.46%
smoke_tests.nativeaot.windows.x64.checked.mch -0.01%
FullOpts (-11.46% to +0.34%)
Collection PDIFF
aspnet.run.windows.x64.checked.mch -0.37%
benchmarks.run.windows.x64.checked.mch -1.24%
benchmarks.run_pgo.windows.x64.checked.mch -0.32%
benchmarks.run_tiered.windows.x64.checked.mch -0.24%
coreclr_tests.run.windows.x64.checked.mch +0.34%
libraries.crossgen2.windows.x64.checked.mch -11.46%
libraries.pmi.windows.x64.checked.mch -1.94%
libraries_tests.run.windows.x64.Release.mch -2.42%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch -2.26%
realworld.run.windows.x64.checked.mch -0.64%
smoke_tests.nativeaot.windows.x64.checked.mch -2.13%

Details here


Throughput diffs for linux/arm64 ran on linux/x64

Overall (-0.36% to +0.25%)
Collection PDIFF
libraries.crossgen2.linux.arm64.checked.mch -0.01%
benchmarks.run_tiered.linux.arm64.checked.mch -0.15%
smoke_tests.nativeaot.linux.arm64.checked.mch -0.01%
benchmarks.run_pgo.linux.arm64.checked.mch -0.36%
benchmarks.run.linux.arm64.checked.mch -0.13%
libraries.pmi.linux.arm64.checked.mch +0.25%
realworld.run.linux.arm64.checked.mch +0.13%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch +0.19%
coreclr_tests.run.linux.arm64.checked.mch -0.12%
MinOpts (-0.01% to +1.09%)
Collection PDIFF
benchmarks.run_tiered.linux.arm64.checked.mch -0.01%
benchmarks.run_pgo.linux.arm64.checked.mch +0.01%
coreclr_tests.run.linux.arm64.checked.mch +1.09%
FullOpts (-0.55% to +0.25%)
Collection PDIFF
libraries.crossgen2.linux.arm64.checked.mch -0.01%
benchmarks.run_tiered.linux.arm64.checked.mch -0.46%
smoke_tests.nativeaot.linux.arm64.checked.mch -0.01%
benchmarks.run_pgo.linux.arm64.checked.mch -0.55%
benchmarks.run.linux.arm64.checked.mch -0.13%
libraries_tests.run.linux.arm64.Release.mch -0.01%
libraries.pmi.linux.arm64.checked.mch +0.25%
realworld.run.linux.arm64.checked.mch +0.13%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch +0.19%
coreclr_tests.run.linux.arm64.checked.mch -0.12%

Throughput diffs for linux/x64 ran on linux/x64

Overall (-0.21% to +0.20%)
Collection PDIFF
benchmarks.run.linux.x64.checked.mch -0.19%
coreclr_tests.run.linux.x64.checked.mch -0.21%
libraries_tests.run.linux.x64.Release.mch +0.05%
libraries.crossgen2.linux.x64.checked.mch +0.01%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch +0.20%
realworld.run.linux.x64.checked.mch +0.15%
benchmarks.run_tiered.linux.x64.checked.mch -0.09%
benchmarks.run_pgo.linux.x64.checked.mch -0.11%
libraries.pmi.linux.x64.checked.mch +0.20%
MinOpts (0.00% to +0.15%)
Collection PDIFF
benchmarks.run.linux.x64.checked.mch +0.06%
coreclr_tests.run.linux.x64.checked.mch +0.15%
libraries_tests.run.linux.x64.Release.mch +0.03%
benchmarks.run_tiered.linux.x64.checked.mch +0.11%
benchmarks.run_pgo.linux.x64.checked.mch +0.05%
FullOpts (-0.44% to +0.20%)
Collection PDIFF
benchmarks.run.linux.x64.checked.mch -0.19%
coreclr_tests.run.linux.x64.checked.mch -0.44%
libraries_tests.run.linux.x64.Release.mch +0.08%
libraries.crossgen2.linux.x64.checked.mch +0.01%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch +0.20%
realworld.run.linux.x64.checked.mch +0.15%
benchmarks.run_tiered.linux.x64.checked.mch -0.36%
benchmarks.run_pgo.linux.x64.checked.mch -0.24%
libraries.pmi.linux.x64.checked.mch +0.20%

Details here


@ryujit-bot
Copy link

Diff results for #97529

Assembly diffs

Assembly diffs for linux/arm64 ran on windows/x64

Diffs are based on 95,287 contexts (40,999 MinOpts, 54,288 FullOpts).

MISSED contexts: base: 0 (0.00%), diff: 54,574 (35.48%)

Overall (+12,884 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm64.checked.mch 1,346,400 +832
benchmarks.run_pgo.linux.arm64.checked.mch 3,029,072 -380
benchmarks.run_tiered.linux.arm64.checked.mch 2,686,108 +16
coreclr_tests.run.linux.arm64.checked.mch 265,276 -32
libraries.pmi.linux.arm64.checked.mch 1,426,088 +4,784
libraries_tests.run.linux.arm64.Release.mch 2,011,980 +184
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch 1,298,624 +3,160
realworld.run.linux.arm64.checked.mch 1,975,784 +4,320
MinOpts (-512 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.arm64.checked.mch 2,177,252 -220
benchmarks.run_tiered.linux.arm64.checked.mch 2,399,152 -236
libraries_tests.run.linux.arm64.Release.mch 1,918,600 -56
FullOpts (+13,396 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm64.checked.mch 1,290,156 +832
benchmarks.run_pgo.linux.arm64.checked.mch 851,820 -160
benchmarks.run_tiered.linux.arm64.checked.mch 286,956 +252
coreclr_tests.run.linux.arm64.checked.mch 265,276 -32
libraries.pmi.linux.arm64.checked.mch 1,426,088 +4,784
libraries_tests.run.linux.arm64.Release.mch 93,380 +240
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch 1,298,624 +3,160
realworld.run.linux.arm64.checked.mch 1,961,272 +4,320

Assembly diffs for osx/arm64 ran on windows/x64

Diffs are based on 90,586 contexts (40,285 MinOpts, 50,301 FullOpts).

MISSED contexts: base: 0 (0.00%), diff: 47,361 (33.47%)

Overall (+12,056 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.osx.arm64.checked.mch 1,340,312 +884
benchmarks.run_pgo.osx.arm64.checked.mch 2,401,052 +8
benchmarks.run_tiered.osx.arm64.checked.mch 2,330,800 -192
coreclr_tests.run.osx.arm64.checked.mch 528,604 +100
libraries.pmi.osx.arm64.checked.mch 1,311,668 +3,248
libraries_tests.run.osx.arm64.Release.mch 2,054,128 -68
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch 1,296,204 +2,792
realworld.run.osx.arm64.checked.mch 2,049,968 +5,284
MinOpts (-640 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch 2,007,056 -228
benchmarks.run_tiered.osx.arm64.checked.mch 2,061,072 -352
coreclr_tests.run.osx.arm64.checked.mch 404,024 -4
libraries_tests.run.osx.arm64.Release.mch 2,038,356 -56
FullOpts (+12,696 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.osx.arm64.checked.mch 1,339,888 +884
benchmarks.run_pgo.osx.arm64.checked.mch 393,996 +236
benchmarks.run_tiered.osx.arm64.checked.mch 269,728 +160
coreclr_tests.run.osx.arm64.checked.mch 124,580 +104
libraries.pmi.osx.arm64.checked.mch 1,310,832 +3,248
libraries_tests.run.osx.arm64.Release.mch 15,772 -12
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch 1,296,204 +2,792
realworld.run.osx.arm64.checked.mch 2,049,868 +5,284

Assembly diffs for windows/arm64 ran on windows/x64

Diffs are based on 95,065 contexts (36,507 MinOpts, 58,558 FullOpts).

MISSED contexts: base: 2 (0.00%), diff: 54,513 (35.50%)

Overall (+10,872 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.arm64.checked.mch 1,133,696 +836
benchmarks.run_pgo.windows.arm64.checked.mch 2,273,500 -680
benchmarks.run_tiered.windows.arm64.checked.mch 2,189,152 +216
coreclr_tests.run.windows.arm64.checked.mch 275,388 +20
libraries.pmi.windows.arm64.checked.mch 1,249,004 +2,720
libraries_tests.run.windows.arm64.Release.mch 2,089,172 +328
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch 1,240,428 +3,080
realworld.run.windows.arm64.checked.mch 1,943,440 +4,352
MinOpts (-248 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch 1,757,772 -96
benchmarks.run_tiered.windows.arm64.checked.mch 1,926,004 -96
libraries_tests.run.windows.arm64.Release.mch 2,005,008 -56
FullOpts (+11,120 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.arm64.checked.mch 1,133,548 +836
benchmarks.run_pgo.windows.arm64.checked.mch 515,728 -584
benchmarks.run_tiered.windows.arm64.checked.mch 263,148 +312
coreclr_tests.run.windows.arm64.checked.mch 275,388 +20
libraries.pmi.windows.arm64.checked.mch 1,249,004 +2,720
libraries_tests.run.windows.arm64.Release.mch 84,164 +384
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch 1,240,428 +3,080
realworld.run.windows.arm64.checked.mch 1,943,340 +4,352

Details here


Assembly diffs for linux/arm ran on windows/x86

Diffs are based on 104,582 contexts (34,422 MinOpts, 70,160 FullOpts).

MISSED contexts: base: 2,785 (1.74%), diff: 52,364 (32.62%)

Overall (+7,880 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm.checked.mch 1,221,696 +798
benchmarks.run_pgo.linux.arm.checked.mch 2,429,618 -5,282
benchmarks.run_tiered.linux.arm.checked.mch 2,096,812 +492
coreclr_tests.run.linux.arm.checked.mch 405,476 +218
libraries.pmi.linux.arm.checked.mch 1,144,640 +4,704
libraries_tests.run.linux.arm.Release.mch 939,238 +810
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch 894,282 +2,676
realworld.run.linux.arm.checked.mch 3,364,120 +3,464
MinOpts (-226 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.arm.checked.mch 1,196,190 -152
benchmarks.run_tiered.linux.arm.checked.mch 1,501,706 -126
coreclr_tests.run.linux.arm.checked.mch 295,394 +92
libraries_tests.run.linux.arm.Release.mch 752,254 -40
FullOpts (+8,106 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm.checked.mch 1,143,408 +798
benchmarks.run_pgo.linux.arm.checked.mch 1,233,428 -5,130
benchmarks.run_tiered.linux.arm.checked.mch 595,106 +618
coreclr_tests.run.linux.arm.checked.mch 110,082 +126
libraries.pmi.linux.arm.checked.mch 1,144,640 +4,704
libraries_tests.run.linux.arm.Release.mch 186,984 +850
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch 894,282 +2,676
realworld.run.linux.arm.checked.mch 3,354,282 +3,464

Assembly diffs for windows/x86 ran on windows/x86

Diffs are based on 64,348 contexts (22,203 MinOpts, 42,145 FullOpts).

MISSED contexts: base: 3 (0.00%), diff: 74,344 (52.26%)

Overall (+6,474 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.x86.checked.mch 378,560 +506
benchmarks.run_pgo.windows.x86.checked.mch 841,834 -1,320
benchmarks.run_tiered.windows.x86.checked.mch 777,492 +343
coreclr_tests.run.windows.x86.checked.mch 88,890 -11
libraries.pmi.windows.x86.checked.mch 1,533,349 +3,178
libraries_tests.run.windows.x86.Release.mch 796,580 +860
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch 359,330 +1,657
realworld.run.windows.x86.checked.mch 559,958 +1,261
MinOpts (-42 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_tiered.windows.x86.checked.mch 571,759 -8
libraries_tests.run.windows.x86.Release.mch 703,554 -34
FullOpts (+6,516 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.x86.checked.mch 378,435 +506
benchmarks.run_pgo.windows.x86.checked.mch 334,595 -1,320
benchmarks.run_tiered.windows.x86.checked.mch 205,733 +351
coreclr_tests.run.windows.x86.checked.mch 88,890 -11
libraries.pmi.windows.x86.checked.mch 1,533,349 +3,178
libraries_tests.run.windows.x86.Release.mch 93,026 +894
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch 359,330 +1,657
realworld.run.windows.x86.checked.mch 559,901 +1,261

Details here


Throughput diffs

Throughput diffs for linux/arm64 ran on windows/x64

Warning: Different compilers used for base and diff JITs. Results may be misleading.
Base JIT's compiler: MSVC 193933218
Diff JIT's compiler: MSVC 193933321

Overall (-0.58% to +0.07%)
Collection PDIFF
benchmarks.run.linux.arm64.checked.mch -0.01%
benchmarks.run_pgo.linux.arm64.checked.mch -0.58%
benchmarks.run_tiered.linux.arm64.checked.mch -0.04%
coreclr_tests.run.linux.arm64.checked.mch -0.05%
libraries.crossgen2.linux.arm64.checked.mch -0.22%
libraries.pmi.linux.arm64.checked.mch +0.07%
libraries_tests.run.linux.arm64.Release.mch -0.06%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch +0.05%
realworld.run.linux.arm64.checked.mch +0.07%
smoke_tests.nativeaot.linux.arm64.checked.mch -0.02%
FullOpts (-0.67% to +0.07%)
Collection PDIFF
benchmarks.run.linux.arm64.checked.mch -0.01%
benchmarks.run_pgo.linux.arm64.checked.mch -0.67%
benchmarks.run_tiered.linux.arm64.checked.mch -0.11%
coreclr_tests.run.linux.arm64.checked.mch -0.11%
libraries.crossgen2.linux.arm64.checked.mch -0.22%
libraries.pmi.linux.arm64.checked.mch +0.07%
libraries_tests.run.linux.arm64.Release.mch -0.10%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch +0.05%
realworld.run.linux.arm64.checked.mch +0.07%
smoke_tests.nativeaot.linux.arm64.checked.mch -0.02%

Throughput diffs for linux/x64 ran on windows/x64

Warning: Different compilers used for base and diff JITs. Results may be misleading.
Base JIT's compiler: MSVC 193933218
Diff JIT's compiler: MSVC 193933321

Overall (-0.55% to +0.55%)
Collection PDIFF
benchmarks.run.linux.x64.checked.mch -0.07%
benchmarks.run_pgo.linux.x64.checked.mch -0.55%
benchmarks.run_tiered.linux.x64.checked.mch -0.01%
coreclr_tests.run.linux.x64.checked.mch +0.55%
libraries.crossgen2.linux.x64.checked.mch -0.01%
libraries.pmi.linux.x64.checked.mch +0.08%
libraries_tests.run.linux.x64.Release.mch -0.05%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch +0.20%
realworld.run.linux.x64.checked.mch +0.12%
MinOpts (-0.01% to +0.23%)
Collection PDIFF
benchmarks.run_pgo.linux.x64.checked.mch +0.02%
benchmarks.run_tiered.linux.x64.checked.mch +0.01%
coreclr_tests.run.linux.x64.checked.mch +0.23%
libraries_tests.run.linux.x64.Release.mch +0.02%
smoke_tests.nativeaot.linux.x64.checked.mch -0.01%
FullOpts (-0.63% to +0.73%)
Collection PDIFF
benchmarks.run.linux.x64.checked.mch -0.07%
benchmarks.run_pgo.linux.x64.checked.mch -0.63%
benchmarks.run_tiered.linux.x64.checked.mch -0.05%
coreclr_tests.run.linux.x64.checked.mch +0.73%
libraries.crossgen2.linux.x64.checked.mch -0.01%
libraries.pmi.linux.x64.checked.mch +0.08%
libraries_tests.run.linux.x64.Release.mch -0.09%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch +0.20%
realworld.run.linux.x64.checked.mch +0.13%

Throughput diffs for osx/arm64 ran on windows/x64

Warning: Different compilers used for base and diff JITs. Results may be misleading.
Base JIT's compiler: MSVC 193933218
Diff JIT's compiler: MSVC 193933321

Overall (-0.46% to +0.06%)
Collection PDIFF
benchmarks.run.osx.arm64.checked.mch -0.03%
benchmarks.run_pgo.osx.arm64.checked.mch -0.46%
benchmarks.run_tiered.osx.arm64.checked.mch -0.10%
coreclr_tests.run.osx.arm64.checked.mch -0.05%
libraries.crossgen2.osx.arm64.checked.mch -0.02%
libraries.pmi.osx.arm64.checked.mch +0.03%
libraries_tests.run.osx.arm64.Release.mch -0.09%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch +0.04%
realworld.run.osx.arm64.checked.mch +0.06%
FullOpts (-0.59% to +0.07%)
Collection PDIFF
benchmarks.run.osx.arm64.checked.mch -0.03%
benchmarks.run_pgo.osx.arm64.checked.mch -0.59%
benchmarks.run_tiered.osx.arm64.checked.mch -0.26%
coreclr_tests.run.osx.arm64.checked.mch -0.14%
libraries.crossgen2.osx.arm64.checked.mch -0.02%
libraries.pmi.osx.arm64.checked.mch +0.03%
libraries_tests.run.osx.arm64.Release.mch -0.17%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch +0.04%
realworld.run.osx.arm64.checked.mch +0.07%

Throughput diffs for windows/arm64 ran on windows/x64

Warning: Different compilers used for base and diff JITs. Results may be misleading.
Base JIT's compiler: MSVC 193933218
Diff JIT's compiler: MSVC 193933321

Overall (-0.78% to +0.06%)
Collection PDIFF
benchmarks.run.windows.arm64.checked.mch -0.02%
benchmarks.run_pgo.windows.arm64.checked.mch -0.78%
benchmarks.run_tiered.windows.arm64.checked.mch -0.07%
coreclr_tests.run.windows.arm64.checked.mch -0.05%
libraries.crossgen2.windows.arm64.checked.mch -0.02%
libraries.pmi.windows.arm64.checked.mch +0.06%
libraries_tests.run.windows.arm64.Release.mch -0.07%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch +0.04%
realworld.run.windows.arm64.checked.mch +0.06%
smoke_tests.nativeaot.windows.arm64.checked.mch -0.02%
MinOpts (-0.01% to +0.00%)
Collection PDIFF
coreclr_tests.run.windows.arm64.checked.mch -0.01%
FullOpts (-0.95% to +0.07%)
Collection PDIFF
benchmarks.run.windows.arm64.checked.mch -0.02%
benchmarks.run_pgo.windows.arm64.checked.mch -0.95%
benchmarks.run_tiered.windows.arm64.checked.mch -0.16%
coreclr_tests.run.windows.arm64.checked.mch -0.12%
libraries.crossgen2.windows.arm64.checked.mch -0.02%
libraries.pmi.windows.arm64.checked.mch +0.06%
libraries_tests.run.windows.arm64.Release.mch -0.13%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch +0.04%
realworld.run.windows.arm64.checked.mch +0.07%
smoke_tests.nativeaot.windows.arm64.checked.mch -0.02%

Throughput diffs for windows/x64 ran on windows/x64

Warning: Different compilers used for base and diff JITs. Results may be misleading.
Base JIT's compiler: MSVC 193933218
Diff JIT's compiler: MSVC 193933321

Overall (-11.46% to -0.39%)
Collection PDIFF
aspnet.run.windows.x64.checked.mch -0.54%
benchmarks.run.windows.x64.checked.mch -1.24%
benchmarks.run_pgo.windows.x64.checked.mch -0.39%
benchmarks.run_tiered.windows.x64.checked.mch -0.50%
coreclr_tests.run.windows.x64.checked.mch -1.24%
libraries.crossgen2.windows.x64.checked.mch -11.46%
libraries.pmi.windows.x64.checked.mch -1.94%
libraries_tests.run.windows.x64.Release.mch -2.04%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch -2.29%
realworld.run.windows.x64.checked.mch -0.63%
smoke_tests.nativeaot.windows.x64.checked.mch -2.13%
MinOpts (-9.46% to +0.00%)
Collection PDIFF
aspnet.run.windows.x64.checked.mch -1.31%
benchmarks.run_pgo.windows.x64.checked.mch -0.96%
benchmarks.run_tiered.windows.x64.checked.mch -0.74%
coreclr_tests.run.windows.x64.checked.mch -3.65%
libraries_tests.run.windows.x64.Release.mch -1.49%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch -9.46%
smoke_tests.nativeaot.windows.x64.checked.mch -0.01%
FullOpts (-11.46% to +0.34%)
Collection PDIFF
aspnet.run.windows.x64.checked.mch -0.37%
benchmarks.run.windows.x64.checked.mch -1.24%
benchmarks.run_pgo.windows.x64.checked.mch -0.32%
benchmarks.run_tiered.windows.x64.checked.mch -0.24%
coreclr_tests.run.windows.x64.checked.mch +0.34%
libraries.crossgen2.windows.x64.checked.mch -11.46%
libraries.pmi.windows.x64.checked.mch -1.94%
libraries_tests.run.windows.x64.Release.mch -2.42%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch -2.26%
realworld.run.windows.x64.checked.mch -0.64%
smoke_tests.nativeaot.windows.x64.checked.mch -2.13%

Details here


Throughput diffs for linux/arm64 ran on linux/x64

Overall (-0.36% to +0.25%)
Collection PDIFF
libraries.crossgen2.linux.arm64.checked.mch -0.01%
benchmarks.run_tiered.linux.arm64.checked.mch -0.15%
smoke_tests.nativeaot.linux.arm64.checked.mch -0.01%
benchmarks.run_pgo.linux.arm64.checked.mch -0.36%
benchmarks.run.linux.arm64.checked.mch -0.13%
libraries.pmi.linux.arm64.checked.mch +0.25%
realworld.run.linux.arm64.checked.mch +0.13%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch +0.19%
coreclr_tests.run.linux.arm64.checked.mch -0.12%
MinOpts (-0.01% to +1.09%)
Collection PDIFF
benchmarks.run_tiered.linux.arm64.checked.mch -0.01%
benchmarks.run_pgo.linux.arm64.checked.mch +0.01%
coreclr_tests.run.linux.arm64.checked.mch +1.09%
FullOpts (-0.55% to +0.25%)
Collection PDIFF
libraries.crossgen2.linux.arm64.checked.mch -0.01%
benchmarks.run_tiered.linux.arm64.checked.mch -0.46%
smoke_tests.nativeaot.linux.arm64.checked.mch -0.01%
benchmarks.run_pgo.linux.arm64.checked.mch -0.55%
benchmarks.run.linux.arm64.checked.mch -0.13%
libraries_tests.run.linux.arm64.Release.mch -0.01%
libraries.pmi.linux.arm64.checked.mch +0.25%
realworld.run.linux.arm64.checked.mch +0.13%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch +0.19%
coreclr_tests.run.linux.arm64.checked.mch -0.12%

Throughput diffs for linux/x64 ran on linux/x64

Overall (-0.21% to +0.20%)
Collection PDIFF
benchmarks.run.linux.x64.checked.mch -0.19%
coreclr_tests.run.linux.x64.checked.mch -0.21%
libraries_tests.run.linux.x64.Release.mch +0.05%
libraries.crossgen2.linux.x64.checked.mch +0.01%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch +0.20%
realworld.run.linux.x64.checked.mch +0.15%
benchmarks.run_tiered.linux.x64.checked.mch -0.09%
benchmarks.run_pgo.linux.x64.checked.mch -0.11%
libraries.pmi.linux.x64.checked.mch +0.20%
MinOpts (0.00% to +0.15%)
Collection PDIFF
benchmarks.run.linux.x64.checked.mch +0.06%
coreclr_tests.run.linux.x64.checked.mch +0.15%
libraries_tests.run.linux.x64.Release.mch +0.03%
benchmarks.run_tiered.linux.x64.checked.mch +0.11%
benchmarks.run_pgo.linux.x64.checked.mch +0.05%
FullOpts (-0.44% to +0.20%)
Collection PDIFF
benchmarks.run.linux.x64.checked.mch -0.19%
coreclr_tests.run.linux.x64.checked.mch -0.44%
libraries_tests.run.linux.x64.Release.mch +0.08%
libraries.crossgen2.linux.x64.checked.mch +0.01%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch +0.20%
realworld.run.linux.x64.checked.mch +0.15%
benchmarks.run_tiered.linux.x64.checked.mch -0.36%
benchmarks.run_pgo.linux.x64.checked.mch -0.24%
libraries.pmi.linux.x64.checked.mch +0.20%

Details here


Throughput diffs for linux/arm ran on linux/x86

Warning: Different compilers used for base and diff JITs. Results may be misleading.
Base JIT's compiler: MSVC 193933218
Diff JIT's compiler: MSVC 193933321

Overall (-0.35% to +0.14%)
Collection PDIFF
benchmarks.run.linux.arm.checked.mch +0.07%
benchmarks.run_pgo.linux.arm.checked.mch -0.35%
benchmarks.run_tiered.linux.arm.checked.mch +0.07%
coreclr_tests.run.linux.arm.checked.mch +0.01%
libraries.pmi.linux.arm.checked.mch +0.12%
libraries_tests.run.linux.arm.Release.mch -0.03%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch +0.11%
realworld.run.linux.arm.checked.mch +0.14%
MinOpts (0.00% to +0.02%)
Collection PDIFF
benchmarks.run_pgo.linux.arm.checked.mch +0.01%
benchmarks.run_tiered.linux.arm.checked.mch +0.02%
libraries_tests.run.linux.arm.Release.mch +0.01%
FullOpts (-0.39% to +0.14%)
Collection PDIFF
benchmarks.run.linux.arm.checked.mch +0.08%
benchmarks.run_pgo.linux.arm.checked.mch -0.39%
benchmarks.run_tiered.linux.arm.checked.mch +0.11%
coreclr_tests.run.linux.arm.checked.mch +0.01%
libraries.pmi.linux.arm.checked.mch +0.12%
libraries_tests.run.linux.arm.Release.mch -0.05%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch +0.11%
realworld.run.linux.arm.checked.mch +0.14%

Details here


@ryujit-bot
Copy link

Diff results for #97529

Throughput diffs

Throughput diffs for windows/x86 ran on windows/x86

Warning: Different compilers used for base and diff JITs. Results may be misleading.
Base JIT's compiler: MSVC 193933218
Diff JIT's compiler: MSVC 193933321

Overall (-1.58% to +0.11%)
Collection PDIFF
benchmarks.run.windows.x86.checked.mch -0.19%
benchmarks.run_pgo.windows.x86.checked.mch -1.58%
benchmarks.run_tiered.windows.x86.checked.mch -0.18%
coreclr_tests.run.windows.x86.checked.mch -0.15%
libraries.pmi.windows.x86.checked.mch +0.11%
libraries_tests.run.windows.x86.Release.mch -0.07%
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch -0.01%
realworld.run.windows.x86.checked.mch +0.09%
MinOpts (-0.01% to +0.01%)
Collection PDIFF
benchmarks.run_tiered.windows.x86.checked.mch +0.01%
coreclr_tests.run.windows.x86.checked.mch -0.01%
FullOpts (-1.80% to +0.11%)
Collection PDIFF
benchmarks.run.windows.x86.checked.mch -0.19%
benchmarks.run_pgo.windows.x86.checked.mch -1.80%
benchmarks.run_tiered.windows.x86.checked.mch -0.32%
coreclr_tests.run.windows.x86.checked.mch -0.20%
libraries.pmi.windows.x86.checked.mch +0.11%
libraries_tests.run.windows.x86.Release.mch -0.12%
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch -0.01%
realworld.run.windows.x86.checked.mch +0.09%

Details here


Throughput diffs for linux/arm ran on linux/x86

Warning: Different compilers used for base and diff JITs. Results may be misleading.
Base JIT's compiler: MSVC 193933218
Diff JIT's compiler: MSVC 193933321

Overall (-0.35% to +0.14%)
Collection PDIFF
benchmarks.run.linux.arm.checked.mch +0.07%
benchmarks.run_pgo.linux.arm.checked.mch -0.35%
benchmarks.run_tiered.linux.arm.checked.mch +0.07%
coreclr_tests.run.linux.arm.checked.mch +0.01%
libraries.pmi.linux.arm.checked.mch +0.12%
libraries_tests.run.linux.arm.Release.mch -0.03%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch +0.11%
realworld.run.linux.arm.checked.mch +0.14%
MinOpts (0.00% to +0.02%)
Collection PDIFF
benchmarks.run_pgo.linux.arm.checked.mch +0.01%
benchmarks.run_tiered.linux.arm.checked.mch +0.02%
libraries_tests.run.linux.arm.Release.mch +0.01%
FullOpts (-0.39% to +0.15%)
Collection PDIFF
benchmarks.run.linux.arm.checked.mch +0.07%
benchmarks.run_pgo.linux.arm.checked.mch -0.39%
benchmarks.run_tiered.linux.arm.checked.mch +0.11%
coreclr_tests.run.linux.arm.checked.mch +0.01%
libraries.pmi.linux.arm.checked.mch +0.12%
libraries_tests.run.linux.arm.Release.mch -0.05%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch +0.11%
realworld.run.linux.arm.checked.mch +0.15%

Details here


@ryujit-bot
Copy link

Diff results for #97529

Throughput diffs

Throughput diffs for linux/arm ran on windows/x86

Warning: Different compilers used for base and diff JITs. Results may be misleading.
Base JIT's compiler: MSVC 193933218
Diff JIT's compiler: MSVC 193933321

Overall (-0.35% to +0.14%)
Collection PDIFF
benchmarks.run.linux.arm.checked.mch +0.07%
benchmarks.run_pgo.linux.arm.checked.mch -0.35%
benchmarks.run_tiered.linux.arm.checked.mch +0.07%
coreclr_tests.run.linux.arm.checked.mch +0.01%
libraries.pmi.linux.arm.checked.mch +0.12%
libraries_tests.run.linux.arm.Release.mch -0.03%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch +0.11%
realworld.run.linux.arm.checked.mch +0.14%
MinOpts (0.00% to +0.02%)
Collection PDIFF
benchmarks.run_pgo.linux.arm.checked.mch +0.01%
benchmarks.run_tiered.linux.arm.checked.mch +0.02%
libraries_tests.run.linux.arm.Release.mch +0.01%
FullOpts (-0.39% to +0.15%)
Collection PDIFF
benchmarks.run.linux.arm.checked.mch +0.07%
benchmarks.run_pgo.linux.arm.checked.mch -0.39%
benchmarks.run_tiered.linux.arm.checked.mch +0.11%
coreclr_tests.run.linux.arm.checked.mch +0.01%
libraries.pmi.linux.arm.checked.mch +0.12%
libraries_tests.run.linux.arm.Release.mch -0.05%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch +0.11%
realworld.run.linux.arm.checked.mch +0.15%

Throughput diffs for windows/x86 ran on windows/x86

Warning: Different compilers used for base and diff JITs. Results may be misleading.
Base JIT's compiler: MSVC 193933218
Diff JIT's compiler: MSVC 193933321

Overall (-1.58% to +0.11%)
Collection PDIFF
benchmarks.run.windows.x86.checked.mch -0.19%
benchmarks.run_pgo.windows.x86.checked.mch -1.58%
benchmarks.run_tiered.windows.x86.checked.mch -0.18%
coreclr_tests.run.windows.x86.checked.mch -0.15%
libraries.pmi.windows.x86.checked.mch +0.11%
libraries_tests.run.windows.x86.Release.mch -0.07%
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch -0.01%
realworld.run.windows.x86.checked.mch +0.09%
MinOpts (-0.01% to +0.01%)
Collection PDIFF
benchmarks.run_tiered.windows.x86.checked.mch +0.01%
coreclr_tests.run.windows.x86.checked.mch -0.01%
FullOpts (-1.80% to +0.11%)
Collection PDIFF
benchmarks.run.windows.x86.checked.mch -0.19%
benchmarks.run_pgo.windows.x86.checked.mch -1.80%
benchmarks.run_tiered.windows.x86.checked.mch -0.32%
coreclr_tests.run.windows.x86.checked.mch -0.20%
libraries.pmi.windows.x86.checked.mch +0.11%
libraries_tests.run.windows.x86.Release.mch -0.12%
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch -0.01%
realworld.run.windows.x86.checked.mch +0.09%

Details here


@ryujit-bot
Copy link

Diff results for #97529

Assembly diffs

Assembly diffs for linux/arm ran on windows/x86

Diffs are based on 108,959 contexts (31,685 MinOpts, 77,274 FullOpts).

MISSED contexts: base: 3,443 (1.99%), diff: 60,787 (35.10%)

Overall (+11,058 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm.checked.mch 1,121,796 +794
benchmarks.run_pgo.linux.arm.checked.mch 10,036,728 -2,712
benchmarks.run_tiered.linux.arm.checked.mch 1,965,850 +478
coreclr_tests.run.linux.arm.checked.mch 402,396 +218
libraries.pmi.linux.arm.checked.mch 1,326,876 +4,820
libraries_tests.run.linux.arm.Release.mch 1,038,666 +1,514
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch 907,522 +2,778
realworld.run.linux.arm.checked.mch 3,308,824 +3,168
MinOpts (-100 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.arm.checked.mch 3,909,502 -32
benchmarks.run_tiered.linux.arm.checked.mch 1,379,422 -126
coreclr_tests.run.linux.arm.checked.mch 293,108 +92
libraries_tests.run.linux.arm.Release.mch 246,546 -34
FullOpts (+11,158 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm.checked.mch 1,060,860 +794
benchmarks.run_pgo.linux.arm.checked.mch 6,127,226 -2,680
benchmarks.run_tiered.linux.arm.checked.mch 586,428 +604
coreclr_tests.run.linux.arm.checked.mch 109,288 +126
libraries.pmi.linux.arm.checked.mch 1,326,876 +4,820
libraries_tests.run.linux.arm.Release.mch 792,120 +1,548
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch 907,470 +2,778
realworld.run.linux.arm.checked.mch 3,299,636 +3,168

Details here


Assembly diffs for linux/arm64 ran on windows/x64

Diffs are based on 97,556 contexts (38,769 MinOpts, 58,787 FullOpts).

MISSED contexts: base: 3 (0.00%), diff: 57,529 (36.17%)

Overall (+14,796 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm64.checked.mch 1,357,636 +816
benchmarks.run_pgo.linux.arm64.checked.mch 2,918,668 -312
benchmarks.run_tiered.linux.arm64.checked.mch 2,370,440 +32
coreclr_tests.run.linux.arm64.checked.mch 228,808 -32
libraries.pmi.linux.arm64.checked.mch 1,378,968 +4,800
libraries_tests.run.linux.arm64.Release.mch 2,439,884 +1,924
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch 1,206,352 +3,256
realworld.run.linux.arm64.checked.mch 2,002,024 +4,312
MinOpts (-524 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.arm64.checked.mch 2,079,780 -344
benchmarks.run_tiered.linux.arm64.checked.mch 2,127,348 -220
libraries_tests.run.linux.arm64.Release.mch 1,955,684 +40
FullOpts (+15,320 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm64.checked.mch 1,312,688 +816
benchmarks.run_pgo.linux.arm64.checked.mch 838,888 +32
benchmarks.run_tiered.linux.arm64.checked.mch 243,092 +252
coreclr_tests.run.linux.arm64.checked.mch 228,808 -32
libraries.pmi.linux.arm64.checked.mch 1,378,968 +4,800
libraries_tests.run.linux.arm64.Release.mch 484,200 +1,884
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch 1,206,352 +3,256
realworld.run.linux.arm64.checked.mch 1,987,368 +4,312

Assembly diffs for osx/arm64 ran on windows/x64

Diffs are based on 83,914 contexts (36,117 MinOpts, 47,797 FullOpts).

MISSED contexts: base: 9 (0.01%), diff: 41,251 (32.04%)

Overall (+11,236 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.osx.arm64.checked.mch 1,324,952 +888
benchmarks.run_pgo.osx.arm64.checked.mch 2,517,880 +136
benchmarks.run_tiered.osx.arm64.checked.mch 2,370,724 -192
coreclr_tests.run.osx.arm64.checked.mch 313,876 +4
libraries.pmi.osx.arm64.checked.mch 1,291,576 +3,248
libraries_tests.run.osx.arm64.Release.mch 1,161,284 -60
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch 1,152,092 +2,524
realworld.run.osx.arm64.checked.mch 1,916,968 +4,688
MinOpts (-892 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch 2,247,820 -228
benchmarks.run_tiered.osx.arm64.checked.mch 2,119,252 -352
coreclr_tests.run.osx.arm64.checked.mch 286,796 -80
libraries_tests.run.osx.arm64.Release.mch 1,080,672 -232
FullOpts (+12,128 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.osx.arm64.checked.mch 1,324,416 +888
benchmarks.run_pgo.osx.arm64.checked.mch 270,060 +364
benchmarks.run_tiered.osx.arm64.checked.mch 251,472 +160
coreclr_tests.run.osx.arm64.checked.mch 27,080 +84
libraries.pmi.osx.arm64.checked.mch 1,290,480 +3,248
libraries_tests.run.osx.arm64.Release.mch 80,612 +172
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch 1,152,092 +2,524
realworld.run.osx.arm64.checked.mch 1,916,868 +4,688

Assembly diffs for windows/arm64 ran on windows/x64

Diffs are based on 87,579 contexts (27,614 MinOpts, 59,965 FullOpts).

MISSED contexts: base: 7 (0.00%), diff: 56,114 (38.00%)

Overall (+13,532 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.arm64.checked.mch 1,162,332 +908
benchmarks.run_pgo.windows.arm64.checked.mch 2,506,252 -856
benchmarks.run_tiered.windows.arm64.checked.mch 2,125,908 +136
coreclr_tests.run.windows.arm64.checked.mch 274,032 +28
libraries.pmi.windows.arm64.checked.mch 1,385,152 +2,660
libraries_tests.run.windows.arm64.Release.mch 689,828 +3,044
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch 1,207,948 +3,020
realworld.run.windows.arm64.checked.mch 1,993,076 +4,592
MinOpts (-496 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch 1,942,112 -220
benchmarks.run_tiered.windows.arm64.checked.mch 1,889,888 -220
libraries_tests.run.windows.arm64.Release.mch 397,544 -56
FullOpts (+14,028 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.arm64.checked.mch 1,162,232 +908
benchmarks.run_pgo.windows.arm64.checked.mch 564,140 -636
benchmarks.run_tiered.windows.arm64.checked.mch 236,020 +356
coreclr_tests.run.windows.arm64.checked.mch 274,032 +28
libraries.pmi.windows.arm64.checked.mch 1,385,152 +2,660
libraries_tests.run.windows.arm64.Release.mch 292,284 +3,100
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch 1,207,948 +3,020
realworld.run.windows.arm64.checked.mch 1,992,976 +4,592

Details here


Throughput diffs

Throughput diffs for linux/arm64 ran on windows/x64

Overall (-0.50% to +0.12%)
Collection PDIFF
benchmarks.run.linux.arm64.checked.mch +0.01%
benchmarks.run_pgo.linux.arm64.checked.mch -0.50%
benchmarks.run_tiered.linux.arm64.checked.mch -0.04%
coreclr_tests.run.linux.arm64.checked.mch -0.02%
libraries.crossgen2.linux.arm64.checked.mch -0.20%
libraries.pmi.linux.arm64.checked.mch +0.10%
libraries_tests.run.linux.arm64.Release.mch +0.12%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch +0.06%
realworld.run.linux.arm64.checked.mch +0.10%
FullOpts (-0.58% to +0.23%)
Collection PDIFF
benchmarks.run.linux.arm64.checked.mch +0.01%
benchmarks.run_pgo.linux.arm64.checked.mch -0.58%
benchmarks.run_tiered.linux.arm64.checked.mch -0.09%
coreclr_tests.run.linux.arm64.checked.mch -0.03%
libraries.crossgen2.linux.arm64.checked.mch -0.20%
libraries.pmi.linux.arm64.checked.mch +0.10%
libraries_tests.run.linux.arm64.Release.mch +0.23%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch +0.06%
realworld.run.linux.arm64.checked.mch +0.10%

Throughput diffs for linux/x64 ran on windows/x64

Overall (-0.49% to +0.70%)
Collection PDIFF
benchmarks.run.linux.x64.checked.mch -0.07%
benchmarks.run_pgo.linux.x64.checked.mch -0.49%
benchmarks.run_tiered.linux.x64.checked.mch -0.01%
coreclr_tests.run.linux.x64.checked.mch +0.70%
libraries.pmi.linux.x64.checked.mch +0.10%
libraries_tests.run.linux.x64.Release.mch +0.15%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch +0.20%
realworld.run.linux.x64.checked.mch +0.13%
smoke_tests.nativeaot.linux.x64.checked.mch +0.01%
MinOpts (0.00% to +0.07%)
Collection PDIFF
benchmarks.run_pgo.linux.x64.checked.mch +0.02%
benchmarks.run_tiered.linux.x64.checked.mch +0.02%
coreclr_tests.run.linux.x64.checked.mch +0.04%
libraries_tests.run.linux.x64.Release.mch +0.07%
FullOpts (-0.56% to +0.91%)
Collection PDIFF
benchmarks.run.linux.x64.checked.mch -0.07%
benchmarks.run_pgo.linux.x64.checked.mch -0.56%
benchmarks.run_tiered.linux.x64.checked.mch -0.06%
coreclr_tests.run.linux.x64.checked.mch +0.91%
libraries.pmi.linux.x64.checked.mch +0.10%
libraries_tests.run.linux.x64.Release.mch +0.18%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch +0.20%
realworld.run.linux.x64.checked.mch +0.13%
smoke_tests.nativeaot.linux.x64.checked.mch +0.01%

Throughput diffs for osx/arm64 ran on windows/x64

Overall (-0.20% to +0.09%)
Collection PDIFF
benchmarks.run.osx.arm64.checked.mch -0.01%
benchmarks.run_pgo.osx.arm64.checked.mch -0.20%
benchmarks.run_tiered.osx.arm64.checked.mch -0.08%
coreclr_tests.run.osx.arm64.checked.mch -0.02%
libraries.pmi.osx.arm64.checked.mch +0.07%
libraries_tests.run.osx.arm64.Release.mch +0.02%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch +0.06%
realworld.run.osx.arm64.checked.mch +0.09%
MinOpts (-0.01% to +0.01%)
Collection PDIFF
benchmarks.run_pgo.osx.arm64.checked.mch +0.01%
coreclr_tests.run.osx.arm64.checked.mch -0.01%
FullOpts (-0.29% to +0.09%)
Collection PDIFF
benchmarks.run.osx.arm64.checked.mch -0.01%
benchmarks.run_pgo.osx.arm64.checked.mch -0.29%
benchmarks.run_tiered.osx.arm64.checked.mch -0.22%
coreclr_tests.run.osx.arm64.checked.mch -0.03%
libraries.pmi.osx.arm64.checked.mch +0.07%
libraries_tests.run.osx.arm64.Release.mch +0.09%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch +0.06%
realworld.run.osx.arm64.checked.mch +0.09%

Throughput diffs for windows/arm64 ran on windows/x64

Overall (-0.80% to +0.62%)
Collection PDIFF
benchmarks.run_pgo.windows.arm64.checked.mch -0.80%
benchmarks.run_tiered.windows.arm64.checked.mch -0.06%
coreclr_tests.run.windows.arm64.checked.mch -0.02%
libraries.pmi.windows.arm64.checked.mch +0.09%
libraries_tests.run.windows.arm64.Release.mch +0.62%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch +0.06%
realworld.run.windows.arm64.checked.mch +0.09%
FullOpts (-0.99% to +0.83%)
Collection PDIFF
benchmarks.run_pgo.windows.arm64.checked.mch -0.99%
benchmarks.run_tiered.windows.arm64.checked.mch -0.15%
coreclr_tests.run.windows.arm64.checked.mch -0.04%
libraries.pmi.windows.arm64.checked.mch +0.09%
libraries_tests.run.windows.arm64.Release.mch +0.83%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch +0.06%
realworld.run.windows.arm64.checked.mch +0.09%

Throughput diffs for windows/x64 ran on windows/x64

Overall (-2.25% to +0.00%)
Collection PDIFF
aspnet.run.windows.x64.checked.mch -0.53%
benchmarks.run.windows.x64.checked.mch -1.16%
benchmarks.run_pgo.windows.x64.checked.mch -0.27%
benchmarks.run_tiered.windows.x64.checked.mch -0.60%
coreclr_tests.run.windows.x64.checked.mch -1.59%
libraries.pmi.windows.x64.checked.mch -1.76%
libraries_tests.run.windows.x64.Release.mch -0.99%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch -2.25%
realworld.run.windows.x64.checked.mch -0.59%
smoke_tests.nativeaot.windows.x64.checked.mch -2.15%
MinOpts (-13.96% to +0.00%)
Collection PDIFF
aspnet.run.windows.x64.checked.mch -1.31%
benchmarks.run_pgo.windows.x64.checked.mch -1.07%
benchmarks.run_tiered.windows.x64.checked.mch -0.83%
coreclr_tests.run.windows.x64.checked.mch -5.16%
libraries_tests.run.windows.x64.Release.mch -1.38%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch -13.96%
FullOpts (-2.22% to +0.38%)
Collection PDIFF
aspnet.run.windows.x64.checked.mch -0.36%
benchmarks.run.windows.x64.checked.mch -1.16%
benchmarks.run_pgo.windows.x64.checked.mch -0.11%
benchmarks.run_tiered.windows.x64.checked.mch -0.28%
coreclr_tests.run.windows.x64.checked.mch +0.38%
libraries.pmi.windows.x64.checked.mch -1.76%
libraries_tests.run.windows.x64.Release.mch -0.28%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch -2.22%
realworld.run.windows.x64.checked.mch -0.60%
smoke_tests.nativeaot.windows.x64.checked.mch -2.15%

Details here


Throughput diffs for linux/arm64 ran on linux/x64

Overall (-0.19% to +0.18%)
Collection PDIFF
libraries_tests.run.linux.arm64.Release.mch +0.14%
libraries.pmi.linux.arm64.checked.mch +0.17%
benchmarks.run_pgo.linux.arm64.checked.mch -0.19%
coreclr_tests.run.linux.arm64.checked.mch -0.12%
benchmarks.run.linux.arm64.checked.mch -0.10%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch +0.18%
libraries.crossgen2.linux.arm64.checked.mch -0.01%
benchmarks.run_tiered.linux.arm64.checked.mch -0.10%
realworld.run.linux.arm64.checked.mch +0.13%
MinOpts (-0.00% to +1.09%)
Collection PDIFF
coreclr_tests.run.linux.arm64.checked.mch +1.09%
benchmarks.run_tiered.linux.arm64.checked.mch +0.01%
FullOpts (-0.31% to +0.26%)
Collection PDIFF
libraries_tests.run.linux.arm64.Release.mch +0.26%
libraries.pmi.linux.arm64.checked.mch +0.17%
benchmarks.run_pgo.linux.arm64.checked.mch -0.29%
coreclr_tests.run.linux.arm64.checked.mch -0.12%
benchmarks.run.linux.arm64.checked.mch -0.10%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch +0.18%
libraries.crossgen2.linux.arm64.checked.mch -0.01%
benchmarks.run_tiered.linux.arm64.checked.mch -0.31%
realworld.run.linux.arm64.checked.mch +0.13%

Throughput diffs for linux/x64 ran on linux/x64

Overall (-0.27% to +0.54%)
Collection PDIFF
benchmarks.run_pgo.linux.x64.checked.mch -0.14%
libraries_tests.run.linux.x64.Release.mch +0.12%
benchmarks.run.linux.x64.checked.mch -0.14%
coreclr_tests.run.linux.x64.checked.mch -0.27%
benchmarks.run_tiered.linux.x64.checked.mch +0.04%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch +0.54%
libraries.pmi.linux.x64.checked.mch +0.36%
realworld.run.linux.x64.checked.mch +0.15%
MinOpts (0.00% to +0.09%)
Collection PDIFF
benchmarks.run_pgo.linux.x64.checked.mch +0.08%
libraries_tests.run.linux.x64.Release.mch +0.02%
coreclr_tests.run.linux.x64.checked.mch +0.09%
benchmarks.run_tiered.linux.x64.checked.mch +0.09%
FullOpts (-0.55% to +0.54%)
Collection PDIFF
benchmarks.run_pgo.linux.x64.checked.mch -0.24%
libraries_tests.run.linux.x64.Release.mch +0.16%
benchmarks.run.linux.x64.checked.mch -0.14%
coreclr_tests.run.linux.x64.checked.mch -0.55%
benchmarks.run_tiered.linux.x64.checked.mch -0.04%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch +0.54%
libraries.pmi.linux.x64.checked.mch +0.36%
realworld.run.linux.x64.checked.mch +0.15%

Details here


@ryujit-bot
Copy link

Diff results for #97529

Throughput diffs

Throughput diffs for linux/arm64 ran on windows/x64

Overall (-0.50% to +0.12%)
Collection PDIFF
benchmarks.run.linux.arm64.checked.mch +0.01%
benchmarks.run_pgo.linux.arm64.checked.mch -0.50%
benchmarks.run_tiered.linux.arm64.checked.mch -0.04%
coreclr_tests.run.linux.arm64.checked.mch -0.02%
libraries.crossgen2.linux.arm64.checked.mch -0.20%
libraries.pmi.linux.arm64.checked.mch +0.10%
libraries_tests.run.linux.arm64.Release.mch +0.12%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch +0.06%
realworld.run.linux.arm64.checked.mch +0.10%
FullOpts (-0.58% to +0.23%)
Collection PDIFF
benchmarks.run.linux.arm64.checked.mch +0.01%
benchmarks.run_pgo.linux.arm64.checked.mch -0.58%
benchmarks.run_tiered.linux.arm64.checked.mch -0.09%
coreclr_tests.run.linux.arm64.checked.mch -0.03%
libraries.crossgen2.linux.arm64.checked.mch -0.20%
libraries.pmi.linux.arm64.checked.mch +0.10%
libraries_tests.run.linux.arm64.Release.mch +0.23%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch +0.06%
realworld.run.linux.arm64.checked.mch +0.10%

Throughput diffs for linux/x64 ran on windows/x64

Overall (-0.49% to +0.70%)
Collection PDIFF
benchmarks.run.linux.x64.checked.mch -0.07%
benchmarks.run_pgo.linux.x64.checked.mch -0.49%
benchmarks.run_tiered.linux.x64.checked.mch -0.01%
coreclr_tests.run.linux.x64.checked.mch +0.70%
libraries.pmi.linux.x64.checked.mch +0.10%
libraries_tests.run.linux.x64.Release.mch +0.15%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch +0.20%
realworld.run.linux.x64.checked.mch +0.13%
smoke_tests.nativeaot.linux.x64.checked.mch +0.01%
MinOpts (0.00% to +0.07%)
Collection PDIFF
benchmarks.run_pgo.linux.x64.checked.mch +0.02%
benchmarks.run_tiered.linux.x64.checked.mch +0.02%
coreclr_tests.run.linux.x64.checked.mch +0.04%
libraries_tests.run.linux.x64.Release.mch +0.07%
FullOpts (-0.56% to +0.91%)
Collection PDIFF
benchmarks.run.linux.x64.checked.mch -0.07%
benchmarks.run_pgo.linux.x64.checked.mch -0.56%
benchmarks.run_tiered.linux.x64.checked.mch -0.06%
coreclr_tests.run.linux.x64.checked.mch +0.91%
libraries.pmi.linux.x64.checked.mch +0.10%
libraries_tests.run.linux.x64.Release.mch +0.18%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch +0.20%
realworld.run.linux.x64.checked.mch +0.13%
smoke_tests.nativeaot.linux.x64.checked.mch +0.01%

Throughput diffs for osx/arm64 ran on windows/x64

Overall (-0.20% to +0.09%)
Collection PDIFF
benchmarks.run.osx.arm64.checked.mch -0.01%
benchmarks.run_pgo.osx.arm64.checked.mch -0.20%
benchmarks.run_tiered.osx.arm64.checked.mch -0.08%
coreclr_tests.run.osx.arm64.checked.mch -0.02%
libraries.pmi.osx.arm64.checked.mch +0.07%
libraries_tests.run.osx.arm64.Release.mch +0.02%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch +0.06%
realworld.run.osx.arm64.checked.mch +0.09%
MinOpts (-0.01% to +0.01%)
Collection PDIFF
benchmarks.run_pgo.osx.arm64.checked.mch +0.01%
coreclr_tests.run.osx.arm64.checked.mch -0.01%
FullOpts (-0.29% to +0.09%)
Collection PDIFF
benchmarks.run.osx.arm64.checked.mch -0.01%
benchmarks.run_pgo.osx.arm64.checked.mch -0.29%
benchmarks.run_tiered.osx.arm64.checked.mch -0.22%
coreclr_tests.run.osx.arm64.checked.mch -0.03%
libraries.pmi.osx.arm64.checked.mch +0.07%
libraries_tests.run.osx.arm64.Release.mch +0.09%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch +0.06%
realworld.run.osx.arm64.checked.mch +0.09%

Throughput diffs for windows/arm64 ran on windows/x64

Overall (-0.80% to +0.62%)
Collection PDIFF
benchmarks.run_pgo.windows.arm64.checked.mch -0.80%
benchmarks.run_tiered.windows.arm64.checked.mch -0.06%
coreclr_tests.run.windows.arm64.checked.mch -0.02%
libraries.pmi.windows.arm64.checked.mch +0.09%
libraries_tests.run.windows.arm64.Release.mch +0.62%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch +0.06%
realworld.run.windows.arm64.checked.mch +0.09%
FullOpts (-0.99% to +0.83%)
Collection PDIFF
benchmarks.run_pgo.windows.arm64.checked.mch -0.99%
benchmarks.run_tiered.windows.arm64.checked.mch -0.15%
coreclr_tests.run.windows.arm64.checked.mch -0.04%
libraries.pmi.windows.arm64.checked.mch +0.09%
libraries_tests.run.windows.arm64.Release.mch +0.83%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch +0.06%
realworld.run.windows.arm64.checked.mch +0.09%

Throughput diffs for windows/x64 ran on windows/x64

Overall (-2.25% to +0.00%)
Collection PDIFF
aspnet.run.windows.x64.checked.mch -0.53%
benchmarks.run.windows.x64.checked.mch -1.16%
benchmarks.run_pgo.windows.x64.checked.mch -0.27%
benchmarks.run_tiered.windows.x64.checked.mch -0.60%
coreclr_tests.run.windows.x64.checked.mch -1.59%
libraries.pmi.windows.x64.checked.mch -1.76%
libraries_tests.run.windows.x64.Release.mch -0.99%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch -2.25%
realworld.run.windows.x64.checked.mch -0.59%
smoke_tests.nativeaot.windows.x64.checked.mch -2.15%
MinOpts (-13.96% to +0.00%)
Collection PDIFF
aspnet.run.windows.x64.checked.mch -1.31%
benchmarks.run_pgo.windows.x64.checked.mch -1.07%
benchmarks.run_tiered.windows.x64.checked.mch -0.83%
coreclr_tests.run.windows.x64.checked.mch -5.16%
libraries_tests.run.windows.x64.Release.mch -1.38%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch -13.96%
FullOpts (-2.22% to +0.38%)
Collection PDIFF
aspnet.run.windows.x64.checked.mch -0.36%
benchmarks.run.windows.x64.checked.mch -1.16%
benchmarks.run_pgo.windows.x64.checked.mch -0.11%
benchmarks.run_tiered.windows.x64.checked.mch -0.28%
coreclr_tests.run.windows.x64.checked.mch +0.38%
libraries.pmi.windows.x64.checked.mch -1.76%
libraries_tests.run.windows.x64.Release.mch -0.28%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch -2.22%
realworld.run.windows.x64.checked.mch -0.60%
smoke_tests.nativeaot.windows.x64.checked.mch -2.15%

Details here


Throughput diffs for linux/arm64 ran on linux/x64

Overall (-0.19% to +0.18%)
Collection PDIFF
libraries_tests.run.linux.arm64.Release.mch +0.14%
libraries.pmi.linux.arm64.checked.mch +0.17%
benchmarks.run_pgo.linux.arm64.checked.mch -0.19%
coreclr_tests.run.linux.arm64.checked.mch -0.12%
benchmarks.run.linux.arm64.checked.mch -0.10%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch +0.18%
libraries.crossgen2.linux.arm64.checked.mch -0.01%
benchmarks.run_tiered.linux.arm64.checked.mch -0.10%
realworld.run.linux.arm64.checked.mch +0.13%
MinOpts (-0.00% to +1.09%)
Collection PDIFF
coreclr_tests.run.linux.arm64.checked.mch +1.09%
benchmarks.run_tiered.linux.arm64.checked.mch +0.01%
FullOpts (-0.31% to +0.26%)
Collection PDIFF
libraries_tests.run.linux.arm64.Release.mch +0.26%
libraries.pmi.linux.arm64.checked.mch +0.17%
benchmarks.run_pgo.linux.arm64.checked.mch -0.29%
coreclr_tests.run.linux.arm64.checked.mch -0.12%
benchmarks.run.linux.arm64.checked.mch -0.10%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch +0.18%
libraries.crossgen2.linux.arm64.checked.mch -0.01%
benchmarks.run_tiered.linux.arm64.checked.mch -0.31%
realworld.run.linux.arm64.checked.mch +0.13%

Throughput diffs for linux/x64 ran on linux/x64

Overall (-0.27% to +0.54%)
Collection PDIFF
benchmarks.run_pgo.linux.x64.checked.mch -0.14%
libraries_tests.run.linux.x64.Release.mch +0.12%
benchmarks.run.linux.x64.checked.mch -0.14%
coreclr_tests.run.linux.x64.checked.mch -0.27%
benchmarks.run_tiered.linux.x64.checked.mch +0.04%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch +0.54%
libraries.pmi.linux.x64.checked.mch +0.36%
realworld.run.linux.x64.checked.mch +0.15%
MinOpts (0.00% to +0.09%)
Collection PDIFF
benchmarks.run_pgo.linux.x64.checked.mch +0.08%
libraries_tests.run.linux.x64.Release.mch +0.02%
coreclr_tests.run.linux.x64.checked.mch +0.09%
benchmarks.run_tiered.linux.x64.checked.mch +0.09%
FullOpts (-0.55% to +0.54%)
Collection PDIFF
benchmarks.run_pgo.linux.x64.checked.mch -0.24%
libraries_tests.run.linux.x64.Release.mch +0.16%
benchmarks.run.linux.x64.checked.mch -0.14%
coreclr_tests.run.linux.x64.checked.mch -0.55%
benchmarks.run_tiered.linux.x64.checked.mch -0.04%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch +0.54%
libraries.pmi.linux.x64.checked.mch +0.36%
realworld.run.linux.x64.checked.mch +0.15%

Details here


Throughput diffs for linux/arm ran on windows/x86

Overall (-0.21% to +0.14%)
Collection PDIFF
benchmarks.run.linux.arm.checked.mch +0.08%
benchmarks.run_pgo.linux.arm.checked.mch -0.05%
benchmarks.run_tiered.linux.arm.checked.mch +0.07%
coreclr_tests.run.linux.arm.checked.mch +0.01%
libraries.pmi.linux.arm.checked.mch +0.13%
libraries_tests.run.linux.arm.Release.mch -0.21%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch +0.11%
realworld.run.linux.arm.checked.mch +0.14%
MinOpts (-0.02% to +0.03%)
Collection PDIFF
benchmarks.run_pgo.linux.arm.checked.mch +0.03%
benchmarks.run_tiered.linux.arm.checked.mch +0.02%
coreclr_tests.run.linux.arm.checked.mch +0.01%
libraries_tests.run.linux.arm.Release.mch -0.02%
FullOpts (-0.21% to +0.14%)
Collection PDIFF
benchmarks.run.linux.arm.checked.mch +0.08%
benchmarks.run_pgo.linux.arm.checked.mch -0.06%
benchmarks.run_tiered.linux.arm.checked.mch +0.12%
coreclr_tests.run.linux.arm.checked.mch +0.01%
libraries.pmi.linux.arm.checked.mch +0.13%
libraries_tests.run.linux.arm.Release.mch -0.21%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch +0.11%
realworld.run.linux.arm.checked.mch +0.14%

Throughput diffs for windows/x86 ran on windows/x86

Overall (-1.42% to +0.13%)
Collection PDIFF
benchmarks.run.windows.x86.checked.mch -0.11%
benchmarks.run_pgo.windows.x86.checked.mch -1.42%
benchmarks.run_tiered.windows.x86.checked.mch -0.14%
coreclr_tests.run.windows.x86.checked.mch -0.12%
libraries.pmi.windows.x86.checked.mch +0.13%
libraries_tests.run.windows.x86.Release.mch -0.13%
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch +0.01%
realworld.run.windows.x86.checked.mch +0.07%
MinOpts (-0.02% to +0.01%)
Collection PDIFF
benchmarks.run_pgo.windows.x86.checked.mch +0.01%
benchmarks.run_tiered.windows.x86.checked.mch +0.01%
coreclr_tests.run.windows.x86.checked.mch -0.02%
FullOpts (-1.78% to +0.13%)
Collection PDIFF
benchmarks.run.windows.x86.checked.mch -0.11%
benchmarks.run_pgo.windows.x86.checked.mch -1.78%
benchmarks.run_tiered.windows.x86.checked.mch -0.26%
coreclr_tests.run.windows.x86.checked.mch -0.14%
libraries.pmi.windows.x86.checked.mch +0.13%
libraries_tests.run.windows.x86.Release.mch -0.21%
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch +0.01%
realworld.run.windows.x86.checked.mch +0.07%

Details here


@ryujit-bot
Copy link

Diff results for #97529

Throughput diffs

Throughput diffs for linux/arm64 ran on linux/x64

Overall (-2.39% to -0.00%)
Collection PDIFF
realworld.run.linux.arm64.checked.mch -1.17%
libraries.pmi.linux.arm64.checked.mch -0.56%
libraries.crossgen2.linux.arm64.checked.mch -0.01%
coreclr_tests.run.linux.arm64.checked.mch -2.39%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch -1.08%
benchmarks.run.linux.arm64.checked.mch -1.38%
benchmarks.run_tiered.linux.arm64.checked.mch -1.15%
benchmarks.run_pgo.linux.arm64.checked.mch -0.87%
libraries_tests.run.linux.arm64.Release.mch -1.61%
MinOpts (-52.67% to 0.00%)
Collection PDIFF
coreclr_tests.run.linux.arm64.checked.mch -52.67%
benchmarks.run_tiered.linux.arm64.checked.mch -1.24%
benchmarks.run_pgo.linux.arm64.checked.mch -0.90%
libraries_tests.run.linux.arm64.Release.mch -1.67%
FullOpts (-2.39% to -0.00%)
Collection PDIFF
realworld.run.linux.arm64.checked.mch -1.21%
libraries.pmi.linux.arm64.checked.mch -0.56%
libraries.crossgen2.linux.arm64.checked.mch -0.01%
coreclr_tests.run.linux.arm64.checked.mch -2.39%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch -1.08%
benchmarks.run.linux.arm64.checked.mch -1.40%
benchmarks.run_tiered.linux.arm64.checked.mch -0.96%
benchmarks.run_pgo.linux.arm64.checked.mch -0.85%
libraries_tests.run.linux.arm64.Release.mch -1.57%

Throughput diffs for linux/x64 ran on linux/x64

Overall (-1.77% to +0.00%)
Collection PDIFF
coreclr_tests.run.linux.x64.checked.mch -0.36%
libraries_tests.run.linux.x64.Release.mch -0.91%
libraries.pmi.linux.x64.checked.mch -1.77%
benchmarks.run_pgo.linux.x64.checked.mch -0.99%
benchmarks.run_tiered.linux.x64.checked.mch -0.62%
benchmarks.run.linux.x64.checked.mch -1.73%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch -1.67%
realworld.run.linux.x64.checked.mch -1.54%
MinOpts (-1.42% to 0.00%)
Collection PDIFF
coreclr_tests.run.linux.x64.checked.mch -0.05%
libraries_tests.run.linux.x64.Release.mch -1.42%
benchmarks.run_pgo.linux.x64.checked.mch -1.29%
benchmarks.run_tiered.linux.x64.checked.mch -0.64%
FullOpts (-1.77% to +0.00%)
Collection PDIFF
coreclr_tests.run.linux.x64.checked.mch -0.62%
libraries_tests.run.linux.x64.Release.mch -0.71%
libraries.pmi.linux.x64.checked.mch -1.77%
benchmarks.run_pgo.linux.x64.checked.mch -0.86%
benchmarks.run_tiered.linux.x64.checked.mch -0.58%
benchmarks.run.linux.x64.checked.mch -1.73%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch -1.67%
realworld.run.linux.x64.checked.mch -1.54%

Details here


@ryujit-bot
Copy link

Diff results for #97529

Assembly diffs

Assembly diffs for linux/arm ran on windows/x86

Diffs are based on 82,026 contexts (29,474 MinOpts, 52,552 FullOpts).

MISSED contexts: base: 2,213 (1.72%), diff: 43,415 (33.68%)

Overall (-49,260 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm.checked.mch 507,536 -2,486
benchmarks.run_pgo.linux.arm.checked.mch 10,032,106 -10,192
benchmarks.run_tiered.linux.arm.checked.mch 1,668,128 -10,252
coreclr_tests.run.linux.arm.checked.mch 374,650 -96
libraries.pmi.linux.arm.checked.mch 927,870 -6,268
libraries_tests.run.linux.arm.Release.mch 818,984 -11,466
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch 481,540 -3,786
realworld.run.linux.arm.checked.mch 2,003,136 -4,714
MinOpts (-15,744 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.arm.checked.mch 3,909,502 -6,314
benchmarks.run_tiered.linux.arm.checked.mch 1,162,028 -7,152
coreclr_tests.run.linux.arm.checked.mch 273,420 +40
libraries_tests.run.linux.arm.Release.mch 246,528 -2,318
FullOpts (-33,516 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm.checked.mch 491,706 -2,486
benchmarks.run_pgo.linux.arm.checked.mch 6,122,604 -3,878
benchmarks.run_tiered.linux.arm.checked.mch 506,100 -3,100
coreclr_tests.run.linux.arm.checked.mch 101,230 -136
libraries.pmi.linux.arm.checked.mch 927,870 -6,268
libraries_tests.run.linux.arm.Release.mch 572,456 -9,148
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch 481,540 -3,786
realworld.run.linux.arm.checked.mch 1,998,620 -4,714

Assembly diffs for windows/x86 ran on windows/x86

Diffs are based on 56,610 contexts (16,610 MinOpts, 40,000 FullOpts).

MISSED contexts: base: 1,422 (1.16%), diff: 62,829 (51.08%)

Overall (-49,481 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.x86.checked.mch 294,269 -2,988
benchmarks.run_pgo.windows.x86.checked.mch 1,606,515 -12,182
benchmarks.run_tiered.windows.x86.checked.mch 688,652 -9,512
coreclr_tests.run.windows.x86.checked.mch 52,457 -84
libraries.pmi.windows.x86.checked.mch 1,544,756 -5,699
libraries_tests.run.windows.x86.Release.mch 377,767 -9,057
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch 293,271 -3,811
realworld.run.windows.x86.checked.mch 517,918 -6,148
MinOpts (-24,699 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.windows.x86.checked.mch 610,624 -9,271
benchmarks.run_tiered.windows.x86.checked.mch 491,102 -7,580
libraries_tests.run.windows.x86.Release.mch 213,141 -7,848
FullOpts (-24,782 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.x86.checked.mch 294,196 -2,988
benchmarks.run_pgo.windows.x86.checked.mch 995,891 -2,911
benchmarks.run_tiered.windows.x86.checked.mch 197,550 -1,932
coreclr_tests.run.windows.x86.checked.mch 52,457 -84
libraries.pmi.windows.x86.checked.mch 1,544,756 -5,699
libraries_tests.run.windows.x86.Release.mch 164,626 -1,209
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch 293,271 -3,811
realworld.run.windows.x86.checked.mch 517,918 -6,148

Details here


Assembly diffs for linux/arm64 ran on windows/x64

Diffs are based on 91,015 contexts (37,196 MinOpts, 53,819 FullOpts).

MISSED contexts: base: 159 (0.11%), diff: 52,639 (35.66%)

Overall (-96,164 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm64.checked.mch 1,089,056 -5,884
benchmarks.run_pgo.linux.arm64.checked.mch 2,900,708 -21,028
benchmarks.run_tiered.linux.arm64.checked.mch 2,340,380 -17,388
coreclr_tests.run.linux.arm64.checked.mch 164,096 -48
libraries.pmi.linux.arm64.checked.mch 1,285,304 -5,688
libraries_tests.run.linux.arm64.Release.mch 2,135,476 -21,960
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch 1,090,520 -6,984
realworld.run.linux.arm64.checked.mch 1,695,560 -17,184
MinOpts (-46,440 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.arm64.checked.mch 2,064,608 -16,472
benchmarks.run_tiered.linux.arm64.checked.mch 2,103,408 -15,924
libraries_tests.run.linux.arm64.Release.mch 1,696,352 -14,044
FullOpts (-49,724 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm64.checked.mch 1,044,220 -5,884
benchmarks.run_pgo.linux.arm64.checked.mch 836,100 -4,556
benchmarks.run_tiered.linux.arm64.checked.mch 236,972 -1,464
coreclr_tests.run.linux.arm64.checked.mch 164,096 -48
libraries.pmi.linux.arm64.checked.mch 1,285,304 -5,688
libraries_tests.run.linux.arm64.Release.mch 439,124 -7,916
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch 1,090,520 -6,984
realworld.run.linux.arm64.checked.mch 1,681,048 -17,184

Assembly diffs for osx/arm64 ran on windows/x64

Diffs are based on 79,033 contexts (35,101 MinOpts, 43,932 FullOpts).

MISSED contexts: base: 44 (0.04%), diff: 37,673 (31.32%)

Overall (-81,444 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.osx.arm64.checked.mch 1,030,644 -6,084
benchmarks.run_pgo.osx.arm64.checked.mch 2,510,584 -18,724
benchmarks.run_tiered.osx.arm64.checked.mch 2,279,232 -17,048
coreclr_tests.run.osx.arm64.checked.mch 312,480 -176
libraries.pmi.osx.arm64.checked.mch 1,249,200 -4,376
libraries_tests.run.osx.arm64.Release.mch 1,052,488 -10,708
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch 1,037,508 -6,992
realworld.run.osx.arm64.checked.mch 1,692,100 -17,336
MinOpts (-43,828 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch 2,244,624 -17,056
benchmarks.run_tiered.osx.arm64.checked.mch 2,045,300 -16,120
coreclr_tests.run.osx.arm64.checked.mch 286,116 -176
libraries_tests.run.osx.arm64.Release.mch 981,904 -10,476
FullOpts (-37,616 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.osx.arm64.checked.mch 1,030,220 -6,084
benchmarks.run_pgo.osx.arm64.checked.mch 265,960 -1,668
benchmarks.run_tiered.osx.arm64.checked.mch 233,932 -928
libraries.pmi.osx.arm64.checked.mch 1,249,200 -4,376
libraries_tests.run.osx.arm64.Release.mch 70,584 -232
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch 1,037,508 -6,992
realworld.run.osx.arm64.checked.mch 1,692,000 -17,336

Assembly diffs for windows/arm64 ran on windows/x64

Diffs are based on 80,760 contexts (27,005 MinOpts, 53,755 FullOpts).

MISSED contexts: base: 223 (0.17%), diff: 49,330 (36.80%)

Overall (-99,128 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.arm64.checked.mch 931,552 -5,692
benchmarks.run_pgo.windows.arm64.checked.mch 2,407,116 -20,412
benchmarks.run_tiered.windows.arm64.checked.mch 2,106,448 -17,624
coreclr_tests.run.windows.arm64.checked.mch 171,896 -176
libraries.pmi.windows.arm64.checked.mch 1,252,856 -10,348
libraries_tests.run.windows.arm64.Release.mch 615,412 -20,616
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch 1,045,188 -7,168
realworld.run.windows.arm64.checked.mch 1,675,344 -17,092
MinOpts (-40,184 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch 1,882,192 -16,236
benchmarks.run_tiered.windows.arm64.checked.mch 1,874,596 -15,612
libraries_tests.run.windows.arm64.Release.mch 397,116 -8,336
FullOpts (-58,944 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.arm64.checked.mch 931,452 -5,692
benchmarks.run_pgo.windows.arm64.checked.mch 524,924 -4,176
benchmarks.run_tiered.windows.arm64.checked.mch 231,852 -2,012
coreclr_tests.run.windows.arm64.checked.mch 171,896 -176
libraries.pmi.windows.arm64.checked.mch 1,252,856 -10,348
libraries_tests.run.windows.arm64.Release.mch 218,296 -12,280
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch 1,045,188 -7,168
realworld.run.windows.arm64.checked.mch 1,675,244 -17,092

Assembly diffs for windows/x64 ran on windows/x64

Diffs are based on 79,883 contexts (35,475 MinOpts, 44,408 FullOpts).

MISSED contexts: base: 47 (0.04%), diff: 46,452 (35.54%)

Overall (-93,689 bytes)
Collection Base size (bytes) Diff size (bytes)
aspnet.run.windows.x64.checked.mch 933,140 -3,514
benchmarks.run.windows.x64.checked.mch 638,956 -3,579
benchmarks.run_pgo.windows.x64.checked.mch 1,821,224 -14,091
benchmarks.run_tiered.windows.x64.checked.mch 1,565,006 -14,674
coreclr_tests.run.windows.x64.checked.mch 105,015 +31
libraries.pmi.windows.x64.checked.mch 693,716 -17,504
libraries_tests.run.windows.x64.Release.mch 1,095,020 -17,843
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch 838,544 -6,155
realworld.run.windows.x64.checked.mch 1,799,819 -16,360
MinOpts (-46,375 bytes)
Collection Base size (bytes) Diff size (bytes)
aspnet.run.windows.x64.checked.mch 566,790 -3,837
benchmarks.run_pgo.windows.x64.checked.mch 1,304,129 -13,077
benchmarks.run_tiered.windows.x64.checked.mch 1,425,424 -14,093
libraries_tests.run.windows.x64.Release.mch 833,618 -15,368
FullOpts (-47,314 bytes)
Collection Base size (bytes) Diff size (bytes)
aspnet.run.windows.x64.checked.mch 366,350 +323
benchmarks.run.windows.x64.checked.mch 638,882 -3,579
benchmarks.run_pgo.windows.x64.checked.mch 517,095 -1,014
benchmarks.run_tiered.windows.x64.checked.mch 139,582 -581
coreclr_tests.run.windows.x64.checked.mch 105,015 +31
libraries.pmi.windows.x64.checked.mch 693,716 -17,504
libraries_tests.run.windows.x64.Release.mch 261,402 -2,475
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch 838,544 -6,155
realworld.run.windows.x64.checked.mch 1,799,819 -16,360

Details here


Throughput diffs

Throughput diffs for linux/arm64 ran on windows/x64

Overall (-2.04% to -0.00%)
Collection PDIFF
benchmarks.run.linux.arm64.checked.mch -1.38%
benchmarks.run_pgo.linux.arm64.checked.mch -0.91%
benchmarks.run_tiered.linux.arm64.checked.mch -0.67%
coreclr_tests.run.linux.arm64.checked.mch -0.22%
libraries.crossgen2.linux.arm64.checked.mch -0.20%
libraries.pmi.linux.arm64.checked.mch -1.53%
libraries_tests.run.linux.arm64.Release.mch -1.40%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch -2.04%
realworld.run.linux.arm64.checked.mch -0.98%
MinOpts (-0.61% to +0.00%)
Collection PDIFF
benchmarks.run_pgo.linux.arm64.checked.mch -0.58%
benchmarks.run_tiered.linux.arm64.checked.mch -0.61%
coreclr_tests.run.linux.arm64.checked.mch -0.03%
libraries_tests.run.linux.arm64.Release.mch -0.60%
FullOpts (-2.13% to -0.00%)
Collection PDIFF
benchmarks.run.linux.arm64.checked.mch -1.40%
benchmarks.run_pgo.linux.arm64.checked.mch -0.96%
benchmarks.run_tiered.linux.arm64.checked.mch -0.77%
coreclr_tests.run.linux.arm64.checked.mch -0.37%
libraries.crossgen2.linux.arm64.checked.mch -0.20%
libraries.pmi.linux.arm64.checked.mch -1.53%
libraries_tests.run.linux.arm64.Release.mch -2.13%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch -2.04%
realworld.run.linux.arm64.checked.mch -1.00%

Throughput diffs for linux/x64 ran on windows/x64

Overall (-1.82% to +0.35%)
Collection PDIFF
benchmarks.run.linux.x64.checked.mch -1.41%
benchmarks.run_pgo.linux.x64.checked.mch -0.87%
benchmarks.run_tiered.linux.x64.checked.mch -0.65%
coreclr_tests.run.linux.x64.checked.mch +0.35%
libraries.pmi.linux.x64.checked.mch -0.90%
libraries_tests.run.linux.x64.Release.mch -0.56%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch -1.82%
realworld.run.linux.x64.checked.mch -0.93%
smoke_tests.nativeaot.linux.x64.checked.mch +0.01%
MinOpts (-0.66% to +0.00%)
Collection PDIFF
benchmarks.run_pgo.linux.x64.checked.mch -0.63%
benchmarks.run_tiered.linux.x64.checked.mch -0.58%
coreclr_tests.run.linux.x64.checked.mch -0.03%
libraries_tests.run.linux.x64.Release.mch -0.66%
FullOpts (-1.82% to +0.47%)
Collection PDIFF
benchmarks.run.linux.x64.checked.mch -1.45%
benchmarks.run_pgo.linux.x64.checked.mch -0.91%
benchmarks.run_tiered.linux.x64.checked.mch -0.78%
coreclr_tests.run.linux.x64.checked.mch +0.47%
libraries.pmi.linux.x64.checked.mch -0.90%
libraries_tests.run.linux.x64.Release.mch -0.52%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch -1.82%
realworld.run.linux.x64.checked.mch -0.94%
smoke_tests.nativeaot.linux.x64.checked.mch +0.01%

Throughput diffs for osx/arm64 ran on windows/x64

Overall (-2.02% to -0.00%)
Collection PDIFF
benchmarks.run.osx.arm64.checked.mch -1.46%
benchmarks.run_pgo.osx.arm64.checked.mch -0.91%
benchmarks.run_tiered.osx.arm64.checked.mch -1.20%
coreclr_tests.run.osx.arm64.checked.mch -0.18%
libraries.pmi.osx.arm64.checked.mch -1.54%
libraries_tests.run.osx.arm64.Release.mch -0.73%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch -2.02%
realworld.run.osx.arm64.checked.mch -1.00%
MinOpts (-0.79% to +0.00%)
Collection PDIFF
benchmarks.run_pgo.osx.arm64.checked.mch -0.79%
benchmarks.run_tiered.osx.arm64.checked.mch -0.78%
coreclr_tests.run.osx.arm64.checked.mch -0.03%
libraries_tests.run.osx.arm64.Release.mch -0.50%
FullOpts (-2.03% to -0.00%)
Collection PDIFF
benchmarks.run.osx.arm64.checked.mch -1.46%
benchmarks.run_pgo.osx.arm64.checked.mch -0.96%
benchmarks.run_tiered.osx.arm64.checked.mch -1.81%
coreclr_tests.run.osx.arm64.checked.mch -0.38%
libraries.pmi.osx.arm64.checked.mch -1.54%
libraries_tests.run.osx.arm64.Release.mch -1.66%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch -2.03%
realworld.run.osx.arm64.checked.mch -1.02%

Throughput diffs for windows/arm64 ran on windows/x64

Overall (-4.57% to -0.00%)
Collection PDIFF
benchmarks.run.windows.arm64.checked.mch -1.48%
benchmarks.run_pgo.windows.arm64.checked.mch -1.37%
benchmarks.run_tiered.windows.arm64.checked.mch -1.10%
coreclr_tests.run.windows.arm64.checked.mch -0.26%
libraries.pmi.windows.arm64.checked.mch -1.54%
libraries_tests.run.windows.arm64.Release.mch -4.57%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch -2.11%
realworld.run.windows.arm64.checked.mch -1.02%
MinOpts (-2.46% to 0.00%)
Collection PDIFF
benchmarks.run_pgo.windows.arm64.checked.mch -0.81%
benchmarks.run_tiered.windows.arm64.checked.mch -0.79%
coreclr_tests.run.windows.arm64.checked.mch -0.04%
libraries_tests.run.windows.arm64.Release.mch -2.46%
FullOpts (-5.26% to -0.00%)
Collection PDIFF
benchmarks.run.windows.arm64.checked.mch -1.48%
benchmarks.run_pgo.windows.arm64.checked.mch -1.51%
benchmarks.run_tiered.windows.arm64.checked.mch -1.52%
coreclr_tests.run.windows.arm64.checked.mch -0.44%
libraries.pmi.windows.arm64.checked.mch -1.54%
libraries_tests.run.windows.arm64.Release.mch -5.26%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch -2.12%
realworld.run.windows.arm64.checked.mch -1.04%

Throughput diffs for windows/x64 ran on windows/x64

Overall (-4.22% to +0.00%)
Collection PDIFF
aspnet.run.windows.x64.checked.mch -2.14%
benchmarks.run.windows.x64.checked.mch -2.47%
benchmarks.run_pgo.windows.x64.checked.mch -0.71%
benchmarks.run_tiered.windows.x64.checked.mch -1.56%
coreclr_tests.run.windows.x64.checked.mch -1.98%
libraries.pmi.windows.x64.checked.mch -3.66%
libraries_tests.run.windows.x64.Release.mch -1.88%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch -4.22%
realworld.run.windows.x64.checked.mch -1.66%
smoke_tests.nativeaot.windows.x64.checked.mch -2.15%
MinOpts (-13.96% to +0.00%)
Collection PDIFF
aspnet.run.windows.x64.checked.mch -2.07%
benchmarks.run_pgo.windows.x64.checked.mch -2.04%
benchmarks.run_tiered.windows.x64.checked.mch -1.77%
coreclr_tests.run.windows.x64.checked.mch -5.32%
libraries_tests.run.windows.x64.Release.mch -1.84%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch -13.96%
FullOpts (-4.20% to +0.00%)
Collection PDIFF
aspnet.run.windows.x64.checked.mch -2.15%
benchmarks.run.windows.x64.checked.mch -2.47%
benchmarks.run_pgo.windows.x64.checked.mch -0.45%
benchmarks.run_tiered.windows.x64.checked.mch -1.27%
coreclr_tests.run.windows.x64.checked.mch -0.14%
libraries.pmi.windows.x64.checked.mch -3.66%
libraries_tests.run.windows.x64.Release.mch -1.95%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch -4.20%
realworld.run.windows.x64.checked.mch -1.68%
smoke_tests.nativeaot.windows.x64.checked.mch -2.15%

Details here


Throughput diffs for linux/arm ran on linux/x86

Overall (-4.29% to +0.00%)
Collection PDIFF
benchmarks.run.linux.arm.checked.mch -3.94%
benchmarks.run_pgo.linux.arm.checked.mch -0.13%
benchmarks.run_tiered.linux.arm.checked.mch -1.32%
coreclr_tests.run.linux.arm.checked.mch -0.49%
libraries.pmi.linux.arm.checked.mch -1.74%
libraries_tests.run.linux.arm.Release.mch -2.87%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch -4.29%
realworld.run.linux.arm.checked.mch -2.50%
MinOpts (-1.65% to +0.00%)
Collection PDIFF
benchmarks.run_pgo.linux.arm.checked.mch -0.29%
benchmarks.run_tiered.linux.arm.checked.mch -0.46%
coreclr_tests.run.linux.arm.checked.mch -0.02%
libraries_tests.run.linux.arm.Release.mch -1.65%
FullOpts (-4.30% to +0.00%)
Collection PDIFF
benchmarks.run.linux.arm.checked.mch -4.10%
benchmarks.run_pgo.linux.arm.checked.mch -0.11%
benchmarks.run_tiered.linux.arm.checked.mch -2.01%
coreclr_tests.run.linux.arm.checked.mch -1.21%
libraries.pmi.linux.arm.checked.mch -1.74%
libraries_tests.run.linux.arm.Release.mch -2.92%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch -4.30%
realworld.run.linux.arm.checked.mch -2.53%

Details here


@ryujit-bot
Copy link

Diff results for #97529

Throughput diffs

Throughput diffs for windows/x86 ran on windows/x86

Overall (-2.30% to -0.00%)
Collection PDIFF
benchmarks.run.windows.x86.checked.mch -1.29%
benchmarks.run_pgo.windows.x86.checked.mch -1.90%
benchmarks.run_tiered.windows.x86.checked.mch -1.18%
coreclr_tests.run.windows.x86.checked.mch -0.46%
libraries.pmi.windows.x86.checked.mch -1.66%
libraries_tests.run.windows.x86.Release.mch -0.86%
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch -2.30%
realworld.run.windows.x86.checked.mch -1.13%
MinOpts (-1.18% to +0.00%)
Collection PDIFF
benchmarks.run_pgo.windows.x86.checked.mch -1.18%
benchmarks.run_tiered.windows.x86.checked.mch -1.06%
coreclr_tests.run.windows.x86.checked.mch -0.15%
libraries_tests.run.windows.x86.Release.mch -0.87%
FullOpts (-2.31% to -0.00%)
Collection PDIFF
benchmarks.run.windows.x86.checked.mch -1.29%
benchmarks.run_pgo.windows.x86.checked.mch -2.08%
benchmarks.run_tiered.windows.x86.checked.mch -1.28%
coreclr_tests.run.windows.x86.checked.mch -0.53%
libraries.pmi.windows.x86.checked.mch -1.66%
libraries_tests.run.windows.x86.Release.mch -0.85%
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch -2.31%
realworld.run.windows.x86.checked.mch -1.15%

Details here


@ryujit-bot
Copy link

Diff results for #97529

Assembly diffs

Assembly diffs for linux/arm64 ran on windows/x64

Diffs are based on 90,968 contexts (39,217 MinOpts, 51,751 FullOpts).

MISSED contexts: base: 3,450 (2.42%), diff: 47,377 (33.29%)

Overall (-92,984 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm64.checked.mch 987,856 -5,876
benchmarks.run_pgo.linux.arm64.checked.mch 2,956,824 -20,412
benchmarks.run_tiered.linux.arm64.checked.mch 2,289,652 -17,264
coreclr_tests.run.linux.arm64.checked.mch 535,608 -288
libraries.pmi.linux.arm64.checked.mch 1,340,444 -6,676
libraries_tests.run.linux.arm64.Release.mch 1,695,136 -17,860
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch 985,512 -7,496
realworld.run.linux.arm64.checked.mch 1,677,192 -17,112
MinOpts (-48,108 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.arm64.checked.mch 2,119,436 -15,648
benchmarks.run_tiered.linux.arm64.checked.mch 2,047,816 -15,788
coreclr_tests.run.linux.arm64.checked.mch 397,428 -140
libraries_tests.run.linux.arm64.Release.mch 1,599,544 -16,532
FullOpts (-44,876 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm64.checked.mch 987,432 -5,876
benchmarks.run_pgo.linux.arm64.checked.mch 837,388 -4,764
benchmarks.run_tiered.linux.arm64.checked.mch 241,836 -1,476
coreclr_tests.run.linux.arm64.checked.mch 138,180 -148
libraries.pmi.linux.arm64.checked.mch 1,340,444 -6,676
libraries_tests.run.linux.arm64.Release.mch 95,592 -1,328
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch 985,512 -7,496
realworld.run.linux.arm64.checked.mch 1,664,872 -17,112

Assembly diffs for linux/x64 ran on windows/x64

Diffs are based on 92,598 contexts (38,516 MinOpts, 54,082 FullOpts).

MISSED contexts: base: 3,640 (2.59%), diff: 43,898 (31.25%)

Overall (-96,473 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.x64.checked.mch 721,868 -4,586
benchmarks.run_pgo.linux.x64.checked.mch 2,059,337 -15,319
benchmarks.run_tiered.linux.x64.checked.mch 2,163,412 -15,133
coreclr_tests.run.linux.x64.checked.mch 407,681 +64
libraries.pmi.linux.x64.checked.mch 737,374 -20,077
libraries_tests.run.linux.x64.Release.mch 1,447,569 -21,187
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch 830,863 -6,770
realworld.run.linux.x64.checked.mch 1,403,564 -13,465
MinOpts (-46,977 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.x64.checked.mch 1,526,742 -13,499
benchmarks.run_tiered.linux.x64.checked.mch 1,965,819 -14,023
coreclr_tests.run.linux.x64.checked.mch 303,333 -6
libraries_tests.run.linux.x64.Release.mch 1,348,426 -19,449
FullOpts (-49,496 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.x64.checked.mch 704,368 -4,586
benchmarks.run_pgo.linux.x64.checked.mch 532,595 -1,820
benchmarks.run_tiered.linux.x64.checked.mch 197,593 -1,110
coreclr_tests.run.linux.x64.checked.mch 104,348 +70
libraries.pmi.linux.x64.checked.mch 737,374 -20,077
libraries_tests.run.linux.x64.Release.mch 99,143 -1,738
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch 830,863 -6,770
realworld.run.linux.x64.checked.mch 1,401,962 -13,465

Assembly diffs for osx/arm64 ran on windows/x64

Diffs are based on 78,929 contexts (41,462 MinOpts, 37,467 FullOpts).

MISSED contexts: base: 2,856 (2.27%), diff: 43,225 (34.38%)

Overall (-92,764 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.osx.arm64.checked.mch 1,051,784 -5,840
benchmarks.run_pgo.osx.arm64.checked.mch 2,496,932 -18,464
benchmarks.run_tiered.osx.arm64.checked.mch 2,306,432 -17,176
coreclr_tests.run.osx.arm64.checked.mch 188,056 -112
libraries.pmi.osx.arm64.checked.mch 1,221,828 -4,004
libraries_tests.run.osx.arm64.Release.mch 2,206,820 -22,728
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch 1,036,932 -7,204
realworld.run.osx.arm64.checked.mch 1,633,176 -17,236
MinOpts (-55,640 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch 2,239,532 -16,808
benchmarks.run_tiered.osx.arm64.checked.mch 2,102,732 -16,288
libraries_tests.run.osx.arm64.Release.mch 2,194,452 -22,544
FullOpts (-37,124 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.osx.arm64.checked.mch 1,051,360 -5,840
benchmarks.run_pgo.osx.arm64.checked.mch 257,400 -1,656
benchmarks.run_tiered.osx.arm64.checked.mch 203,700 -888
coreclr_tests.run.osx.arm64.checked.mch 188,056 -112
libraries.pmi.osx.arm64.checked.mch 1,221,828 -4,004
libraries_tests.run.osx.arm64.Release.mch 12,368 -184
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch 1,036,932 -7,204
realworld.run.osx.arm64.checked.mch 1,633,076 -17,236

Assembly diffs for windows/arm64 ran on windows/x64

Diffs are based on 89,877 contexts (39,512 MinOpts, 50,365 FullOpts).

MISSED contexts: base: 3,991 (2.85%), diff: 46,273 (33.03%)

Overall (-90,944 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.arm64.checked.mch 850,828 -5,476
benchmarks.run_pgo.windows.arm64.checked.mch 2,287,604 -19,696
benchmarks.run_tiered.windows.arm64.checked.mch 2,227,248 -17,092
coreclr_tests.run.windows.arm64.checked.mch 561,672 -612
libraries.pmi.windows.arm64.checked.mch 1,150,104 -732
libraries_tests.run.windows.arm64.Release.mch 2,258,308 -22,440
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch 1,051,504 -7,732
realworld.run.windows.arm64.checked.mch 1,662,480 -17,164
MinOpts (-53,200 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch 1,817,936 -15,984
benchmarks.run_tiered.windows.arm64.checked.mch 2,005,868 -15,300
coreclr_tests.run.windows.arm64.checked.mch 388,052 -172
libraries_tests.run.windows.arm64.Release.mch 2,220,016 -21,744
FullOpts (-37,744 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.arm64.checked.mch 850,452 -5,476
benchmarks.run_pgo.windows.arm64.checked.mch 469,668 -3,712
benchmarks.run_tiered.windows.arm64.checked.mch 221,380 -1,792
coreclr_tests.run.windows.arm64.checked.mch 173,620 -440
libraries.pmi.windows.arm64.checked.mch 1,150,032 -732
libraries_tests.run.windows.arm64.Release.mch 38,292 -696
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch 1,051,504 -7,732
realworld.run.windows.arm64.checked.mch 1,662,380 -17,164

Assembly diffs for windows/x64 ran on windows/x64

Diffs are based on 93,749 contexts (40,209 MinOpts, 53,540 FullOpts).

MISSED contexts: base: 3,301 (2.30%), diff: 45,642 (31.75%)

Overall (-98,879 bytes)
Collection Base size (bytes) Diff size (bytes)
aspnet.run.windows.x64.checked.mch 918,586 -3,514
benchmarks.run.windows.x64.checked.mch 637,100 -4,369
benchmarks.run_pgo.windows.x64.checked.mch 1,575,206 -12,251
benchmarks.run_tiered.windows.x64.checked.mch 1,518,103 -14,901
coreclr_tests.run.windows.x64.checked.mch 379,814 +12
libraries.pmi.windows.x64.checked.mch 837,452 -17,566
libraries_tests.run.windows.x64.Release.mch 1,540,227 -23,414
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch 745,455 -8,097
realworld.run.windows.x64.checked.mch 1,799,593 -14,779
MinOpts (-51,463 bytes)
Collection Base size (bytes) Diff size (bytes)
aspnet.run.windows.x64.checked.mch 566,802 -3,837
benchmarks.run_pgo.windows.x64.checked.mch 1,172,226 -11,291
benchmarks.run_tiered.windows.x64.checked.mch 1,333,260 -13,988
coreclr_tests.run.windows.x64.checked.mch 289,459 +114
libraries_tests.run.windows.x64.Release.mch 1,489,732 -22,461
FullOpts (-47,416 bytes)
Collection Base size (bytes) Diff size (bytes)
aspnet.run.windows.x64.checked.mch 351,784 +323
benchmarks.run.windows.x64.checked.mch 636,868 -4,369
benchmarks.run_pgo.windows.x64.checked.mch 402,980 -960
benchmarks.run_tiered.windows.x64.checked.mch 184,843 -913
coreclr_tests.run.windows.x64.checked.mch 90,355 -102
libraries.pmi.windows.x64.checked.mch 837,452 -17,566
libraries_tests.run.windows.x64.Release.mch 50,495 -953
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch 745,455 -8,097
realworld.run.windows.x64.checked.mch 1,799,593 -14,779

Details here


Assembly diffs for windows/x86 ran on windows/x86

Diffs are based on 53,492 contexts (17,492 MinOpts, 36,000 FullOpts).

MISSED contexts: base: 3,510 (3.05%), diff: 58,094 (50.45%)

Overall (-52,308 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.x86.checked.mch 298,081 -3,108
benchmarks.run_pgo.windows.x86.checked.mch 726,262 -8,964
benchmarks.run_tiered.windows.x86.checked.mch 706,843 -9,977
coreclr_tests.run.windows.x86.checked.mch 46,161 -42
libraries.pmi.windows.x86.checked.mch 1,461,078 -3,494
libraries_tests.run.windows.x86.Release.mch 510,379 -15,767
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch 256,268 -5,307
realworld.run.windows.x86.checked.mch 481,011 -5,649
MinOpts (-27,508 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.windows.x86.checked.mch 414,129 -6,800
benchmarks.run_tiered.windows.x86.checked.mch 520,835 -7,704
libraries_tests.run.windows.x86.Release.mch 413,867 -13,004
FullOpts (-24,800 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.x86.checked.mch 297,884 -3,108
benchmarks.run_pgo.windows.x86.checked.mch 312,133 -2,164
benchmarks.run_tiered.windows.x86.checked.mch 186,008 -2,273
coreclr_tests.run.windows.x86.checked.mch 46,161 -42
libraries.pmi.windows.x86.checked.mch 1,461,078 -3,494
libraries_tests.run.windows.x86.Release.mch 96,512 -2,763
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch 256,268 -5,307
realworld.run.windows.x86.checked.mch 481,011 -5,649

Details here


Throughput diffs

Throughput diffs for linux/arm64 ran on linux/x64

Overall (-2.89% to -0.00%)
Collection PDIFF
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch -2.89%
benchmarks.run_pgo.linux.arm64.checked.mch -1.09%
libraries_tests.run.linux.arm64.Release.mch -1.92%
realworld.run.linux.arm64.checked.mch -1.58%
libraries.pmi.linux.arm64.checked.mch -0.57%
coreclr_tests.run.linux.arm64.checked.mch -1.34%
benchmarks.run_tiered.linux.arm64.checked.mch -0.96%
smoke_tests.nativeaot.linux.arm64.checked.mch -0.01%
benchmarks.run.linux.arm64.checked.mch -1.20%
MinOpts (-1.88% to 0.00%)
Collection PDIFF
benchmarks.run_pgo.linux.arm64.checked.mch -0.95%
libraries_tests.run.linux.arm64.Release.mch -1.88%
coreclr_tests.run.linux.arm64.checked.mch -0.09%
benchmarks.run_tiered.linux.arm64.checked.mch -0.82%
FullOpts (-2.89% to -0.00%)
Collection PDIFF
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch -2.89%
benchmarks.run_pgo.linux.arm64.checked.mch -1.20%
libraries_tests.run.linux.arm64.Release.mch -2.09%
realworld.run.linux.arm64.checked.mch -1.58%
libraries.pmi.linux.arm64.checked.mch -0.57%
coreclr_tests.run.linux.arm64.checked.mch -2.13%
benchmarks.run_tiered.linux.arm64.checked.mch -1.28%
smoke_tests.nativeaot.linux.arm64.checked.mch -0.01%
benchmarks.run.linux.arm64.checked.mch -1.20%

Throughput diffs for linux/x64 ran on linux/x64

Overall (-2.22% to -0.01%)
Collection PDIFF
benchmarks.run_pgo.linux.x64.checked.mch -1.18%
benchmarks.run.linux.x64.checked.mch -1.60%
benchmarks.run_tiered.linux.x64.checked.mch -1.12%
libraries_tests.run.linux.x64.Release.mch -2.22%
libraries.pmi.linux.x64.checked.mch -1.61%
libraries.crossgen2.linux.x64.checked.mch -0.01%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch -1.50%
coreclr_tests.run.linux.x64.checked.mch -0.98%
realworld.run.linux.x64.checked.mch -1.52%
smoke_tests.nativeaot.linux.x64.checked.mch -0.01%
MinOpts (-2.34% to 0.00%)
Collection PDIFF
benchmarks.run_pgo.linux.x64.checked.mch -1.37%
benchmarks.run.linux.x64.checked.mch -0.03%
benchmarks.run_tiered.linux.x64.checked.mch -1.48%
libraries_tests.run.linux.x64.Release.mch -2.34%
coreclr_tests.run.linux.x64.checked.mch -0.03%
realworld.run.linux.x64.checked.mch -0.02%
FullOpts (-1.84% to -0.01%)
Collection PDIFF
benchmarks.run_pgo.linux.x64.checked.mch -1.01%
benchmarks.run.linux.x64.checked.mch -1.60%
benchmarks.run_tiered.linux.x64.checked.mch -0.63%
libraries_tests.run.linux.x64.Release.mch -1.84%
libraries.pmi.linux.x64.checked.mch -1.61%
libraries.crossgen2.linux.x64.checked.mch -0.01%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch -1.50%
coreclr_tests.run.linux.x64.checked.mch -1.34%
realworld.run.linux.x64.checked.mch -1.52%
smoke_tests.nativeaot.linux.x64.checked.mch -0.01%

Details here


@ryujit-bot
Copy link

Diff results for #97529

Throughput diffs

Throughput diffs for linux/arm64 ran on windows/x64

Overall (-9.63% to -0.00%)
Collection PDIFF
benchmarks.run.linux.arm64.checked.mch -1.16%
benchmarks.run_pgo.linux.arm64.checked.mch -1.27%
benchmarks.run_tiered.linux.arm64.checked.mch -0.60%
coreclr_tests.run.linux.arm64.checked.mch -0.29%
libraries.pmi.linux.arm64.checked.mch -1.48%
libraries_tests.run.linux.arm64.Release.mch -9.63%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch -1.58%
realworld.run.linux.arm64.checked.mch -0.93%
MinOpts (-0.63% to +0.00%)
Collection PDIFF
benchmarks.run_pgo.linux.arm64.checked.mch -0.63%
benchmarks.run_tiered.linux.arm64.checked.mch -0.53%
coreclr_tests.run.linux.arm64.checked.mch -0.03%
libraries_tests.run.linux.arm64.Release.mch -0.51%
FullOpts (-14.40% to -0.00%)
Collection PDIFF
benchmarks.run.linux.arm64.checked.mch -1.22%
benchmarks.run_pgo.linux.arm64.checked.mch -1.36%
benchmarks.run_tiered.linux.arm64.checked.mch -0.70%
coreclr_tests.run.linux.arm64.checked.mch -0.71%
libraries.pmi.linux.arm64.checked.mch -1.48%
libraries_tests.run.linux.arm64.Release.mch -14.40%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch -1.59%
realworld.run.linux.arm64.checked.mch -0.95%

Throughput diffs for linux/x64 ran on windows/x64

Overall (-9.59% to +0.01%)
Collection PDIFF
benchmarks.run.linux.x64.checked.mch -1.18%
benchmarks.run_pgo.linux.x64.checked.mch -1.14%
benchmarks.run_tiered.linux.x64.checked.mch -0.61%
coreclr_tests.run.linux.x64.checked.mch -0.02%
libraries.pmi.linux.x64.checked.mch -0.85%
libraries_tests.run.linux.x64.Release.mch -9.59%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch -1.42%
realworld.run.linux.x64.checked.mch -0.88%
smoke_tests.nativeaot.linux.x64.checked.mch +0.01%
MinOpts (-0.56% to +0.07%)
Collection PDIFF
benchmarks.run_pgo.linux.x64.checked.mch -0.54%
benchmarks.run_tiered.linux.x64.checked.mch -0.52%
coreclr_tests.run.linux.x64.checked.mch +0.07%
libraries_tests.run.linux.x64.Release.mch -0.56%
FullOpts (-13.41% to +0.01%)
Collection PDIFF
benchmarks.run.linux.x64.checked.mch -1.22%
benchmarks.run_pgo.linux.x64.checked.mch -1.22%
benchmarks.run_tiered.linux.x64.checked.mch -0.74%
coreclr_tests.run.linux.x64.checked.mch -0.08%
libraries.pmi.linux.x64.checked.mch -0.85%
libraries_tests.run.linux.x64.Release.mch -13.41%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch -1.43%
realworld.run.linux.x64.checked.mch -0.90%
smoke_tests.nativeaot.linux.x64.checked.mch +0.01%

Throughput diffs for osx/arm64 ran on windows/x64

Overall (-6.05% to -0.20%)
Collection PDIFF
benchmarks.run.osx.arm64.checked.mch -1.36%
benchmarks.run_pgo.osx.arm64.checked.mch -0.87%
benchmarks.run_tiered.osx.arm64.checked.mch -1.20%
coreclr_tests.run.osx.arm64.checked.mch -0.29%
libraries.crossgen2.osx.arm64.checked.mch -0.20%
libraries.pmi.osx.arm64.checked.mch -1.51%
libraries_tests.run.osx.arm64.Release.mch -6.05%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch -1.59%
realworld.run.osx.arm64.checked.mch -0.98%
MinOpts (-0.79% to 0.00%)
Collection PDIFF
benchmarks.run_pgo.osx.arm64.checked.mch -0.79%
benchmarks.run_tiered.osx.arm64.checked.mch -0.78%
coreclr_tests.run.osx.arm64.checked.mch -0.03%
libraries_tests.run.osx.arm64.Release.mch -0.51%
FullOpts (-10.53% to -0.20%)
Collection PDIFF
benchmarks.run.osx.arm64.checked.mch -1.36%
benchmarks.run_pgo.osx.arm64.checked.mch -0.91%
benchmarks.run_tiered.osx.arm64.checked.mch -1.86%
coreclr_tests.run.osx.arm64.checked.mch -0.73%
libraries.crossgen2.osx.arm64.checked.mch -0.20%
libraries.pmi.osx.arm64.checked.mch -1.51%
libraries_tests.run.osx.arm64.Release.mch -10.53%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch -1.60%
realworld.run.osx.arm64.checked.mch -1.00%

Throughput diffs for windows/arm64 ran on windows/x64

Overall (-3.07% to -0.00%)
Collection PDIFF
benchmarks.run.windows.arm64.checked.mch -1.38%
benchmarks.run_pgo.windows.arm64.checked.mch -1.73%
benchmarks.run_tiered.windows.arm64.checked.mch -1.18%
coreclr_tests.run.windows.arm64.checked.mch -0.22%
libraries.pmi.windows.arm64.checked.mch -1.49%
libraries_tests.run.windows.arm64.Release.mch -3.07%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch -1.58%
realworld.run.windows.arm64.checked.mch -0.97%
MinOpts (-0.83% to +0.00%)
Collection PDIFF
benchmarks.run_pgo.windows.arm64.checked.mch -0.83%
benchmarks.run_tiered.windows.arm64.checked.mch -0.79%
coreclr_tests.run.windows.arm64.checked.mch -0.03%
libraries_tests.run.windows.arm64.Release.mch -0.48%
FullOpts (-5.35% to -0.00%)
Collection PDIFF
benchmarks.run.windows.arm64.checked.mch -1.38%
benchmarks.run_pgo.windows.arm64.checked.mch -1.93%
benchmarks.run_tiered.windows.arm64.checked.mch -1.70%
coreclr_tests.run.windows.arm64.checked.mch -0.53%
libraries.pmi.windows.arm64.checked.mch -1.49%
libraries_tests.run.windows.arm64.Release.mch -5.35%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch -1.58%
realworld.run.windows.arm64.checked.mch -0.99%

Throughput diffs for windows/x64 ran on windows/x64

Overall (-4.31% to -0.52%)
Collection PDIFF
aspnet.run.windows.x64.checked.mch -1.11%
benchmarks.run.windows.x64.checked.mch -1.46%
benchmarks.run_pgo.windows.x64.checked.mch -0.91%
benchmarks.run_tiered.windows.x64.checked.mch -1.48%
coreclr_tests.run.windows.x64.checked.mch -2.20%
libraries.crossgen2.windows.x64.checked.mch -0.52%
libraries.pmi.windows.x64.checked.mch -2.41%
libraries_tests.run.windows.x64.Release.mch -4.31%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch -2.49%
realworld.run.windows.x64.checked.mch -1.00%
smoke_tests.nativeaot.windows.x64.checked.mch -1.50%
MinOpts (-13.95% to +0.01%)
Collection PDIFF
aspnet.run.windows.x64.checked.mch -2.06%
benchmarks.run.windows.x64.checked.mch +0.01%
benchmarks.run_pgo.windows.x64.checked.mch -1.91%
benchmarks.run_tiered.windows.x64.checked.mch -1.73%
coreclr_tests.run.windows.x64.checked.mch -5.25%
libraries.crossgen2.windows.x64.checked.mch +0.01%
libraries.pmi.windows.x64.checked.mch +0.01%
libraries_tests.run.windows.x64.Release.mch -2.36%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch -13.95%
realworld.run.windows.x64.checked.mch +0.01%
smoke_tests.nativeaot.windows.x64.checked.mch +0.01%
FullOpts (-5.73% to -0.20%)
Collection PDIFF
aspnet.run.windows.x64.checked.mch -0.91%
benchmarks.run.windows.x64.checked.mch -1.46%
benchmarks.run_pgo.windows.x64.checked.mch -0.74%
benchmarks.run_tiered.windows.x64.checked.mch -1.14%
coreclr_tests.run.windows.x64.checked.mch -0.20%
libraries.crossgen2.windows.x64.checked.mch -0.52%
libraries.pmi.windows.x64.checked.mch -2.41%
libraries_tests.run.windows.x64.Release.mch -5.73%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch -2.46%
realworld.run.windows.x64.checked.mch -1.02%
smoke_tests.nativeaot.windows.x64.checked.mch -1.50%

Details here


Throughput diffs for linux/arm ran on linux/x86

Overall (-4.71% to -0.00%)
Collection PDIFF
benchmarks.run.linux.arm.checked.mch -4.14%
benchmarks.run_pgo.linux.arm.checked.mch -3.00%
benchmarks.run_tiered.linux.arm.checked.mch -1.21%
coreclr_tests.run.linux.arm.checked.mch -3.75%
libraries.pmi.linux.arm.checked.mch -1.63%
libraries_tests.run.linux.arm.Release.mch -4.71%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch -3.34%
realworld.run.linux.arm.checked.mch -2.50%
MinOpts (-0.69% to +0.00%)
Collection PDIFF
benchmarks.run_pgo.linux.arm.checked.mch -0.53%
benchmarks.run_tiered.linux.arm.checked.mch -0.39%
libraries_tests.run.linux.arm.Release.mch -0.69%
FullOpts (-6.56% to -0.00%)
Collection PDIFF
benchmarks.run.linux.arm.checked.mch -4.34%
benchmarks.run_pgo.linux.arm.checked.mch -3.35%
benchmarks.run_tiered.linux.arm.checked.mch -1.95%
coreclr_tests.run.linux.arm.checked.mch -3.75%
libraries.pmi.linux.arm.checked.mch -1.63%
libraries_tests.run.linux.arm.Release.mch -6.56%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch -3.34%
realworld.run.linux.arm.checked.mch -2.53%

Details here


@ryujit-bot
Copy link

Diff results for #97529

Assembly diffs

Assembly diffs for linux/arm64 ran on windows/x64

Diffs are based on 90,968 contexts (39,217 MinOpts, 51,751 FullOpts).

MISSED contexts: base: 3,450 (2.42%), diff: 47,377 (33.29%)

Overall (-92,984 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm64.checked.mch 987,856 -5,876
benchmarks.run_pgo.linux.arm64.checked.mch 2,956,824 -20,412
benchmarks.run_tiered.linux.arm64.checked.mch 2,289,652 -17,264
coreclr_tests.run.linux.arm64.checked.mch 535,608 -288
libraries.pmi.linux.arm64.checked.mch 1,340,444 -6,676
libraries_tests.run.linux.arm64.Release.mch 1,695,136 -17,860
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch 985,512 -7,496
realworld.run.linux.arm64.checked.mch 1,677,192 -17,112
MinOpts (-48,108 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.arm64.checked.mch 2,119,436 -15,648
benchmarks.run_tiered.linux.arm64.checked.mch 2,047,816 -15,788
coreclr_tests.run.linux.arm64.checked.mch 397,428 -140
libraries_tests.run.linux.arm64.Release.mch 1,599,544 -16,532
FullOpts (-44,876 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm64.checked.mch 987,432 -5,876
benchmarks.run_pgo.linux.arm64.checked.mch 837,388 -4,764
benchmarks.run_tiered.linux.arm64.checked.mch 241,836 -1,476
coreclr_tests.run.linux.arm64.checked.mch 138,180 -148
libraries.pmi.linux.arm64.checked.mch 1,340,444 -6,676
libraries_tests.run.linux.arm64.Release.mch 95,592 -1,328
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch 985,512 -7,496
realworld.run.linux.arm64.checked.mch 1,664,872 -17,112

Assembly diffs for linux/x64 ran on windows/x64

Diffs are based on 92,598 contexts (38,516 MinOpts, 54,082 FullOpts).

MISSED contexts: base: 3,640 (2.59%), diff: 43,898 (31.25%)

Overall (-96,473 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.x64.checked.mch 721,868 -4,586
benchmarks.run_pgo.linux.x64.checked.mch 2,059,337 -15,319
benchmarks.run_tiered.linux.x64.checked.mch 2,163,412 -15,133
coreclr_tests.run.linux.x64.checked.mch 407,681 +64
libraries.pmi.linux.x64.checked.mch 737,374 -20,077
libraries_tests.run.linux.x64.Release.mch 1,447,569 -21,187
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch 830,863 -6,770
realworld.run.linux.x64.checked.mch 1,403,564 -13,465
MinOpts (-46,977 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.x64.checked.mch 1,526,742 -13,499
benchmarks.run_tiered.linux.x64.checked.mch 1,965,819 -14,023
coreclr_tests.run.linux.x64.checked.mch 303,333 -6
libraries_tests.run.linux.x64.Release.mch 1,348,426 -19,449
FullOpts (-49,496 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.x64.checked.mch 704,368 -4,586
benchmarks.run_pgo.linux.x64.checked.mch 532,595 -1,820
benchmarks.run_tiered.linux.x64.checked.mch 197,593 -1,110
coreclr_tests.run.linux.x64.checked.mch 104,348 +70
libraries.pmi.linux.x64.checked.mch 737,374 -20,077
libraries_tests.run.linux.x64.Release.mch 99,143 -1,738
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch 830,863 -6,770
realworld.run.linux.x64.checked.mch 1,401,962 -13,465

Assembly diffs for osx/arm64 ran on windows/x64

Diffs are based on 78,929 contexts (41,462 MinOpts, 37,467 FullOpts).

MISSED contexts: base: 2,856 (2.27%), diff: 43,225 (34.38%)

Overall (-92,764 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.osx.arm64.checked.mch 1,051,784 -5,840
benchmarks.run_pgo.osx.arm64.checked.mch 2,496,932 -18,464
benchmarks.run_tiered.osx.arm64.checked.mch 2,306,432 -17,176
coreclr_tests.run.osx.arm64.checked.mch 188,056 -112
libraries.pmi.osx.arm64.checked.mch 1,221,828 -4,004
libraries_tests.run.osx.arm64.Release.mch 2,206,820 -22,728
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch 1,036,932 -7,204
realworld.run.osx.arm64.checked.mch 1,633,176 -17,236
MinOpts (-55,640 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch 2,239,532 -16,808
benchmarks.run_tiered.osx.arm64.checked.mch 2,102,732 -16,288
libraries_tests.run.osx.arm64.Release.mch 2,194,452 -22,544
FullOpts (-37,124 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.osx.arm64.checked.mch 1,051,360 -5,840
benchmarks.run_pgo.osx.arm64.checked.mch 257,400 -1,656
benchmarks.run_tiered.osx.arm64.checked.mch 203,700 -888
coreclr_tests.run.osx.arm64.checked.mch 188,056 -112
libraries.pmi.osx.arm64.checked.mch 1,221,828 -4,004
libraries_tests.run.osx.arm64.Release.mch 12,368 -184
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch 1,036,932 -7,204
realworld.run.osx.arm64.checked.mch 1,633,076 -17,236

Assembly diffs for windows/arm64 ran on windows/x64

Diffs are based on 89,877 contexts (39,512 MinOpts, 50,365 FullOpts).

MISSED contexts: base: 3,991 (2.85%), diff: 46,273 (33.03%)

Overall (-90,944 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.arm64.checked.mch 850,828 -5,476
benchmarks.run_pgo.windows.arm64.checked.mch 2,287,604 -19,696
benchmarks.run_tiered.windows.arm64.checked.mch 2,227,248 -17,092
coreclr_tests.run.windows.arm64.checked.mch 561,672 -612
libraries.pmi.windows.arm64.checked.mch 1,150,104 -732
libraries_tests.run.windows.arm64.Release.mch 2,258,308 -22,440
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch 1,051,504 -7,732
realworld.run.windows.arm64.checked.mch 1,662,480 -17,164
MinOpts (-53,200 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch 1,817,936 -15,984
benchmarks.run_tiered.windows.arm64.checked.mch 2,005,868 -15,300
coreclr_tests.run.windows.arm64.checked.mch 388,052 -172
libraries_tests.run.windows.arm64.Release.mch 2,220,016 -21,744
FullOpts (-37,744 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.arm64.checked.mch 850,452 -5,476
benchmarks.run_pgo.windows.arm64.checked.mch 469,668 -3,712
benchmarks.run_tiered.windows.arm64.checked.mch 221,380 -1,792
coreclr_tests.run.windows.arm64.checked.mch 173,620 -440
libraries.pmi.windows.arm64.checked.mch 1,150,032 -732
libraries_tests.run.windows.arm64.Release.mch 38,292 -696
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch 1,051,504 -7,732
realworld.run.windows.arm64.checked.mch 1,662,380 -17,164

Assembly diffs for windows/x64 ran on windows/x64

Diffs are based on 93,749 contexts (40,209 MinOpts, 53,540 FullOpts).

MISSED contexts: base: 3,301 (2.30%), diff: 45,642 (31.75%)

Overall (-98,879 bytes)
Collection Base size (bytes) Diff size (bytes)
aspnet.run.windows.x64.checked.mch 918,586 -3,514
benchmarks.run.windows.x64.checked.mch 637,100 -4,369
benchmarks.run_pgo.windows.x64.checked.mch 1,575,206 -12,251
benchmarks.run_tiered.windows.x64.checked.mch 1,518,103 -14,901
coreclr_tests.run.windows.x64.checked.mch 379,814 +12
libraries.pmi.windows.x64.checked.mch 837,452 -17,566
libraries_tests.run.windows.x64.Release.mch 1,540,227 -23,414
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch 745,455 -8,097
realworld.run.windows.x64.checked.mch 1,799,593 -14,779
MinOpts (-51,463 bytes)
Collection Base size (bytes) Diff size (bytes)
aspnet.run.windows.x64.checked.mch 566,802 -3,837
benchmarks.run_pgo.windows.x64.checked.mch 1,172,226 -11,291
benchmarks.run_tiered.windows.x64.checked.mch 1,333,260 -13,988
coreclr_tests.run.windows.x64.checked.mch 289,459 +114
libraries_tests.run.windows.x64.Release.mch 1,489,732 -22,461
FullOpts (-47,416 bytes)
Collection Base size (bytes) Diff size (bytes)
aspnet.run.windows.x64.checked.mch 351,784 +323
benchmarks.run.windows.x64.checked.mch 636,868 -4,369
benchmarks.run_pgo.windows.x64.checked.mch 402,980 -960
benchmarks.run_tiered.windows.x64.checked.mch 184,843 -913
coreclr_tests.run.windows.x64.checked.mch 90,355 -102
libraries.pmi.windows.x64.checked.mch 837,452 -17,566
libraries_tests.run.windows.x64.Release.mch 50,495 -953
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch 745,455 -8,097
realworld.run.windows.x64.checked.mch 1,799,593 -14,779

Details here


Assembly diffs for windows/x86 ran on windows/x86

Diffs are based on 53,492 contexts (17,492 MinOpts, 36,000 FullOpts).

MISSED contexts: base: 3,510 (3.05%), diff: 58,094 (50.45%)

Overall (-52,308 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.x86.checked.mch 298,081 -3,108
benchmarks.run_pgo.windows.x86.checked.mch 726,262 -8,964
benchmarks.run_tiered.windows.x86.checked.mch 706,843 -9,977
coreclr_tests.run.windows.x86.checked.mch 46,161 -42
libraries.pmi.windows.x86.checked.mch 1,461,078 -3,494
libraries_tests.run.windows.x86.Release.mch 510,379 -15,767
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch 256,268 -5,307
realworld.run.windows.x86.checked.mch 481,011 -5,649
MinOpts (-27,508 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.windows.x86.checked.mch 414,129 -6,800
benchmarks.run_tiered.windows.x86.checked.mch 520,835 -7,704
libraries_tests.run.windows.x86.Release.mch 413,867 -13,004
FullOpts (-24,800 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.x86.checked.mch 297,884 -3,108
benchmarks.run_pgo.windows.x86.checked.mch 312,133 -2,164
benchmarks.run_tiered.windows.x86.checked.mch 186,008 -2,273
coreclr_tests.run.windows.x86.checked.mch 46,161 -42
libraries.pmi.windows.x86.checked.mch 1,461,078 -3,494
libraries_tests.run.windows.x86.Release.mch 96,512 -2,763
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch 256,268 -5,307
realworld.run.windows.x86.checked.mch 481,011 -5,649

Details here


Throughput diffs

Throughput diffs for linux/arm64 ran on linux/x64

Overall (-9.63% to -0.00%)
Collection PDIFF
benchmarks.run.linux.arm64.checked.mch -1.16%
benchmarks.run_pgo.linux.arm64.checked.mch -1.27%
benchmarks.run_tiered.linux.arm64.checked.mch -0.60%
coreclr_tests.run.linux.arm64.checked.mch -0.29%
libraries.pmi.linux.arm64.checked.mch -1.48%
libraries_tests.run.linux.arm64.Release.mch -9.63%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch -1.58%
realworld.run.linux.arm64.checked.mch -0.93%
MinOpts (-0.63% to +0.00%)
Collection PDIFF
benchmarks.run_pgo.linux.arm64.checked.mch -0.63%
benchmarks.run_tiered.linux.arm64.checked.mch -0.53%
coreclr_tests.run.linux.arm64.checked.mch -0.03%
libraries_tests.run.linux.arm64.Release.mch -0.51%
FullOpts (-14.40% to -0.00%)
Collection PDIFF
benchmarks.run.linux.arm64.checked.mch -1.22%
benchmarks.run_pgo.linux.arm64.checked.mch -1.36%
benchmarks.run_tiered.linux.arm64.checked.mch -0.70%
coreclr_tests.run.linux.arm64.checked.mch -0.71%
libraries.pmi.linux.arm64.checked.mch -1.48%
libraries_tests.run.linux.arm64.Release.mch -14.40%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch -1.59%
realworld.run.linux.arm64.checked.mch -0.95%

Throughput diffs for linux/x64 ran on linux/x64

Overall (-2.22% to -0.01%)
Collection PDIFF
benchmarks.run_tiered.linux.x64.checked.mch -1.12%
benchmarks.run_pgo.linux.x64.checked.mch -1.18%
libraries.pmi.linux.x64.checked.mch -1.61%
libraries.crossgen2.linux.x64.checked.mch -0.01%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch -1.50%
libraries_tests.run.linux.x64.Release.mch -2.22%
benchmarks.run.linux.x64.checked.mch -1.60%
smoke_tests.nativeaot.linux.x64.checked.mch -0.01%
coreclr_tests.run.linux.x64.checked.mch -0.98%
realworld.run.linux.x64.checked.mch -1.52%
MinOpts (-2.34% to 0.00%)
Collection PDIFF
benchmarks.run_tiered.linux.x64.checked.mch -1.48%
benchmarks.run_pgo.linux.x64.checked.mch -1.37%
libraries_tests.run.linux.x64.Release.mch -2.34%
benchmarks.run.linux.x64.checked.mch -0.03%
coreclr_tests.run.linux.x64.checked.mch -0.03%
realworld.run.linux.x64.checked.mch -0.02%
FullOpts (-1.84% to -0.01%)
Collection PDIFF
benchmarks.run_tiered.linux.x64.checked.mch -0.63%
benchmarks.run_pgo.linux.x64.checked.mch -1.01%
libraries.pmi.linux.x64.checked.mch -1.61%
libraries.crossgen2.linux.x64.checked.mch -0.01%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch -1.50%
libraries_tests.run.linux.x64.Release.mch -1.84%
benchmarks.run.linux.x64.checked.mch -1.60%
smoke_tests.nativeaot.linux.x64.checked.mch -0.01%
coreclr_tests.run.linux.x64.checked.mch -1.34%
realworld.run.linux.x64.checked.mch -1.52%

Throughput diffs for osx/arm64 ran on linux/x64

Overall (-6.05% to -0.20%)
Collection PDIFF
benchmarks.run.osx.arm64.checked.mch -1.36%
benchmarks.run_pgo.osx.arm64.checked.mch -0.87%
benchmarks.run_tiered.osx.arm64.checked.mch -1.20%
coreclr_tests.run.osx.arm64.checked.mch -0.29%
libraries.crossgen2.osx.arm64.checked.mch -0.20%
libraries.pmi.osx.arm64.checked.mch -1.51%
libraries_tests.run.osx.arm64.Release.mch -6.05%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch -1.59%
realworld.run.osx.arm64.checked.mch -0.98%
MinOpts (-0.79% to +0.00%)
Collection PDIFF
benchmarks.run_pgo.osx.arm64.checked.mch -0.79%
benchmarks.run_tiered.osx.arm64.checked.mch -0.78%
coreclr_tests.run.osx.arm64.checked.mch -0.03%
libraries_tests.run.osx.arm64.Release.mch -0.51%
FullOpts (-10.53% to -0.20%)
Collection PDIFF
benchmarks.run.osx.arm64.checked.mch -1.36%
benchmarks.run_pgo.osx.arm64.checked.mch -0.91%
benchmarks.run_tiered.osx.arm64.checked.mch -1.86%
coreclr_tests.run.osx.arm64.checked.mch -0.73%
libraries.crossgen2.osx.arm64.checked.mch -0.20%
libraries.pmi.osx.arm64.checked.mch -1.51%
libraries_tests.run.osx.arm64.Release.mch -10.53%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch -1.60%
realworld.run.osx.arm64.checked.mch -1.00%

Throughput diffs for windows/arm64 ran on linux/x64

Overall (-3.07% to -0.00%)
Collection PDIFF
benchmarks.run.windows.arm64.checked.mch -1.38%
benchmarks.run_pgo.windows.arm64.checked.mch -1.73%
benchmarks.run_tiered.windows.arm64.checked.mch -1.18%
coreclr_tests.run.windows.arm64.checked.mch -0.22%
libraries.pmi.windows.arm64.checked.mch -1.49%
libraries_tests.run.windows.arm64.Release.mch -3.07%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch -1.58%
realworld.run.windows.arm64.checked.mch -0.97%
MinOpts (-0.83% to +0.00%)
Collection PDIFF
benchmarks.run_pgo.windows.arm64.checked.mch -0.83%
benchmarks.run_tiered.windows.arm64.checked.mch -0.79%
coreclr_tests.run.windows.arm64.checked.mch -0.03%
libraries_tests.run.windows.arm64.Release.mch -0.48%
FullOpts (-5.35% to -0.00%)
Collection PDIFF
benchmarks.run.windows.arm64.checked.mch -1.38%
benchmarks.run_pgo.windows.arm64.checked.mch -1.93%
benchmarks.run_tiered.windows.arm64.checked.mch -1.70%
coreclr_tests.run.windows.arm64.checked.mch -0.53%
libraries.pmi.windows.arm64.checked.mch -1.49%
libraries_tests.run.windows.arm64.Release.mch -5.35%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch -1.58%
realworld.run.windows.arm64.checked.mch -0.99%

Details here


Throughput diffs for windows/x86 ran on linux/x86

Overall (-2.29% to -0.00%)
Collection PDIFF
benchmarks.run.windows.x86.checked.mch -1.30%
benchmarks.run_pgo.windows.x86.checked.mch -2.09%
benchmarks.run_tiered.windows.x86.checked.mch -1.22%
coreclr_tests.run.windows.x86.checked.mch -0.46%
libraries.pmi.windows.x86.checked.mch -1.73%
libraries_tests.run.windows.x86.Release.mch -1.78%
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch -2.29%
realworld.run.windows.x86.checked.mch -1.12%
MinOpts (-1.11% to +0.00%)
Collection PDIFF
benchmarks.run_pgo.windows.x86.checked.mch -1.08%
benchmarks.run_tiered.windows.x86.checked.mch -1.11%
coreclr_tests.run.windows.x86.checked.mch -0.17%
libraries_tests.run.windows.x86.Release.mch -0.62%
FullOpts (-2.60% to -0.00%)
Collection PDIFF
benchmarks.run.windows.x86.checked.mch -1.30%
benchmarks.run_pgo.windows.x86.checked.mch -2.27%
benchmarks.run_tiered.windows.x86.checked.mch -1.31%
coreclr_tests.run.windows.x86.checked.mch -0.58%
libraries.pmi.windows.x86.checked.mch -1.73%
libraries_tests.run.windows.x86.Release.mch -2.60%
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch -2.30%
realworld.run.windows.x86.checked.mch -1.14%

Details here


@ryujit-bot
Copy link

Diff results for #97529

Throughput diffs

Throughput diffs for linux/x64 ran on windows/x64

Overall (-9.59% to +0.01%)
Collection PDIFF
benchmarks.run.linux.x64.checked.mch -1.18%
benchmarks.run_pgo.linux.x64.checked.mch -1.14%
benchmarks.run_tiered.linux.x64.checked.mch -0.61%
coreclr_tests.run.linux.x64.checked.mch -0.02%
libraries.pmi.linux.x64.checked.mch -0.85%
libraries_tests.run.linux.x64.Release.mch -9.59%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch -1.42%
realworld.run.linux.x64.checked.mch -0.88%
smoke_tests.nativeaot.linux.x64.checked.mch +0.01%
MinOpts (-0.56% to +0.07%)
Collection PDIFF
benchmarks.run_pgo.linux.x64.checked.mch -0.54%
benchmarks.run_tiered.linux.x64.checked.mch -0.52%
coreclr_tests.run.linux.x64.checked.mch +0.07%
libraries_tests.run.linux.x64.Release.mch -0.56%
FullOpts (-13.41% to +0.01%)
Collection PDIFF
benchmarks.run.linux.x64.checked.mch -1.22%
benchmarks.run_pgo.linux.x64.checked.mch -1.22%
benchmarks.run_tiered.linux.x64.checked.mch -0.74%
coreclr_tests.run.linux.x64.checked.mch -0.08%
libraries.pmi.linux.x64.checked.mch -0.85%
libraries_tests.run.linux.x64.Release.mch -13.41%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch -1.43%
realworld.run.linux.x64.checked.mch -0.90%
smoke_tests.nativeaot.linux.x64.checked.mch +0.01%

Throughput diffs for windows/x64 ran on windows/x64

Overall (-4.31% to -0.52%)
Collection PDIFF
aspnet.run.windows.x64.checked.mch -1.11%
benchmarks.run.windows.x64.checked.mch -1.46%
benchmarks.run_pgo.windows.x64.checked.mch -0.91%
benchmarks.run_tiered.windows.x64.checked.mch -1.48%
coreclr_tests.run.windows.x64.checked.mch -2.20%
libraries.crossgen2.windows.x64.checked.mch -0.52%
libraries.pmi.windows.x64.checked.mch -2.41%
libraries_tests.run.windows.x64.Release.mch -4.31%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch -2.49%
realworld.run.windows.x64.checked.mch -1.00%
smoke_tests.nativeaot.windows.x64.checked.mch -1.50%
MinOpts (-13.95% to +0.01%)
Collection PDIFF
aspnet.run.windows.x64.checked.mch -2.06%
benchmarks.run.windows.x64.checked.mch +0.01%
benchmarks.run_pgo.windows.x64.checked.mch -1.91%
benchmarks.run_tiered.windows.x64.checked.mch -1.73%
coreclr_tests.run.windows.x64.checked.mch -5.25%
libraries.crossgen2.windows.x64.checked.mch +0.01%
libraries.pmi.windows.x64.checked.mch +0.01%
libraries_tests.run.windows.x64.Release.mch -2.36%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch -13.95%
realworld.run.windows.x64.checked.mch +0.01%
smoke_tests.nativeaot.windows.x64.checked.mch +0.01%
FullOpts (-5.73% to -0.20%)
Collection PDIFF
aspnet.run.windows.x64.checked.mch -0.91%
benchmarks.run.windows.x64.checked.mch -1.46%
benchmarks.run_pgo.windows.x64.checked.mch -0.74%
benchmarks.run_tiered.windows.x64.checked.mch -1.14%
coreclr_tests.run.windows.x64.checked.mch -0.20%
libraries.crossgen2.windows.x64.checked.mch -0.52%
libraries.pmi.windows.x64.checked.mch -2.41%
libraries_tests.run.windows.x64.Release.mch -5.73%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch -2.46%
realworld.run.windows.x64.checked.mch -1.02%
smoke_tests.nativeaot.windows.x64.checked.mch -1.50%

Details here


Throughput diffs for linux/arm ran on linux/x86

Overall (-4.71% to -0.00%)
Collection PDIFF
benchmarks.run.linux.arm.checked.mch -4.14%
benchmarks.run_pgo.linux.arm.checked.mch -3.00%
benchmarks.run_tiered.linux.arm.checked.mch -1.21%
coreclr_tests.run.linux.arm.checked.mch -3.75%
libraries.pmi.linux.arm.checked.mch -1.63%
libraries_tests.run.linux.arm.Release.mch -4.71%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch -3.34%
realworld.run.linux.arm.checked.mch -2.50%
MinOpts (-0.69% to +0.00%)
Collection PDIFF
benchmarks.run_pgo.linux.arm.checked.mch -0.53%
benchmarks.run_tiered.linux.arm.checked.mch -0.39%
libraries_tests.run.linux.arm.Release.mch -0.69%
FullOpts (-6.56% to -0.00%)
Collection PDIFF
benchmarks.run.linux.arm.checked.mch -4.34%
benchmarks.run_pgo.linux.arm.checked.mch -3.35%
benchmarks.run_tiered.linux.arm.checked.mch -1.95%
coreclr_tests.run.linux.arm.checked.mch -3.75%
libraries.pmi.linux.arm.checked.mch -1.63%
libraries_tests.run.linux.arm.Release.mch -6.56%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch -3.34%
realworld.run.linux.arm.checked.mch -2.53%

Details here


@khushal1996
Copy link
Contributor Author

tracking #40234 for dotnet/doc breaking change documentation.

@khushal1996
Copy link
Contributor Author

@tannergooding
can you help review the new changes? The review from our offline discussion is already incorporated here. Let me know if anything else is needed before we merge.

Copy link
Member

@tannergooding tannergooding left a comment

Choose a reason for hiding this comment

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

LGTM, minus a couple bits of code I think can be removed now.

I do think there are some more optimization opportunities available, but we can handle those in a follow up PR.

CC. @dotnet/jit-contrib for secondary sign-off

@@ -791,7 +791,7 @@ void Lowering::LowerPutArgStkOrSplit(GenTreePutArgStk* putArgNode)
// don't expect to see them here.
// i) GT_CAST(float/double, int type with overflow detection)
//
void Lowering::LowerCast(GenTree* tree)
GenTree* Lowering::LowerCast(GenTree* tree)
Copy link
Member

Choose a reason for hiding this comment

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

can you add the comment about return value in summary docs?

break;
{
GenTree* nextNode = LowerCast(node);
if (nextNode != nullptr)
Copy link
Member

Choose a reason for hiding this comment

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

can we #ifdef TARGET_XARCH here to check the nextNode != nullptr?

Copy link
Member

Choose a reason for hiding this comment

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

IMO such micro optimizations should be left up to the compiler. This just adds a potential point of confusion/source of bugs if someone ever modifies an architecture specific LowerCast outside xarch.

Copy link
Member

@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.

I don't have any comments beyond those already written.

@tannergooding tannergooding merged commit 1a7904e into dotnet:main Apr 5, 2024
123 checks passed
@jakobbotsch
Copy link
Member

Just curious, is this PR a bug fix to the behavior? Is it expected for this to primarily result in code size/perfscore regressions?
image

@tannergooding
Copy link
Member

Just curious, is this PR a bug fix to the behavior? Is it expected for this to primarily result in code size/perfscore regressions?

Yes.

The general summary is that floating-point to integer conversions have implementation-defined behavior (per both the IEEE 754 and .NET runtime specifications) when a floating-point value has a greater magnitude than the maximum or minimum value of the target integer type. Historically x86/x64 architectures have returned a sentinel value for these cases, while newer platforms such as Arm64 and WASM have opted to saturate instead.

.NET is opting to start standardizing this behavior across platforms and make it consistent by performing saturating conversions everywhere. This saturating behavior more closely mirrors the typical IEEE 754 floating-point rules around other operations, which is that operations are done as if to infinite precision and unbounded range, then rounded to the nearest representable result. It also then mirrors similar decisions for deterministic behavior made by other languages/ecosystems including Rust, Java, etc.

Compatibility APIs (as detailed in #61885) are being added in a follow up PR for cases where the platform-specific behavior is desired. This is primarily provided for cases where a developer wants the most performance and doesn’t mind getting different results between x64 and Arm64 machines or between an x64 machine that supports AVX2 (~2013 or later) and an x64 machine that supports AVX512 (~2017 or later).

@BruceForstall
Copy link
Member

Thanks @khushal1996 for the contribution, and for persisting through a long review process!

@khushal1996
Copy link
Contributor Author

Thanks @BruceForstall @tannergooding @jkotas for the review.

jkotas added a commit that referenced this pull request Apr 6, 2024
* Saturating floating point to integer conversions on Arm32

Follow up on #97529 (comment)

* Fixes, cleanup
@tannergooding
Copy link
Member

Just noting per the above that the regressions are expected. We do want to track them and see if we can minimize the cost further where possible (I had a few ideas to improve the codegen and will take a look at it more deeply).

The regressions here are also basically "worst case" scenarios, as they are namely the ones primarily testing floating-point to integer conversion perf.

matouskozak pushed a commit to matouskozak/runtime that referenced this pull request Apr 30, 2024
* merging with main
Initial changes for scalar conversion double -> ulong

* Basic working version of double -> ulong saturation

* Moving the code in a do-while with proper checks to amke sure we are adding the fixup node at all cases

* adjusting comments

* Merging with main
Saturating NaN to 0 and also adding Dbl2Ulng implementation in MathHelpers. Adding vector conversion support for double /float -> ulong conversion

* removing conflicts from gentree.h flags
merging with main
doubel to uint conversion

* float to uint conversion verified. removing commented code

* merging with main. Making changes to simdashwintrinsic.cpp and
listxarch.h
float -> uint packed conversion

* progress on double to long morphing

* another attempt at double to long conversion

* Merge with main
Merge with main

adding a new helper function ofr float to uint scalar conversion for SSE2.

* adding handling for scalar conversion cases for SSE2. Remaining float/double -> long/int for AVX512.

* partial changes for float to int conversion using double to int for avx512. vfixup not working. next step is to fix the vfixup instruction and get it working

* adding float to int working scalar conversion case. Working on vectro case here on.

* partial work on float to int packed conversion

* partial version of float to int conversion

* working version of float to int scalar/packed for avx512

* complete conversions code for floating point to integral conversions for scalar/packed for SSE / avx512

* Merging with main.
fixing out of range test case adn adding conversion changes to simdashwintrinsic

* fixing debug checks hitting asserts for TYP_ULONG and TYP_UINT at IR level

* adding JIT_Dbl2Int for target_x86 and other architectures.

* Supporting x86 for saturating conversions as well

* fixing errors in packed conversion

* accomodate unsigned in IR

* adding evex support for cvttss2si

* Mergw with main
defining nativeaot helpers for x86

* Catch divide by zero exception

* Handle overflow cases

* Fix tests to check saturating behavior

* Correct mapping of instructions

* Convert float -> ulong / long as float -> double -> ulong / long

* Merging with main
Initial changes for scalar conversion double -> ulong

* Merging with main
adjusting comments

* removing conflicts from gentree.h flags
merging with main
doubel to uint conversion

* merging with main. Making changes to simdashwintrinsic.cpp and
listxarch.h
float -> uint packed conversion

* adding a new helper function ofr float to uint scalar conversion for SSE2.

* Merging with main

adding handling for scalar conversion cases for SSE2. Remaining float/double -> long/int for AVX512.

* partial changes for float to int conversion using double to int for avx512. vfixup not working. next step is to fix the vfixup instruction and get it working

* partial version of float to int conversion

* working version of float to int scalar/packed for avx512

* Merging with main.
fixing out of range test case adn adding conversion changes to simdashwintrinsic

* Changing the way helper functions are handled in morph
fixing debug checks hitting asserts for TYP_ULONG and TYP_UINT at IR level

* adding JIT_Dbl2Int for target_x86 and other architectures.

* Supporting x86 for saturating conversions as well

* fixing errors in packed conversion

* Correct mapping of instructions

* delete extra files

* Merging main
review changes

* Merge with main and adding new helpers in nativeaot
Rebasing with main

* changing type of cast node as signed when making cast nodes

* Avoiding removing extra element from the stack

* Fix formatting, Change comp->IsaSupportedDebugOnly to IsBaselineVector512SupportedDebugOnly

* Reverting some changes to maintain uniformity in code

* Handling cases where AVX512 is not supported in simdashwintrinsic.cpp

* fixing exit conditions for ConvertVectorT_ToDouble

* Check for AVX512 support for TARGET_XARCH

* Avoid avx512 path for x86

* Enable AVX512F codepath for conversions in x86 arch. Move x86 to using c++ helpers

* Add SSE41 path for scalar conversions and 128 bit float to int packed conversions

* Adding SSE41 path for floating point to UINT scalar conversions

* Add AVX path for ConvertToInt32

* Adding comments and cleaning the code

* Fix errors in double to ulong

* Addressing review comments

* Fix tests

* Reverse val < 0 check in dbltoUint and dbltoUlng helpers

* Add overflow conversions for 86/x64, remove FastDbl2Lng and inline it

* Apply suggestions from code review

Co-authored-by: Jan Kotas <jkotas@microsoft.com>

* Correct Dbl2UlngOvf

* Apply suggestions from code review

* Apply suggestions from code review

* Update src/coreclr/vm/jithelpers.cpp

* Disable failing mono tests

* Working version of saturating logic moved to lowering for x86/x64

* Making changes for pre SSE41

* Apply suggestions from code review

Co-authored-by: Jan Kotas <jkotas@microsoft.com>

* Removing dead code

* Fix formatting

* Address review comments, add proper docstrings

---------

Co-authored-by: Jan Kotas <jkotas@microsoft.com>
matouskozak pushed a commit to matouskozak/runtime that referenced this pull request Apr 30, 2024
)

* Saturating floating point to integer conversions on Arm32

Follow up on dotnet#97529 (comment)

* Fixes, cleanup
@github-actions github-actions bot locked and limited conversation to collaborators May 10, 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 breaking-change Issue or PR that represents a breaking API or functional change over a prerelease. community-contribution Indicates that the PR has been added by a community member needs-breaking-change-doc-created Breaking changes need an issue opened with https://github.com/dotnet/docs/issues/new?template=dotnet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet