Skip to content

[JitDiff X64] [Garume] JIT: Expand high-rank multidimensional array intrinsics #2173

Open

Description

@MihuBot

Job completed in 17 minutes 44 seconds (remote runner delay: 1 minute 1 second).
dotnet/runtime#135184

Main commit: dotnet/runtime@cfe8a6c
PR commit: Garume/runtime@fe6a459

Diffs

Browse JIT diff results and examples

25 changed method listings; 25 examples across 5 assemblies.

Found 89 files with textual diffs.

Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 162270640
Total bytes of diff: 162272689
Total bytes of delta: 2049 (0.00 % of base)
Total relative delta: 1.95
    diff is a regression.
    relative diff is a regression.


Top file regressions (bytes):
        1549 : MessagePack.dasm (0.14 % of base)
         500 : SixLabors.ImageSharp.dasm (0.02 % of base)

2 total files with Code Size differences (0 improved, 2 regressed), 352 unchanged.

Top method regressions (bytes):
         170 (8.77 % of base) : MessagePack.dasm - MessagePack.Formatters.FourDimensionalArrayFormatter`1[System.__Canon]:Serialize(byref,System.__Canon[,,,],MessagePack.MessagePackSerializerOptions):this (FullOpts)
         154 (12.93 % of base) : SixLabors.ImageSharp.dasm - SixLabors.ImageSharp.Formats.Webp.Lossy.WebpLossyDecoder:ParseProbabilities(SixLabors.ImageSharp.Formats.Webp.Lossy.Vp8Decoder):this (FullOpts)
         150 (37.31 % of base) : SixLabors.ImageSharp.dasm - SixLabors.ImageSharp.Formats.Webp.BitWriter.Vp8BitWriter:WriteProbas():this (FullOpts)
         129 (17.43 % of base) : SixLabors.ImageSharp.dasm - SixLabors.ImageSharp.Formats.Webp.Lossy.Vp8EncProba:FinalizeTokenProbas():int:this (FullOpts)
         118 (11.82 % of base) : MessagePack.dasm - MessagePack.Formatters.FourDimensionalArrayFormatter`1[long]:Deserialize(byref,MessagePack.MessagePackSerializerOptions):long[,,,]:this (FullOpts)
         118 (11.82 % of base) : MessagePack.dasm - MessagePack.Formatters.FourDimensionalArrayFormatter`1[short]:Deserialize(byref,MessagePack.MessagePackSerializerOptions):short[,,,]:this (FullOpts)
         117 (11.72 % of base) : MessagePack.dasm - MessagePack.Formatters.FourDimensionalArrayFormatter`1[byte]:Deserialize(byref,MessagePack.MessagePackSerializerOptions):byte[,,,]:this (FullOpts)
         117 (11.76 % of base) : MessagePack.dasm - MessagePack.Formatters.FourDimensionalArrayFormatter`1[double]:Deserialize(byref,MessagePack.MessagePackSerializerOptions):double[,,,]:this (FullOpts)
         117 (11.72 % of base) : MessagePack.dasm - MessagePack.Formatters.FourDimensionalArrayFormatter`1[int]:Deserialize(byref,MessagePack.MessagePackSerializerOptions):int[,,,]:this (FullOpts)
         116 (11.53 % of base) : MessagePack.dasm - MessagePack.Formatters.FourDimensionalArrayFormatter`1[System.Nullable`1[int]]:Deserialize(byref,MessagePack.MessagePackSerializerOptions):System.Nullable`1[int][,,,]:this (FullOpts)
         100 (9.22 % of base) : MessagePack.dasm - MessagePack.Formatters.FourDimensionalArrayFormatter`1[System.Numerics.Vector`1[float]]:Deserialize(byref,MessagePack.MessagePackSerializerOptions):System.Numerics.Vector`1[float][,,,]:this (FullOpts)
          93 (5.44 % of base) : MessagePack.dasm - MessagePack.Formatters.FourDimensionalArrayFormatter`1[byte]:Serialize(byref,byte[,,,],MessagePack.MessagePackSerializerOptions):this (FullOpts)
          93 (5.43 % of base) : MessagePack.dasm - MessagePack.Formatters.FourDimensionalArrayFormatter`1[long]:Serialize(byref,long[,,,],MessagePack.MessagePackSerializerOptions):this (FullOpts)
          93 (5.44 % of base) : MessagePack.dasm - MessagePack.Formatters.FourDimensionalArrayFormatter`1[short]:Serialize(byref,short[,,,],MessagePack.MessagePackSerializerOptions):this (FullOpts)
          92 (5.38 % of base) : MessagePack.dasm - MessagePack.Formatters.FourDimensionalArrayFormatter`1[int]:Serialize(byref,int[,,,],MessagePack.MessagePackSerializerOptions):this (FullOpts)
          83 (4.86 % of base) : MessagePack.dasm - MessagePack.Formatters.FourDimensionalArrayFormatter`1[double]:Serialize(byref,double[,,,],MessagePack.MessagePackSerializerOptions):this (FullOpts)
          80 (4.62 % of base) : MessagePack.dasm - MessagePack.Formatters.FourDimensionalArrayFormatter`1[System.Nullable`1[int]]:Serialize(byref,System.Nullable`1[int][,,,],MessagePack.MessagePackSerializerOptions):this (FullOpts)
          67 (5.49 % of base) : SixLabors.ImageSharp.dasm - SixLabors.ImageSharp.Formats.Webp.Lossy.Vp8EncProba:.ctor():this (FullOpts)
          42 (2.38 % of base) : MessagePack.dasm - MessagePack.Formatters.FourDimensionalArrayFormatter`1[System.Numerics.Vector`1[float]]:Serialize(byref,System.Numerics.Vector`1[float][,,,],MessagePack.MessagePackSerializerOptions):this (FullOpts)

Top method regressions (percentages):
         150 (37.31 % of base) : SixLabors.ImageSharp.dasm - SixLabors.ImageSharp.Formats.Webp.BitWriter.Vp8BitWriter:WriteProbas():this (FullOpts)
         129 (17.43 % of base) : SixLabors.ImageSharp.dasm - SixLabors.ImageSharp.Formats.Webp.Lossy.Vp8EncProba:FinalizeTokenProbas():int:this (FullOpts)
         154 (12.93 % of base) : SixLabors.ImageSharp.dasm - SixLabors.ImageSharp.Formats.Webp.Lossy.WebpLossyDecoder:ParseProbabilities(SixLabors.ImageSharp.Formats.Webp.Lossy.Vp8Decoder):this (FullOpts)
         118 (11.82 % of base) : MessagePack.dasm - MessagePack.Formatters.FourDimensionalArrayFormatter`1[long]:Deserialize(byref,MessagePack.MessagePackSerializerOptions):long[,,,]:this (FullOpts)
         118 (11.82 % of base) : MessagePack.dasm - MessagePack.Formatters.FourDimensionalArrayFormatter`1[short]:Deserialize(byref,MessagePack.MessagePackSerializerOptions):short[,,,]:this (FullOpts)
         117 (11.76 % of base) : MessagePack.dasm - MessagePack.Formatters.FourDimensionalArrayFormatter`1[double]:Deserialize(byref,MessagePack.MessagePackSerializerOptions):double[,,,]:this (FullOpts)
         117 (11.72 % of base) : MessagePack.dasm - MessagePack.Formatters.FourDimensionalArrayFormatter`1[byte]:Deserialize(byref,MessagePack.MessagePackSerializerOptions):byte[,,,]:this (FullOpts)
         117 (11.72 % of base) : MessagePack.dasm - MessagePack.Formatters.FourDimensionalArrayFormatter`1[int]:Deserialize(byref,MessagePack.MessagePackSerializerOptions):int[,,,]:this (FullOpts)
         116 (11.53 % of base) : MessagePack.dasm - MessagePack.Formatters.FourDimensionalArrayFormatter`1[System.Nullable`1[int]]:Deserialize(byref,MessagePack.MessagePackSerializerOptions):System.Nullable`1[int][,,,]:this (FullOpts)
         100 (9.22 % of base) : MessagePack.dasm - MessagePack.Formatters.FourDimensionalArrayFormatter`1[System.Numerics.Vector`1[float]]:Deserialize(byref,MessagePack.MessagePackSerializerOptions):System.Numerics.Vector`1[float][,,,]:this (FullOpts)
         170 (8.77 % of base) : MessagePack.dasm - MessagePack.Formatters.FourDimensionalArrayFormatter`1[System.__Canon]:Serialize(byref,System.__Canon[,,,],MessagePack.MessagePackSerializerOptions):this (FullOpts)
          67 (5.49 % of base) : SixLabors.ImageSharp.dasm - SixLabors.ImageSharp.Formats.Webp.Lossy.Vp8EncProba:.ctor():this (FullOpts)
          93 (5.44 % of base) : MessagePack.dasm - MessagePack.Formatters.FourDimensionalArrayFormatter`1[byte]:Serialize(byref,byte[,,,],MessagePack.MessagePackSerializerOptions):this (FullOpts)
          93 (5.44 % of base) : MessagePack.dasm - MessagePack.Formatters.FourDimensionalArrayFormatter`1[short]:Serialize(byref,short[,,,],MessagePack.MessagePackSerializerOptions):this (FullOpts)
          93 (5.43 % of base) : MessagePack.dasm - MessagePack.Formatters.FourDimensionalArrayFormatter`1[long]:Serialize(byref,long[,,,],MessagePack.MessagePackSerializerOptions):this (FullOpts)
          92 (5.38 % of base) : MessagePack.dasm - MessagePack.Formatters.FourDimensionalArrayFormatter`1[int]:Serialize(byref,int[,,,],MessagePack.MessagePackSerializerOptions):this (FullOpts)
          83 (4.86 % of base) : MessagePack.dasm - MessagePack.Formatters.FourDimensionalArrayFormatter`1[double]:Serialize(byref,double[,,,],MessagePack.MessagePackSerializerOptions):this (FullOpts)
          80 (4.62 % of base) : MessagePack.dasm - MessagePack.Formatters.FourDimensionalArrayFormatter`1[System.Nullable`1[int]]:Serialize(byref,System.Nullable`1[int][,,,],MessagePack.MessagePackSerializerOptions):this (FullOpts)
          42 (2.38 % of base) : MessagePack.dasm - MessagePack.Formatters.FourDimensionalArrayFormatter`1[System.Numerics.Vector`1[float]]:Serialize(byref,System.Numerics.Vector`1[float][,,,],MessagePack.MessagePackSerializerOptions):this (FullOpts)

19 total methods with Code Size differences (0 improved, 19 regressed), 834077 unchanged.

--------------------------------------------------------------------------------

Artifacts:

Activity

  1. MihuBot commented on Oct 4, 2026

    @MihuBot
    OwnerAuthor

    JIT diff regressions

    SixLabors.ImageSharp.Formats.Webp.BitWriter.Vp8BitWriter:WriteProbas():this (FullOpts) (402 -> 552 bytes (+150))

    Assembly: SixLabors.ImageSharp.dasm

    @@ -1,185 +1,240 @@
     ; Assembly listing for method SixLabors.ImageSharp.Formats.Webp.BitWriter.Vp8BitWriter:WriteProbas():this (FullOpts)
     ; Emitting BLENDED_CODE for x64 + VEX + EVEX on Unix
     ; FullOpts code
     ; optimized code
     ; rbp based frame
     ; partially interruptible
     ; No PGO data
     ; 0 inlinees with PGO data; 7 single block inlinees; 2 inlinees without PGO data
     ; Final local variable assignments
     ;
    -;  V00 this         [V00,T11] (  7, 5128   )     ref  ->  rbx         this class-hnd single-def <SixLabors.ImageSharp.Formats.Webp.BitWriter.Vp8BitWriter>
    -;  V01 loc0         [V01,T13] (  4, 4098.50)     ref  ->  r15         class-hnd single-def <SixLabors.ImageSharp.Formats.Webp.Lossy.Vp8EncProba>
    -;* V02 loc1         [V02,T19] (  0,    0   )     int  ->  zero-ref   
    -;* V03 loc2         [V03,T18] (  0,    0   )     int  ->  zero-ref   
    -;* V04 loc3         [V04,T15] (  0,    0   )     int  ->  zero-ref   
    -;* V05 loc4         [V05,T14] (  0,    0   )     int  ->  zero-ref   
    -;  V06 loc5         [V06,T10] (  3, 9216   )   ubyte  ->  [rbp-0x2C]  spill-single-def
    +;  V00 this         [V00,T26] (  7, 5128   )     ref  ->  rbx         this class-hnd single-def <SixLabors.ImageSharp.Formats.Webp.BitWriter.Vp8BitWriter>
    +;  V01 loc0         [V01,T28] (  4, 4098.50)     ref  ->  r15         class-hnd single-def <SixLabors.ImageSharp.Formats.Webp.Lossy.Vp8EncProba>
    +;* V02 loc1         [V02,T34] (  0,    0   )     int  ->  zero-ref   
    +;* V03 loc2         [V03,T33] (  0,    0   )     int  ->  zero-ref   
    +;* V04 loc3         [V04,T30] (  0,    0   )     int  ->  zero-ref   
    +;* V05 loc4         [V05,T29] (  0,    0   )     int  ->  zero-ref   
    +;  V06 loc5         [V06,T25] (  3, 9216   )   ubyte  ->  [rbp-0x2C]  spill-single-def
     ;* V07 loc6         [V07    ] (  0,    0   )   ubyte  ->  zero-ref   
     ;# V08 OutArgs      [V08    ] (  1,    1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <Empty>
     ;* V09 tmp1         [V09    ] (  0,    0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <SixLabors.ImageSharp.Formats.Webp.Lossy.Vp8Encoder>
     ;* V10 tmp2         [V10    ] (  0,    0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <SixLabors.ImageSharp.Formats.Webp.Lossy.Vp8BandProbas>
     ;* V11 tmp3         [V11    ] (  0,    0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <SixLabors.ImageSharp.Formats.Webp.Lossy.Vp8ProbaArray>
     ;* V12 tmp4         [V12    ] (  0,    0   )     int  ->  zero-ref    "Inlining Arg"
    -;  V13 tmp5         [V13,T12] (  5, 4224   )     int  ->  [rbp-0x30]  "Inline stloc first use temp"
    -;  V14 tmp6         [V14,T16] (  5,   16.50)     int  ->  r14         "Inline stloc first use temp"
    -;  V15 tmp7         [V15,T17] (  2,    9   )     int  ->  r15         "Inlining Arg"
    -;  V16 tmp8         [V16,T01] (  3,24576   )     ref  ->  rdi         "arr expr"
    -;  V17 tmp9         [V17,T02] (  3,24576   )     ref  ->  rdi         "arr expr"
    -;  V18 tmp10        [V18,T03] (  3,24576   )     ref  ->  rdi         "arr expr"
    -;  V19 tmp11        [V19,T04] (  3,24576   )     ref  ->  rdi         "arr expr"
    -;  V20 tmp12        [V20,T08] (  2,16384   )     int  ->  [rbp-0x34]  spill-single-def "argument with side effect"
    -;  V21 tmp13        [V21,T09] (  2,16384   )     int  ->  rdx         "argument with side effect"
    -;  V22 rat0         [V22,T07] (  8,16409   )    long  ->  r14         "Widened IV V02"
    -;  V23 rat1         [V23,T06] (  8,16584   )    long  ->  r13         "Widened IV V03"
    -;  V24 rat2         [V24,T05] (  8,17984   )    long  ->  r12         "Widened IV V04"
    -;  V25 rat3         [V25,T00] (  8,29184   )    long  ->  [rbp-0x40]  "Widened IV V05"
    +;  V13 tmp5         [V13,T27] (  5, 4224   )     int  ->  [rbp-0x30]  "Inline stloc first use temp"
    +;  V14 tmp6         [V14,T31] (  5,   16.50)     int  ->  r14         "Inline stloc first use temp"
    +;  V15 tmp7         [V15,T32] (  2,    9   )     int  ->  r15         "Inlining Arg"
    +;  V16 tmp8         [V16,T03] (  3,24576   )     ref  ->  rsi         "arr expr"
    +;  V17 tmp9         [V17,T04] (  3,24576   )     ref  ->  rsi         "arr expr"
    +;  V18 tmp10        [V18,T05] (  3,24576   )     ref  ->  rsi         "arr expr"
    +;  V19 tmp11        [V19,T06] (  3,24576   )     ref  ->  rsi         "arr expr"
    +;  V20 tmp12        [V20,T18] (  2,16384   )     int  ->  rsi         "argument with side effect"
    +;  V21 tmp13        [V21,T00] ( 10,81920   )     ref  ->  rsi         "MD array shared temp"
    +;  V22 tmp14        [V22,T07] (  3,24576   )     int  ->  rdx         "MD array shared temp"
    +;  V23 tmp15        [V23,T08] (  3,24576   )     int  ->   r8         "MD array shared temp"
    +;  V24 tmp16        [V24,T09] (  3,24576   )     int  ->   r8         "MD array shared temp"
    +;  V25 tmp17        [V25,T10] (  3,24576   )     int  ->   r8         "MD array shared temp"
    +;  V26 tmp18        [V26,T01] ( 10,81920   )     ref  ->  rdx         "MD array shared temp"
    +;  V27 tmp19        [V27,T11] (  3,24576   )     int  ->  rdi         "MD array shared temp"
    +;  V28 tmp20        [V28,T12] (  3,24576   )     int  ->   r9         "MD array shared temp"
    +;  V29 tmp21        [V29,T13] (  3,24576   )     int  ->   r9         "MD array shared temp"
    +;  V30 tmp22        [V30,T14] (  3,24576   )     int  ->   r9         "MD array shared temp"
    +;  V31 cse0         [V31,T19] (  3,12288   )     int  ->  rdi         "CSE #01: moderate"
    +;  V32 cse1         [V32,T20] (  3,12288   )     int  ->  rdi         "CSE #02: moderate"
    +;  V33 cse2         [V33,T21] (  3,12288   )     int  ->  rdi         "CSE #03: moderate"
    +;  V34 cse3         [V34,T22] (  3,12288   )     int  ->   r8         "CSE #04: moderate"
    +;  V35 cse4         [V35,T23] (  3,12288   )     int  ->   r8         "CSE #05: moderate"
    +;  V36 cse5         [V36,T24] (  3,12288   )     int  ->   r8         "CSE #06: moderate"
    +;  V37 rat0         [V37,T17] (  8,16409   )    long  ->  r14         "Widened IV V02"
    +;  V38 rat1         [V38,T16] (  8,16584   )    long  ->  r13         "Widened IV V03"
    +;  V39 rat2         [V39,T15] (  8,17984   )    long  ->  r12         "Widened IV V04"
    +;  V40 rat3         [V40,T02] (  8,29184   )    long  ->  [rbp-0x38]  "Widened IV V05"
     ;
     ; Lcl frame size = 24
     
     G_M59009_IG01:
            push     rbp
            push     r15
            push     r14
            push     r13
            push     r12
            push     rbx
            sub      rsp, 24
            lea      rbp, [rsp+0x40]
            mov      rbx, rdi
     						;; size=22 bbWeight=1 PerfScore 7.00
     G_M59009_IG02:
    -       mov      rdi, gword ptr [rbx+0x10]
    -       mov      r15, gword ptr [rdi+0x20]
    +       mov      rsi, gword ptr [rbx+0x10]
    +       mov      r15, gword ptr [rsi+0x20]
            xor      r14d, r14d
     						;; size=11 bbWeight=1 PerfScore 4.25
     G_M59009_IG03:
            xor      r13d, r13d
     						;; size=3 bbWeight=8 PerfScore 2.00
     G_M59009_IG04:
            xor      r12d, r12d
     						;; size=3 bbWeight=64 PerfScore 16.00
     G_M59009_IG05:
            xor      eax, eax
     						;; size=2 bbWeight=512 PerfScore 128.00
     G_M59009_IG06:
    -       mov      rdi, gword ptr [r15+0x10]
    -       cmp      r14d, dword ptr [rdi+0x08]
    -       jae      G_M59009_IG17
    -       mov      rdi, gword ptr [rdi+8*r14+0x10]
    -       cmp      r13d, dword ptr [rdi+0x08]
    -       jae      G_M59009_IG17
    -       mov      rdi, gword ptr [rdi+8*r13+0x10]
    -       mov      rdi, gword ptr [rdi+0x08]
    -       cmp      r12d, dword ptr [rdi+0x08]
    -       jae      G_M59009_IG17
    -       mov      rdi, gword ptr [rdi+8*r12+0x10]
    -       mov      rdi, gword ptr [rdi+0x08]
    -       cmp      eax, dword ptr [rdi+0x08]
    -       jae      G_M59009_IG17
    -       movzx    r9, byte  ptr [rdi+rax+0x10]
    -       mov      dword ptr [rbp-0x2C], r9d
    -       mov      rdi, 0xD1FFAB1E      ; const ptr
    -       mov      rdi, gword ptr [rdi]
    -       mov      esi, r14d
    -       mov      edx, r13d
    -       mov      ecx, r12d
    -       mov      qword ptr [rbp-0x40], rax
    +       mov      rsi, gword ptr [r15+0x10]
    +       cmp      r14d, dword ptr [rsi+0x08]
    +       jae      G_M59009_IG18
    +       mov      rsi, gword ptr [rsi+8*r14+0x10]
    +       cmp      r13d, dword ptr [rsi+0x08]
    +       jae      G_M59009_IG18
    +       mov      rsi, gword ptr [rsi+8*r13+0x10]
    +       mov      rsi, gword ptr [rsi+0x08]
    +       cmp      r12d, dword ptr [rsi+0x08]
    +       jae      G_M59009_IG18
    +       mov      rsi, gword ptr [rsi+8*r12+0x10]
    +       mov      rsi, gword ptr [rsi+0x08]
    +       cmp      eax, dword ptr [rsi+0x08]
    +       jae      G_M59009_IG18
    +       movzx    rcx, byte  ptr [rsi+rax+0x10]
    +       mov      dword ptr [rbp-0x2C], ecx
    +       mov      rsi, 0xD1FFAB1E      ; const ptr
    +       mov      rsi, gword ptr [rsi]
    +       mov      edx, r14d
    +       sub      edx, dword ptr [rsi+0x20]
    +       cmp      edx, dword ptr [rsi+0x10]
    +       jae      G_M59009_IG18
    +       mov      edi, dword ptr [rsi+0x14]
    +       imul     edx, edi
    +       mov      r8d, r13d
    +       sub      r8d, dword ptr [rsi+0x24]
    +       cmp      r8d, edi
    +       jae      G_M59009_IG18
    +       add      edx, r8d
    +       mov      edi, dword ptr [rsi+0x18]
    +       imul     edx, edi
    +       mov      r8d, r12d
    +       sub      r8d, dword ptr [rsi+0x28]
    +       cmp      r8d, edi
    +       jae      G_M59009_IG18
    +       add      edx, r8d
    +       mov      edi, dword ptr [rsi+0x1C]
    +       imul     edx, edi
            mov      r8d, eax
    -       call     byte[,,,]:Get(int,int,int,int):byte:this
    -       cmp      eax, dword ptr [rbp-0x2C]
    -       setne    al
    -       movzx    rax, al
    -       mov      dword ptr [rbp-0x34], eax
    -       mov      rdi, 0xD1FFAB1E      ; const ptr
    -       mov      rdi, gword ptr [rdi]
    -       mov      esi, r14d
    -       mov      edx, r13d
    -       mov      ecx, r12d
    -       mov      r8, qword ptr [rbp-0x40]
    -       call     byte[,,,]:Get(int,int,int,int):byte:this
    -       mov      edx, eax
    -       mov      esi, dword ptr [rbp-0x34]
    -       mov      rdi, rbx
    -       mov      rax, 0xD1FFAB1E      ; code for SixLabors.ImageSharp.Formats.Webp.BitWriter.Vp8BitWriter:PutBit(int,int):bool:this
    -       call     [rax]SixLabors.ImageSharp.Formats.Webp.BitWriter.Vp8BitWriter:PutBit(int,int):bool:this
    -       test     eax, eax
    -       je       SHORT G_M59009_IG09
    -						;; size=177 bbWeight=4096 PerfScore 188416.00
    +       sub      r8d, dword ptr [rsi+0x2C]
    +       cmp      r8d, edi
    +       jae      G_M59009_IG18
    +       add      edx, r8d
    +       cmp      byte  ptr [rsi+rdx+0x30], cl
    +       setne    sil
    +       movzx    rsi, sil
    +       mov      rdx, 0xD1FFAB1E      ; const ptr
    +       mov      rdx, gword ptr [rdx]
    +       mov      edi, r14d
    +       sub      edi, dword ptr [rdx+0x20]
    +       cmp      edi, dword ptr [rdx+0x10]
    +						;; size=211 bbWeight=4096 PerfScore 274432.00
     G_M59009_IG07:
    +       jae      G_M59009_IG18
    +       mov      r8d, dword ptr [rdx+0x14]
    +       imul     edi, r8d
    +       mov      r9d, r13d
    +       sub      r9d, dword ptr [rdx+0x24]
    +       cmp      r9d, r8d
    +       jae      G_M59009_IG18
    +       add      edi, r9d
    +       mov      r8d, dword ptr [rdx+0x18]
    +       imul     edi, r8d
    +       mov      r9d, r12d
    +       sub      r9d, dword ptr [rdx+0x28]
    +       cmp      r9d, r8d
    +       jae      G_M59009_IG18
    +       add      edi, r9d
    +       mov      r8d, dword ptr [rdx+0x1C]
    +       imul     edi, r8d
    +       mov      qword ptr [rbp-0x38], rax
    +       mov      r9d, eax
    +       sub      r9d, dword ptr [rdx+0x2C]
    +       cmp      r9d, r8d
    +       jae      G_M59009_IG18
    +       add      edi, r9d
    +       movzx    rdx, byte  ptr [rdx+rdi+0x30]
    +       mov      rdi, rbx
    +       mov      r8, 0xD1FFAB1E      ; code for SixLabors.ImageSharp.Formats.Webp.BitWriter.Vp8BitWriter:PutBit(int,int):bool:this
    +       call     [r8]SixLabors.ImageSharp.Formats.Webp.BitWriter.Vp8BitWriter:PutBit(int,int):bool:this
    +       test     eax, eax
    +       je       SHORT G_M59009_IG10
    +						;; size=116 bbWeight=4096 PerfScore 131072.00
    +G_M59009_IG08:
            mov      eax, 128
     						;; size=5 bbWeight=128 PerfScore 32.00
    -G_M59009_IG08:
    +G_M59009_IG09:
            mov      ecx, dword ptr [rbp-0x2C]
            mov      dword ptr [rbp-0x30], eax
            mov      esi, ecx
            and      esi, eax
            mov      rdi, rbx
            mov      rdx, 0xD1FFAB1E      ; code for SixLabors.ImageSharp.Formats.Webp.BitWriter.Vp8BitWriter:PutBitUniform(int):int:this
            call     [rdx]SixLabors.ImageSharp.Formats.Webp.BitWriter.Vp8BitWriter:PutBitUniform(int):int:this
            mov      eax, dword ptr [rbp-0x30]
            shr      eax, 1
    -       jne      SHORT G_M59009_IG08
    +       jne      SHORT G_M59009_IG09
     						;; size=32 bbWeight=1024 PerfScore 8704.00
    -G_M59009_IG09:
    -       mov      rsi, qword ptr [rbp-0x40]
    +G_M59009_IG10:
    +       mov      rsi, qword ptr [rbp-0x38]
            inc      esi
            cmp      esi, 11
            mov      rax, rsi
            jl       G_M59009_IG06
     						;; size=18 bbWeight=4096 PerfScore 11264.00
    -G_M59009_IG10:
    +G_M59009_IG11:
            inc      r12d
            cmp      r12d, 3
            jl       G_M59009_IG05
     						;; size=13 bbWeight=512 PerfScore 768.00
    -G_M59009_IG11:
    +G_M59009_IG12:
            inc      r13d
            cmp      r13d, 8
            jl       G_M59009_IG04
     						;; size=13 bbWeight=64 PerfScore 96.00
    -G_M59009_IG12:
    +G_M59009_IG13:
            inc      r14d
            cmp      r14d, 4
            jl       G_M59009_IG03
     						;; size=13 bbWeight=8 PerfScore 12.00
    -G_M59009_IG13:
    +G_M59009_IG14:
            cmp      byte  ptr [r15+0x35], 0
            setne    sil
            movzx    rsi, sil
            mov      rdi, rbx
            mov      rax, 0xD1FFAB1E      ; code for SixLabors.ImageSharp.Formats.Webp.BitWriter.Vp8BitWriter:PutBitUniform(int):int:this
            call     [rax]SixLabors.ImageSharp.Formats.Webp.BitWriter.Vp8BitWriter:PutBitUniform(int):int:this
            test     eax, eax
    -       je       SHORT G_M59009_IG16
    +       je       SHORT G_M59009_IG17
     						;; size=32 bbWeight=1 PerfScore 7.50
    -G_M59009_IG14:
    +G_M59009_IG15:
            movzx    r15, byte  ptr [r15+0x34]
            mov      r14d, 128
     						;; size=11 bbWeight=0.50 PerfScore 1.12
    -G_M59009_IG15:
    +G_M59009_IG16:
            mov      esi, r15d
            and      esi, r14d
            mov      rdi, rbx
            mov      rax, 0xD1FFAB1E      ; code for SixLabors.ImageSharp.Formats.Webp.BitWriter.Vp8BitWriter:PutBitUniform(int):int:this
            call     [rax]SixLabors.ImageSharp.Formats.Webp.BitWriter.Vp8BitWriter:PutBitUniform(int):int:this
            shr      r14d, 1
    -       jne      SHORT G_M59009_IG15
    +       jne      SHORT G_M59009_IG16
     						;; size=26 bbWeight=4 PerfScore 22.00
    -G_M59009_IG16:
    +G_M59009_IG17:
            add      rsp, 24
            pop      rbx
            pop      r12
            pop      r13
            pop      r14
            pop      r15
            pop      rbp
            ret      
     						;; size=15 bbWeight=1 PerfScore 4.25
    -G_M59009_IG17:
    +G_M59009_IG18:
            call     CORINFO_HELP_RNGCHKFAIL
            int3     
     						;; size=6 bbWeight=0 PerfScore 0.00
     
    -; Total bytes of code 402, prolog size 19, PerfScore 209484.12, instruction count 109, allocated bytes for code 402 (MethodHash=d538197e) for method SixLabors.ImageSharp.Formats.Webp.BitWriter.Vp8BitWriter:WriteProbas():this (FullOpts)
    +; Total bytes of code 552, prolog size 19, PerfScore 426572.12, instruction count 147, allocated bytes for code 552 (MethodHash=d538197e) for method SixLabors.ImageSharp.Formats.Webp.BitWriter.Vp8BitWriter:WriteProbas():this (FullOpts)
     ; ============================================================
    SixLabors.ImageSharp.Formats.Webp.Lossy.Vp8EncProba:FinalizeTokenProbas():int:this (FullOpts) (740 -> 869 bytes (+129))

    Assembly: SixLabors.ImageSharp.dasm

    @@ -1,303 +1,352 @@
     ; Assembly listing for method SixLabors.ImageSharp.Formats.Webp.Lossy.Vp8EncProba:FinalizeTokenProbas():int:this (FullOpts)
     ; Emitting BLENDED_CODE for x64 + VEX + EVEX on Unix
     ; FullOpts code
     ; optimized code
     ; rbp based frame
     ; partially interruptible
     ; No PGO data
     ; 0 inlinees with PGO data; 12 single block inlinees; 7 inlinees without PGO data
     ; Final local variable assignments
     ;
    -;  V00 this         [V00,T25] (  6, 4355   )     ref  ->  rbx         this class-hnd single-def <SixLabors.ImageSharp.Formats.Webp.Lossy.Vp8EncProba>
    -;  V01 loc0         [V01,T35] (  4,  258   )   ubyte  ->  r15        
    -;  V02 loc1         [V02,T21] (  6, 8450   )     int  ->  r14        
    -;* V03 loc2         [V03,T38] (  0,    0   )     int  ->  zero-ref   
    -;* V04 loc3         [V04,T37] (  0,    0   )     int  ->  zero-ref   
    -;* V05 loc4         [V05,T36] (  0,    0   )     int  ->  zero-ref   
    -;* V06 loc5         [V06,T34] (  0,    0   )     int  ->  zero-ref   
    -;  V07 loc6         [V07,T09] (  7,20736   )     int  ->  [rbp-0x2C]  spill-single-def
    -;  V08 loc7         [V08,T22] (  3, 8320   )     int  ->  [rbp-0x30]  spill-single-def
    -;  V09 loc8         [V09,T10] (  5,20480   )     int  ->  [rbp-0x34]  spill-single-def
    -;  V10 loc9         [V10,T14] (  6,16640   )     int  ->  [rbp-0x38]  spill-single-def
    -;* V11 loc10        [V11    ] (  0,    0   )     int  ->  zero-ref   
    -;  V12 loc11        [V12,T23] (  2, 8192   )     int  ->  rdx        
    -;* V13 loc12        [V13    ] (  0,    0   )     int  ->  zero-ref   
    -;  V14 loc13        [V14,T18] (  3,12288   )   ubyte  ->  [rbp-0x3C]  spill-single-def
    -;# V15 OutArgs      [V15    ] (  1,    1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <Empty>
    -;  V16 tmp1         [V16,T06] (  3,24576   )     int  ->  rdi         "dup spill"
    -;  V17 tmp2         [V17,T15] (  2,16384   )     int  ->  rdx         "impAppendStmt"
    -;  V18 tmp3         [V18,T16] (  2,16384   )     int  ->  rdi         "impAppendStmt"
    -;* V19 tmp4         [V19    ] (  0,    0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <SixLabors.ImageSharp.Formats.Webp.Lossy.Vp8Stats>
    -;* V20 tmp5         [V20    ] (  0,    0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <SixLabors.ImageSharp.Formats.Webp.Lossy.Vp8StatsArray>
    -;  V21 tmp6         [V21,T24] (  5, 4608   )     int  ->  [rbp-0x40]  "Inline return value spill temp"
    -;* V22 tmp7         [V22    ] (  0,    0   )     int  ->  zero-ref    "impAppendStmt"
    -;* V23 tmp8         [V23    ] (  0,    0   )     int  ->  zero-ref    "Inline return value spill temp"
    -;* V24 tmp9         [V24    ] (  0,    0   )   ubyte  ->  zero-ref    "Inlining Arg"
    -;* V25 tmp10        [V25    ] (  0,    0   )     int  ->  zero-ref    "Inline return value spill temp"
    -;* V26 tmp11        [V26    ] (  0,    0   )   ubyte  ->  zero-ref    "Inlining Arg"
    -;* V27 tmp12        [V27    ] (  0,    0   )     int  ->  zero-ref    "Inline return value spill temp"
    -;* V28 tmp13        [V28    ] (  0,    0   )   ubyte  ->  zero-ref    "Inlining Arg"
    -;* V29 tmp14        [V29    ] (  0,    0   )     int  ->  zero-ref    "impAppendStmt"
    -;* V30 tmp15        [V30    ] (  0,    0   )     int  ->  zero-ref    "Inline return value spill temp"
    -;* V31 tmp16        [V31    ] (  0,    0   )   ubyte  ->  zero-ref    "Inlining Arg"
    -;* V32 tmp17        [V32    ] (  0,    0   )     int  ->  zero-ref    "Inline return value spill temp"
    -;* V33 tmp18        [V33    ] (  0,    0   )   ubyte  ->  zero-ref    "Inlining Arg"
    -;* V34 tmp19        [V34    ] (  0,    0   )     int  ->  zero-ref    "Inline return value spill temp"
    -;* V35 tmp20        [V35    ] (  0,    0   )   ubyte  ->  zero-ref    "Inlining Arg"
    -;* V36 tmp21        [V36    ] (  0,    0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <SixLabors.ImageSharp.Formats.Webp.Lossy.Vp8BandProbas>
    -;* V37 tmp22        [V37    ] (  0,    0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <SixLabors.ImageSharp.Formats.Webp.Lossy.Vp8ProbaArray>
    -;* V38 tmp23        [V38    ] (  0,    0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <SixLabors.ImageSharp.Formats.Webp.Lossy.Vp8BandProbas>
    -;* V39 tmp24        [V39    ] (  0,    0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <SixLabors.ImageSharp.Formats.Webp.Lossy.Vp8ProbaArray>
    -;  V40 tmp25        [V40,T02] (  3,24576   )     ref  ->  rdi         "arr expr"
    -;  V41 tmp26        [V41,T03] (  3,24576   )     ref  ->  rdi         "arr expr"
    -;  V42 tmp27        [V42,T04] (  3,24576   )     ref  ->  rdi         "arr expr"
    -;  V43 tmp28        [V43,T05] (  3,24576   )     ref  ->  rdi         "arr expr"
    -;  V44 tmp29        [V44,T07] (  3,24576   )     int  ->  rdx         "index expr"
    -;  V45 tmp30        [V45,T08] (  3,24576   )     int  ->  r11         "index expr"
    -;  V46 tmp31        [V46,T17] (  2,16384   )     int  ->  rsi         "index expr"
    -;  V47 tmp32        [V47,T26] (  3,  768   )     ref  ->  rax         "arr expr"
    -;  V48 tmp33        [V48,T27] (  3,  768   )     ref  ->  rax         "arr expr"
    -;  V49 tmp34        [V49,T28] (  3,  768   )     ref  ->  rax         "arr expr"
    -;  V50 tmp35        [V50,T29] (  3,  768   )     ref  ->  rax         "arr expr"
    -;  V51 tmp36        [V51,T30] (  3,  768   )     ref  ->  rax         "arr expr"
    -;  V52 tmp37        [V52,T31] (  3,  768   )     ref  ->  rax         "arr expr"
    -;  V53 tmp38        [V53,T32] (  3,  768   )     ref  ->  rax         "arr expr"
    -;  V54 tmp39        [V54,T33] (  3,  768   )     ref  ->  rax         "arr expr"
    -;  V55 cse0         [V55,T01] (  7,28672   )     ref  ->   r8         "CSE #01: aggressive"
    -;  V56 cse1         [V56,T19] (  3,12288   )     int  ->  rsi         "CSE #02: moderate"
    -;  V57 cse2         [V57,T20] (  3,12288   )     int  ->  r10         "CSE #03: moderate"
    -;  V58 rat0         [V58,T13] ( 12,16921   )    long  ->  r13         "Widened IV V03"
    -;  V59 rat1         [V59,T12] ( 12,17096   )    long  ->  r12         "Widened IV V04"
    -;  V60 rat2         [V60,T11] ( 12,18496   )    long  ->  [rbp-0x48]  "Widened IV V05"
    -;  V61 rat3         [V61,T00] ( 12,29696   )    long  ->  [rbp-0x50]  "Widened IV V06"
    +;  V00 this         [V00,T36] (  6,  4355   )     ref  ->  [rbp-0x50]  this class-hnd single-def <SixLabors.ImageSharp.Formats.Webp.Lossy.Vp8EncProba>
    +;  V01 loc0         [V01,T46] (  4,   258   )   ubyte  ->  [rbp-0x2C] 
    +;  V02 loc1         [V02,T32] (  6,  8450   )     int  ->  r14        
    +;* V03 loc2         [V03,T49] (  0,     0   )     int  ->  zero-ref   
    +;* V04 loc3         [V04,T48] (  0,     0   )     int  ->  zero-ref   
    +;* V05 loc4         [V05,T47] (  0,     0   )     int  ->  zero-ref   
    +;* V06 loc5         [V06,T45] (  0,     0   )     int  ->  zero-ref   
    +;  V07 loc6         [V07,T13] (  7, 20736   )     int  ->  rdi        
    +;  V08 loc7         [V08,T33] (  3,  8320   )     int  ->  rsi        
    +;  V09 loc8         [V09,T17] (  4, 16384   )     int  ->   r9        
    +;  V10 loc9         [V10,T22] (  5, 12544   )     int  ->  [rbp-0x30]  spill-single-def
    +;* V11 loc10        [V11    ] (  0,     0   )     int  ->  zero-ref   
    +;  V12 loc11        [V12,T34] (  2,  8192   )     int  ->  rdx        
    +;* V13 loc12        [V13    ] (  0,     0   )     int  ->  zero-ref   
    +;  V14 loc13        [V14,T23] (  3, 12288   )   ubyte  ->  rbx        
    +;# V15 OutArgs      [V15    ] (  1,     1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <Empty>
    +;  V16 tmp1         [V16,T11] (  3, 24576   )     int  ->  rax         "dup spill"
    +;  V17 tmp2         [V17,T18] (  2, 16384   )     int  ->  rdx         "impAppendStmt"
    +;  V18 tmp3         [V18,T19] (  2, 16384   )     int  ->  rdi         "impAppendStmt"
    +;* V19 tmp4         [V19    ] (  0,     0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <SixLabors.ImageSharp.Formats.Webp.Lossy.Vp8Stats>
    +;* V20 tmp5         [V20    ] (  0,     0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <SixLabors.ImageSharp.Formats.Webp.Lossy.Vp8StatsArray>
    +;  V21 tmp6         [V21,T35] (  5,  4608   )     int  ->  [rbp-0x34]  "Inline return value spill temp"
    +;* V22 tmp7         [V22    ] (  0,     0   )     int  ->  zero-ref    "impAppendStmt"
    +;* V23 tmp8         [V23    ] (  0,     0   )     int  ->  zero-ref    "Inline return value spill temp"
    +;* V24 tmp9         [V24    ] (  0,     0   )   ubyte  ->  zero-ref    "Inlining Arg"
    +;* V25 tmp10        [V25    ] (  0,     0   )     int  ->  zero-ref    "Inline return value spill temp"
    +;* V26 tmp11        [V26    ] (  0,     0   )   ubyte  ->  zero-ref    "Inlining Arg"
    +;* V27 tmp12        [V27    ] (  0,     0   )     int  ->  zero-ref    "Inline return value spill temp"
    +;* V28 tmp13        [V28    ] (  0,     0   )   ubyte  ->  zero-ref    "Inlining Arg"
    +;* V29 tmp14        [V29    ] (  0,     0   )     int  ->  zero-ref    "impAppendStmt"
    +;* V30 tmp15        [V30    ] (  0,     0   )     int  ->  zero-ref    "Inline return value spill temp"
    +;* V31 tmp16        [V31    ] (  0,     0   )   ubyte  ->  zero-ref    "Inlining Arg"
    +;* V32 tmp17        [V32    ] (  0,     0   )     int  ->  zero-ref    "Inline return value spill temp"
    +;* V33 tmp18        [V33    ] (  0,     0   )   ubyte  ->  zero-ref    "Inlining Arg"
    +;* V34 tmp19        [V34    ] (  0,     0   )     int  ->  zero-ref    "Inline return value spill temp"
    +;* V35 tmp20        [V35    ] (  0,     0   )   ubyte  ->  zero-ref    "Inlining Arg"
    +;* V36 tmp21        [V36    ] (  0,     0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <SixLabors.ImageSharp.Formats.Webp.Lossy.Vp8BandProbas>
    +;* V37 tmp22        [V37    ] (  0,     0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <SixLabors.ImageSharp.Formats.Webp.Lossy.Vp8ProbaArray>
    +;* V38 tmp23        [V38    ] (  0,     0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <SixLabors.ImageSharp.Formats.Webp.Lossy.Vp8BandProbas>
    +;* V39 tmp24        [V39    ] (  0,     0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <SixLabors.ImageSharp.Formats.Webp.Lossy.Vp8ProbaArray>
    +;  V40 tmp25        [V40,T07] (  3, 24576   )     ref  ->  rax         "arr expr"
    +;  V41 tmp26        [V41,T08] (  3, 24576   )     ref  ->  rax         "arr expr"
    +;  V42 tmp27        [V42,T09] (  3, 24576   )     ref  ->  rax         "arr expr"
    +;  V43 tmp28        [V43,T10] (  3, 24576   )     ref  ->  rax         "arr expr"
    +;  V44 tmp29        [V44,T20] (  2, 16384   )     int  ->  rdx         "index expr"
    +;  V45 tmp30        [V45,T12] (  3, 24576   )     int  ->  rbx         "index expr"
    +;  V46 tmp31        [V46,T21] (  2, 16384   )     int  ->  rsi         "index expr"
    +;  V47 tmp32        [V47,T37] (  3,   768   )     ref  ->  rax         "arr expr"
    +;  V48 tmp33        [V48,T38] (  3,   768   )     ref  ->  rax         "arr expr"
    +;  V49 tmp34        [V49,T39] (  3,   768   )     ref  ->  rax         "arr expr"
    +;  V50 tmp35        [V50,T40] (  3,   768   )     ref  ->  rax         "arr expr"
    +;  V51 tmp36        [V51,T41] (  3,   768   )     ref  ->  rax         "arr expr"
    +;  V52 tmp37        [V52,T42] (  3,   768   )     ref  ->  rax         "arr expr"
    +;  V53 tmp38        [V53,T43] (  3,   768   )     ref  ->  rax         "arr expr"
    +;  V54 tmp39        [V54,T44] (  3,   768   )     ref  ->  rax         "arr expr"
    +;  V55 tmp40        [V55,T00] ( 20,163840   )     ref  ->  rax         "MD array shared temp"
    +;  V56 tmp41        [V56,T01] (  6, 49152   )     int  ->  rdx         "MD array shared temp"
    +;  V57 tmp42        [V57,T02] (  6, 49152   )     int  ->  registers   "MD array shared temp"
    +;  V58 tmp43        [V58,T03] (  6, 49152   )     int  ->  registers   "MD array shared temp"
    +;  V59 tmp44        [V59,T04] (  6, 49152   )     int  ->  registers   "MD array shared temp"
    +;  V60 cse0         [V60,T06] (  7, 28672   )     ref  ->  r11         "CSE #07: aggressive"
    +;  V61 cse1         [V61,T24] (  3, 12288   )     int  ->   r9         "CSE #01: moderate"
    +;  V62 cse2         [V62,T25] (  3, 12288   )     int  ->  rdx         "CSE #02: moderate"
    +;  V63 cse3         [V63,T26] (  3, 12288   )     int  ->  rdx         "CSE #03: moderate"
    +;  V64 cse4         [V64,T27] (  3, 12288   )     int  ->  r10         "CSE #04: moderate"
    +;  V65 cse5         [V65,T28] (  3, 12288   )     int  ->  r10         "CSE #05: moderate"
    +;  V66 cse6         [V66,T29] (  3, 12288   )     int  ->  r10         "CSE #06: moderate"
    +;  V67 cse7         [V67,T30] (  3, 12288   )     int  ->  rsi         "CSE #08: moderate"
    +;  V68 cse8         [V68,T31] (  3, 12288   )     int  ->  r15         "CSE #09: moderate"
    +;  V69 rat0         [V69,T16] ( 12, 16921   )    long  ->  r13         "Widened IV V03"
    +;  V70 rat1         [V70,T15] ( 12, 17096   )    long  ->  r12         "Widened IV V04"
    +;  V71 rat2         [V71,T14] ( 12, 18496   )    long  ->  [rbp-0x40]  "Widened IV V05"
    +;  V72 rat3         [V72,T05] ( 12, 29696   )    long  ->  [rbp-0x48]  "Widened IV V06"
     ;
     ; Lcl frame size = 40
     
     G_M51368_IG01:
            push     rbp
            push     r15
            push     r14
            push     r13
            push     r12
            push     rbx
            sub      rsp, 40
            lea      rbp, [rsp+0x50]
            mov      rbx, rdi
     						;; size=22 bbWeight=1 PerfScore 7.00
     G_M51368_IG02:
            xor      r15d, r15d
    +       mov      dword ptr [rbp-0x2C], r15d
            xor      r14d, r14d
            xor      r13d, r13d
    -						;; size=9 bbWeight=1 PerfScore 0.75
    +						;; size=13 bbWeight=1 PerfScore 1.75
     G_M51368_IG03:
            xor      r12d, r12d
     						;; size=3 bbWeight=8 PerfScore 2.00
     G_M51368_IG04:
    -       xor      eax, eax
    +       xor      ecx, ecx
     						;; size=2 bbWeight=64 PerfScore 16.00
     G_M51368_IG05:
    -       xor      r9d, r9d
    +       xor      r8d, r8d
     						;; size=3 bbWeight=512 PerfScore 128.00
     G_M51368_IG06:
    -       mov      rdi, gword ptr [rbx+0x18]
    -       cmp      r13d, dword ptr [rdi+0x08]
    -       jae      G_M51368_IG18
    -       mov      rdi, gword ptr [rdi+8*r13+0x10]
    -       cmp      r12d, dword ptr [rdi+0x08]
    -       jae      G_M51368_IG18
    -       mov      rdi, gword ptr [rdi+8*r12+0x10]
    -       mov      rdi, gword ptr [rdi+0x08]
    -       cmp      eax, dword ptr [rdi+0x08]
    -       jae      G_M51368_IG18
    -       mov      rdi, gword ptr [rdi+8*rax+0x10]
    -       mov      rdi, gword ptr [rdi+0x08]
    -       cmp      r9d, dword ptr [rdi+0x08]
    -       jae      G_M51368_IG18
    -       mov      edi, dword ptr [rdi+4*r9+0x10]
    -       movzx    r10, di
    -       mov      dword ptr [rbp-0x2C], r10d
    -       shr      edi, 16
    -       movzx    r11, di
    -       mov      dword ptr [rbp-0x30], r11d
    -       mov      rdi, 0xD1FFAB1E      ; const ptr
    -       mov      rdi, gword ptr [rdi]
    -       mov      esi, r13d
    -       mov      edx, r12d
    -       mov      qword ptr [rbp-0x48], rax
    -       mov      ecx, eax
    -       mov      qword ptr [rbp-0x50], r9
    -       mov      r8d, r9d
    -       call     byte[,,,]:Get(int,int,int,int):byte:this
    -       mov      dword ptr [rbp-0x34], eax
    -       mov      rdi, 0xD1FFAB1E      ; const ptr
    -       mov      rdi, gword ptr [rdi]
    -       mov      esi, r13d
    -       mov      edx, r12d
    -       mov      rcx, qword ptr [rbp-0x48]
    -       mov      r8, qword ptr [rbp-0x50]
    -       call     byte[,,,]:Get(int,int,int,int):byte:this
    -       mov      ecx, eax
    -       mov      dword ptr [rbp-0x38], ecx
    -       mov      edi, dword ptr [rbp-0x2C]
    -       test     edi, edi
    -       je       SHORT G_M51368_IG08
    -						;; size=174 bbWeight=4096 PerfScore 186368.00
    +       mov      gword ptr [rbp-0x50], rbx
    +       mov      rax, gword ptr [rbx+0x18]
    +       cmp      r13d, dword ptr [rax+0x08]
    +       jae      G_M51368_IG19
    +       mov      rax, gword ptr [rax+8*r13+0x10]
    +       cmp      r12d, dword ptr [rax+0x08]
    +       jae      G_M51368_IG19
    +       mov      rax, gword ptr [rax+8*r12+0x10]
    +       mov      rax, gword ptr [rax+0x08]
    +       cmp      ecx, dword ptr [rax+0x08
    ... truncated for GitHub; see the full report in the diff browser ...
    SixLabors.ImageSharp.Formats.Webp.Lossy.WebpLossyDecoder:ParseProbabilities(SixLabors.ImageSharp.Formats.Webp.Lossy.Vp8Decoder):this (FullOpts) (1,191 -> 1,345 bytes (+154))

    Assembly: SixLabors.ImageSharp.dasm

    @@ -1,511 +1,558 @@
     ; Assembly listing for method SixLabors.ImageSharp.Formats.Webp.Lossy.WebpLossyDecoder:ParseProbabilities(SixLabors.ImageSharp.Formats.Webp.Lossy.Vp8Decoder):this (FullOpts)
     ; Emitting BLENDED_CODE for x64 + VEX + EVEX on Unix
     ; FullOpts code
     ; optimized code
     ; rbp based frame
     ; fully interruptible
     ; No PGO data
     ; 0 inlinees with PGO data; 10 single block inlinees; 7 inlinees without PGO data
     ; Final local variable assignments
     ;
    -;  V00 this         [V00,T24] (  6, 4227.50)     ref  ->  rbx         this class-hnd single-def <SixLabors.ImageSharp.Formats.Webp.Lossy.WebpLossyDecoder>
    -;  V01 arg1         [V01,T66] (  6,    5.50)     ref  ->  [rbp-0x60]  class-hnd single-def <SixLabors.ImageSharp.Formats.Webp.Lossy.Vp8Decoder>
    -;  V02 loc0         [V02,T25] (  4, 4225   )     ref  ->  r14         class-hnd single-def <SixLabors.ImageSharp.Formats.Webp.Lossy.Vp8Proba>
    -;* V03 loc1         [V03,T67] (  0,    0   )     int  ->  zero-ref   
    -;  V04 loc2         [V04,T16] (  7, 8520   )     int  ->  r12        
    -;* V05 loc3         [V05,T43] (  0,    0   )     int  ->  zero-ref   
    -;* V06 loc4         [V06,T35] (  0,    0   )     int  ->  zero-ref   
    -;  V07 loc5         [V07,T19] (  2, 8192   )   ubyte  ->  [rbp-0x2C]  spill-single-def
    -;* V08 loc6         [V08,T65] (  0,    0   )     int  ->  zero-ref   
    -;# V09 OutArgs      [V09    ] (  1,    1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <Empty>
    -;  V10 tmp1         [V10,T08] (  3,16640   )     ref  ->  [rbp-0x68]  class-hnd spill-single-def "impAppendStmt" <byte[]>
    -;  V11 tmp2         [V11,T26] (  2, 4224   )     ref  ->  [rbp-0x70]  spill-single-def
    -;* V12 tmp3         [V12,T28] (  0,    0   )     int  ->  zero-ref   
    -;  V13 tmp4         [V13,T17] (  4, 8448   )     ref  ->  [rbp-0x78] 
    -;  V14 tmp5         [V14,T37] (  2,  256   )     int  ->   r8        
    -;  V15 tmp6         [V15,T23] (  3, 4352   )     int  ->   r9        
    -;* V16 tmp7         [V16    ] (  0,    0   )     ref  ->  zero-ref    class-hnd "impAppendStmt" <SixLabors.ImageSharp.Formats.Webp.Lossy.Vp8BandProbas[]>
    -;* V17 tmp8         [V17    ] (  0,    0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <SixLabors.ImageSharp.Formats.Webp.Lossy.Vp8BandProbas>
    -;* V18 tmp9         [V18    ] (  0,    0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <SixLabors.ImageSharp.Formats.Webp.Lossy.Vp8ProbaArray>
    -;  V19 tmp10        [V19,T00] ( 10,58112   )     ref  ->  [rbp-0x80]  class-hnd spill-single-def "Inlining Arg" <SixLabors.ImageSharp.Formats.Webp.BitReader.Vp8BitReader>
    -;  V20 tmp11        [V20,T03] (  9,24960   )     int  ->  [rbp-0x30]  "Inline stloc first use temp"
    -;  V21 tmp12        [V21,T18] (  3, 8320   )     int  ->   r9         "Inline stloc first use temp"
    -;  V22 tmp13        [V22,T14] (  5, 8576   )     int  ->  rax         "Inline stloc first use temp"
    -;  V23 tmp14        [V23,T07] (  3,24576   )     int  ->  r10         "dup spill"
    -;* V24 tmp15        [V24    ] (  0,    0   )     int  ->  zero-ref   
    -;* V25 tmp16        [V25    ] (  0,    0   )     int  ->  zero-ref   
    -;  V26 tmp17        [V26,T11] (  3,12288   )     int  ->  rax         "Inline stloc first use temp"
    -;  V27 tmp18        [V27,T34] (  4, 2304   )     int  ->  [rbp-0x34]  "Inline stloc first use temp"
    -;  V28 tmp19        [V28,T21] (  4, 6400   )     int  ->  [rbp-0x38]  "Inlining Arg"
    -;  V29 tmp20        [V29,T22] (  3, 6144   )     int  ->  rdi         "impSpillLclRefs"
    -;  V30 tmp21        [V30,T09] ( 11,15872   )     ref  ->  [rbp-0x88]  class-hnd spill-single-def "Inlining Arg" <SixLabors.ImageSharp.Formats.Webp.BitReader.Vp8BitReader>
    -;  V31 tmp22        [V31,T20] (  9, 7680   )     int  ->  [rbp-0x3C]  "Inline stloc first use temp"
    -;  V32 tmp23        [V32,T33] (  3, 2560   )     int  ->  r10         "Inline stloc first use temp"
    -;  V33 tmp24        [V33,T29] (  5, 3584   )     int  ->  r11         "Inline stloc first use temp"
    -;  V34 tmp25        [V34,T27] (  2, 4096   )     int  ->  r15         "dup spill"
    -;* V35 tmp26        [V35    ] (  0,    0   )     int  ->  zero-ref   
    -;* V36 tmp27        [V36    ] (  0,    0   )     int  ->  zero-ref   
    -;  V37 tmp28        [V37,T30] (  3, 3072   )     int  ->  r10         "Inline stloc first use temp"
    -;  V38 tmp29        [V38,T42] ( 11,   64   )     ref  ->  r14         class-hnd single-def "Inlining Arg" <SixLabors.ImageSharp.Formats.Webp.BitReader.Vp8BitReader>
    -;  V39 tmp30        [V39,T61] (  4,   10   )     int  ->  r12         "Inline stloc first use temp"
    -;  V40 tmp31        [V40,T46] (  4,   42   )     int  ->  [rbp-0x40]  "Inlining Arg"
    -;  V41 tmp32        [V41,T45] (  3,   48   )     int  ->  r13         "impSpillLclRefs"
    -;  V42 tmp33        [V42,T47] (  9,   30   )     int  ->  r13         "Inline stloc first use temp"
    -;  V43 tmp34        [V43,T62] (  3,   10   )     int  ->  rcx         "Inline stloc first use temp"
    -;  V44 tmp35        [V44,T53] (  5,   14   )     int  ->  rdx         "Inline stloc first use temp"
    -;  V45 tmp36        [V45,T51] (  2,   16   )     int  ->   r8         "dup spill"
    -;* V46 tmp37        [V46    ] (  0,    0   )     int  ->  zero-ref   
    -;* V47 tmp38        [V47    ] (  0,    0   )     int  ->  zero-ref   
    -;  V48 tmp39        [V48,T55] (  3,   12   )     int  ->  rcx         "Inline stloc first use temp"
    -;* V49 tmp40        [V49    ] (  0,    0   )   ubyte  ->  zero-ref    "Inlining Arg"
    -;  V50 tmp41        [V50,T64] (  4,    9   )     int  ->  r13         "Inline stloc first use temp"
    -;  V51 tmp42        [V51,T49] (  4,   25   )     int  ->  registers   "Inlining Arg"
    -;  V52 tmp43        [V52,T50] (  3,   24   )     int  ->  r14         "impSpillLclRefs"
    -;  V53 tmp44        [V53,T44] ( 11,   62   )     ref  ->  rbx         class-hnd single-def "Inlining Arg" <SixLabors.ImageSharp.Formats.Webp.BitReader.Vp8BitReader>
    -;  V54 tmp45        [V54,T48] (  9,   30   )     int  ->  r14         "Inline stloc first use temp"
    -;  V55 tmp46        [V55,T63] (  3,   10   )     int  ->  rcx         "Inline stloc first use temp"
    -;  V56 tmp47        [V56,T54] (  5,   14   )     int  ->  rdx         "Inline stloc first use temp"
    -;  V57 tmp48        [V57,T52] (  2,   16   )     int  ->  rsi         "dup spill"
    -;* V58 tmp49        [V58    ] (  0,    0   )     int  ->  zero-ref   
    -;* V59 tmp50        [V59    ] (  0,    0   )     int  ->  zero-ref   
    -;  V60 tmp51        [V60,T56] (  3,   12   )     int  ->  rcx         "Inline stloc first use temp"
    -;* V61 tmp52        [V61    ] (  0,    0   )   ubyte  ->  zero-ref    "Inlining Arg"
    -;  V62 tmp53        [V62,T06] (  3,24576   )     ref  ->  rdi         "arr expr"
    -;  V63 tmp54        [V63,T36] (  3,  384   )     ref  ->  rdi         "arr expr"
    -;  V64 tmp55        [V64,T40] (  2,  256   )     ref  ->  rdi         "argument with side effect"
    -;  V65 tmp56        [V65,T01] ( 13,50048   )     ref  ->  rcx         "MD array shared temp"
    -;  V66 tmp57        [V66,T05] (  5,24832   )     int  ->  rdx         "MD array shared temp"
    -;  V67 tmp58        [V67,T04] (  6,24960   )     int  ->  rsi         "MD array shared temp"
    -;  V68 tmp59        [V68,T38] (  3,  384   )     int  ->  rdx         "MD array shared temp"
    -;  V69 cse0         [V69,T31] (  3, 3072   )     int  ->  rax         "CSE #10: moderate"
    -;  V70 cse1         [V70,T57] (  3,   12   )     int  ->  rsi         "CSE #17: conservative"
    -;  V71 cse2         [V71,T58] (  3,   12   )     int  ->  rdi         "CSE #22: conservative"
    -;  V72 cse3         [V72,T41] (  2,   72   )     ref  ->  r12         hoist "CSE #11: conservative"
    -;  V73 cse4         [V73,T12] (  3,12288   )     int  ->  rdi         "CSE #05: moderate"
    -;  V74 cse5         [V74,T32] (  3, 3072   )     int  ->  rdi         "CSE #09: moderate"
    -;  V75 cse6         [V75,T59] (  3,   12   )     int  ->  rdi         "CSE #16: conservative"
    -;  V76 cse7         [V76,T60] (  3,   12   )     int  ->  rax         "CSE #21: conservative"
    -;  V77 cse8         [V77,T13] (  3,12288   )     int  ->  rdi         "CSE #01: moderate"
    -;  V78 rat0         [V78,T15] ( 10, 8537   )    long  ->  r13         "Widened IV V03"
    -;  V79 rat1         [V79,T10] (  8,14016   )    long  ->  [rbp-0x48]  "Widened IV V05"
    -;  V80 rat2         [V80,T02] (  8,25216   )    long  ->  [rbp-0x50]  "Widened IV V06"
    -;  V81 rat3         [V81,T39] (  6,  328   )    long  ->  [rbp-0x58]  "Widened IV V08"
    +;  V00 this         [V00,T29] (  6,  4227.50)     ref  ->  rbx         this class-hnd single-def <SixLabors.ImageSharp.Formats.Webp.Lossy.WebpLossyDecoder>
    +;  V01 arg1         [V01,T70] (  6,     5.50)     ref  ->  [rbp-0x68]  class-hnd single-def <SixLabors.ImageSharp.Formats.Webp.Lossy.Vp8Decoder>
    +;  V02 loc0         [V02,T30] (  4,  4225   )     ref  ->  r14         class-hnd single-def <SixLabors.ImageSharp.Formats.Webp.Lossy.Vp8Proba>
    +;* V03 loc1         [V03,T71] (  0,     0   )     int  ->  zero-ref   
    +;  V04 loc2         [V04,T21] (  7,  8520   )     int  ->  r12        
    +;* V05 loc3         [V05,T47] (  0,     0   )     int  ->  zero-ref   
    +;* V06 loc4         [V06,T40] (  0,     0   )     int  ->  zero-ref   
    +;  V07 loc5         [V07,T24] (  2,  8192   )   ubyte  ->  [rbp-0x2C]  spill-single-def
    +;* V08 loc6         [V08,T69] (  0,     0   )     int  ->  zero-ref   
    +;# V09 OutArgs      [V09    ] (  1,     1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <Empty>
    +;  V10 tmp1         [V10,T10] (  3, 16640   )     ref  ->  [rbp-0x70]  class-hnd spill-single-def "impAppendStmt" <byte[]>
    +;  V11 tmp2         [V11,T31] (  2,  4224   )     ref  ->  r15        
    +;* V12 tmp3         [V12,T33] (  0,     0   )     int  ->  zero-ref   
    +;  V13 tmp4         [V13,T22] (  4,  8448   )     ref  ->  r15        
    +;  V14 tmp5         [V14,T42] (  2,   256   )     int  ->   r8        
    +;  V15 tmp6         [V15,T28] (  3,  4352   )     int  ->  rdi        
    +;* V16 tmp7         [V16    ] (  0,     0   )     ref  ->  zero-ref    class-hnd "impAppendStmt" <SixLabors.ImageSharp.Formats.Webp.Lossy.Vp8BandProbas[]>
    +;* V17 tmp8         [V17    ] (  0,     0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <SixLabors.ImageSharp.Formats.Webp.Lossy.Vp8BandProbas>
    +;* V18 tmp9         [V18    ] (  0,     0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <SixLabors.ImageSharp.Formats.Webp.Lossy.Vp8ProbaArray>
    +;  V19 tmp10        [V19,T01] ( 10, 58112   )     ref  ->  [rbp-0x78]  class-hnd spill-single-def "Inlining Arg" <SixLabors.ImageSharp.Formats.Webp.BitReader.Vp8BitReader>
    +;  V20 tmp11        [V20,T07] (  9, 24960   )     int  ->  [rbp-0x30]  "Inline stloc first use temp"
    +;  V21 tmp12        [V21,T23] (  3,  8320   )     int  ->  r10         "Inline stloc first use temp"
    +;  V22 tmp13        [V22,T19] (  5,  8576   )     int  ->  rsi         "Inline stloc first use temp"
    +;  V23 tmp14        [V23,T09] (  3, 24576   )     int  ->  r11         "dup spill"
    +;* V24 tmp15        [V24    ] (  0,     0   )     int  ->  zero-ref   
    +;* V25 tmp16        [V25    ] (  0,     0   )     int  ->  zero-ref   
    +;  V26 tmp17        [V26,T13] (  3, 12288   )     int  ->  rsi         "Inline stloc first use temp"
    +;  V27 tmp18        [V27,T39] (  4,  2304   )     int  ->  [rbp-0x34]  "Inline stloc first use temp"
    +;  V28 tmp19        [V28,T26] (  4,  6400   )     int  ->  [rbp-0x38]  "Inlining Arg"
    +;  V29 tmp20        [V29,T27] (  3,  6144   )     int  ->  rdi         "impSpillLclRefs"
    +;  V30 tmp21        [V30,T11] ( 11, 15872   )     ref  ->  [rbp-0x80]  class-hnd spill-single-def "Inlining Arg" <SixLabors.ImageSharp.Formats.Webp.BitReader.Vp8BitReader>
    +;  V31 tmp22        [V31,T25] (  9,  7680   )     int  ->  [rbp-0x3C]  "Inline stloc first use temp"
    +;  V32 tmp23        [V32,T38] (  3,  2560   )     int  ->  [rbp-0x40]  spill-single-def "Inline stloc first use temp"
    +;  V33 tmp24        [V33,T34] (  5,  3584   )     int  ->  r11         "Inline stloc first use temp"
    +;  V34 tmp25        [V34,T32] (  2,  4096   )     int  ->  r10         "dup spill"
    +;* V35 tmp26        [V35    ] (  0,     0   )     int  ->  zero-ref   
    +;* V36 tmp27        [V36    ] (  0,     0   )     int  ->  zero-ref   
    +;  V37 tmp28        [V37,T35] (  3,  3072   )     int  ->  r10         "Inline stloc first use temp"
    +;  V38 tmp29        [V38,T46] ( 11,    64   )     ref  ->  r14         class-hnd single-def "Inlining Arg" <SixLabors.ImageSharp.Formats.Webp.BitReader.Vp8BitReader>
    +;  V39 tmp30        [V39,T65] (  4,    10   )     int  ->  r12         "Inline stloc first use temp"
    +;  V40 tmp31        [V40,T50] (  4,    42   )     int  ->  [rbp-0x44]  "Inlining Arg"
    +;  V41 tmp32        [V41,T49] (  3,    48   )     int  ->  r13         "impSpillLclRefs"
    +;  V42 tmp33        [V42,T51] (  9,    30   )     int  ->  r13         "Inline stloc first use temp"
    +;  V43 tmp34        [V43,T66] (  3,    10   )     int  ->  rcx         "Inline stloc first use temp"
    +;  V44 tmp35        [V44,T57] (  5,    14   )     int  ->  rdx         "Inline stloc first use temp"
    +;  V45 tmp36        [V45,T55] (  2,    16   )     int  ->   r8         "dup spill"
    +;* V46 tmp37        [V46    ] (  0,     0   )     int  ->  zero-ref   
    +;* V47 tmp38        [V47    ] (  0,     0   )     int  ->  zero-ref   
    +;  V48 tmp39        [V48,T59] (  3,    12   )     int  ->  rcx         "Inline stloc first use temp"
    +;* V49 tmp40        [V49    ] (  0,     0   )   ubyte  ->  zero-ref    "Inlining Arg"
    +;  V50 tmp41        [V50,T68] (  4,     9   )     int  ->  r13         "Inline stloc first use temp"
    +;  V51 tmp42        [V51,T53] (  4,    25   )     int  ->  registers   "Inlining Arg"
    +;  V52 tmp43        [V52,T54] (  3,    24   )     int  ->  r14         "impSpillLclRefs"
    +;  V53 tmp44        [V53,T48] ( 11,    62   )     ref  ->  rbx         class-hnd single-def "Inlining Arg" <SixLabors.ImageSharp.Formats.Webp.BitReader.Vp8BitReader>
    +;  V54 tmp45        [V54,T52] (  9,    30   )     int  ->  r14         "Inline stloc first use temp"
    +;  V55 tmp46        [V55,T67] (  3,    10   )     int  ->  rcx         "Inline stloc first use temp"
    +;  V56 tmp47        [V56,T58] (  5,    14   )     int  ->  rdx         "Inline stloc first use temp"
    +;  V57 tmp48        [V57,T56] (  2,    16   )     int  ->  rsi         "dup spill"
    +;* V58 tmp49        [V58    ] (  0,     0   )     int  ->  zero-ref   
    +;* V59 tmp50        [V59    ] (  0,     0   )     int  ->  zero-ref   
    +;  V60 tmp51        [V60,T60] (  3,    12   )     int  ->  rcx         "Inline stloc first use temp"
    +;* V61 tmp52        [V61    ] (  0,     0   )   ubyte  ->  zero-ref    "Inlining Arg"
    +;  V62 tmp53        [V62,T08] (  3, 24576   )     ref  ->  rdi         "arr expr"
    +;  V63 tmp54        [V63,T41] (  3,   384   )     ref  ->  rdi         "arr expr"
    +;  V64 tmp55        [V64,T44] (  2,   256   )     ref  ->  rdi         "argument with side effect"
    +;  V65 tmp56        [V65,T00] ( 36,135296   )     ref  ->  rdx         "MD array shared temp"
    +;  V66 tmp57        [V66,T03] ( 11, 50176   )     int  ->  registers   "MD array shared temp"
    +;  V67 tmp58        [V67,T02] ( 12, 50304   )     int  ->  registers   "MD array shared temp"
    +;  V68 tmp59        [V68,T05] (  9, 25728   )     int  ->  registers   "MD array shared temp"
    +;  V69 tmp60        [V69,T06] (  6, 25344   )     int  ->   r8         "MD array shared temp"
    +;  V70 cse0         [V70,T36] (  3,  3072   )     int  ->  rsi         "CSE #16: conservative"
    +;  V71 cse1         [V71,T61] (  3,    12   )     int  ->  rsi         "CSE #23: conservative"
    +;  V72 cse2         [V72,T62] (  3,    12   )     int  ->  rdi         "CSE #28: conservative"
    +;  V73 cse3         [V73,T45] (  2,    72   )     ref  ->  r12         hoist "CSE #17: conservative"
    +;  V74 cse4         [V74,T14] (  3, 12288   )     int  ->  rdi         "CSE #08: moderate"
    +;  V75 cse5         [V75,T37] (  3,  3072   )     int  ->  rdi         "CSE #15: conservative
    ... truncated for GitHub; see the full report in the diff browser ...

    Showing 3 of 19 reported examples in this category.

    Browse all JIT diff results and examples

  2. MihuBot commented on Oct 4, 2026

    @MihuBot
    OwnerAuthor

    Same-size JIT changes

    Newtonsoft.Json.DefaultJsonNameTable:Get(char[],int,int):System.String:this (FullOpts) (333 -> 333 bytes (0))

    Assembly: Newtonsoft.Json.dasm

    @@ -1,173 +1,173 @@
     ; Assembly listing for method Newtonsoft.Json.DefaultJsonNameTable:Get(char[],int,int):System.String:this (FullOpts)
     ; Emitting BLENDED_CODE for x64 + VEX + EVEX on Unix
     ; FullOpts code
     ; optimized code
     ; rbp based frame
     ; fully interruptible
     ; No PGO data
     ; Final local variable assignments
     ;
     ;  V00 this         [V00,T07] (  4,  3   )     ref  ->  rdi         this class-hnd single-def <Newtonsoft.Json.DefaultJsonNameTable>
     ;  V01 arg1         [V01,T03] (  7,  9   )     ref  ->  rbx         class-hnd single-def <char[]>
     ;  V02 arg2         [V02,T04] (  7,  6   )     int  ->  r15         single-def
     ;  V03 arg3         [V03,T05] (  6,  6   )     int  ->  r14         single-def
     ;  V04 loc0         [V04,T00] ( 21, 23   )     int  ->  r13        
     ;  V05 loc1         [V05,T06] (  6,  6   )     int  ->  rdx         single-def
     ;* V06 loc2         [V06    ] (  0,  0   )     int  ->  zero-ref   
     ;  V07 loc3         [V07,T10] (  3,  1.50)     int  ->  rsi         single-def
     ;  V08 loc4         [V08,T02] ( 11, 17.04)     int  ->  rcx        
     ;  V09 loc5         [V09,T01] (  8, 19.50)     ref  ->  r12         class-hnd <Newtonsoft.Json.DefaultJsonNameTable+Entry>
     ;# V10 OutArgs      [V10    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <Empty>
     ;  V11 tmp1         [V11,T08] (  3,  3   )     ref  ->  rdi         single-def "arr expr"
     ;  V12 cse0         [V12,T09] (  4,  1.54)     int  ->  rsi         "CSE #01: moderate"
     ;
     ; Lcl frame size = 8
     
     G_M29284_IG01:
            push     rbp
            push     r15
            push     r14
            push     r13
            push     r12
            push     rbx
            push     rax
            lea      rbp, [rsp+0x30]
            mov      rbx, rsi
            mov      r15d, edx
            mov      r14d, ecx
     						;; size=25 bbWeight=1 PerfScore 8.25
     G_M29284_IG02:
            test     r14d, r14d
            je       G_M29284_IG14
     						;; size=9 bbWeight=1 PerfScore 1.25
     G_M29284_IG03:
    -       lea      r13d, [r14+0x000E4FBD]
    +       lea      r13d, [r14+0x000E512E]
            mov      esi, dword ptr [rbx+0x08]
            cmp      r15d, esi
            jae      G_M29284_IG16
            mov      edx, r15d
            movzx    rdx, word  ptr [rbx+2*rdx+0x10]
            mov      ecx, r13d
            shl      ecx, 7
            xor      edx, ecx
            add      r13d, edx
            lea      edx, [r15+r14]
            lea      ecx, [r15+0x01]
            cmp      ecx, edx
            jge      SHORT G_M29284_IG05
            test     edx, edx
            jl       G_M29284_IG10
            cmp      esi, edx
            jl       G_M29284_IG10
            align    [0 bytes for IG04]
     						;; size=66 bbWeight=0.50 PerfScore 6.00
     G_M29284_IG04:
            mov      esi, ecx
            movzx    rsi, word  ptr [rbx+2*rsi+0x10]
            mov      eax, r13d
            shl      eax, 7
            xor      esi, eax
            add      r13d, esi
            inc      ecx
            cmp      ecx, edx
            jl       SHORT G_M29284_IG04
     						;; size=24 bbWeight=3.96 PerfScore 19.80
     G_M29284_IG05:
            mov      esi, r13d
            sar      esi, 17
            sub      r13d, esi
            mov      esi, r13d
            sar      esi, 11
            sub      r13d, esi
            mov      esi, r13d
            sar      esi, 5
            sub      r13d, esi
            mov      esi, r13d
            and      esi, dword ptr [rdi+0x14]
            mov      rdi, gword ptr [rdi+0x08]
            cmp      esi, dword ptr [rdi+0x08]
            jae      G_M29284_IG16
            mov      r12, gword ptr [rdi+8*rsi+0x10]
            test     r12, r12
            je       SHORT G_M29284_IG12
     						;; size=56 bbWeight=0.50 PerfScore 6.75
     G_M29284_IG06:
            cmp      dword ptr [r12+0x18], r13d
            jne      SHORT G_M29284_IG11
     						;; size=7 bbWeight=4 PerfScore 12.00
     G_M29284_IG07:
            mov      rdi, gword ptr [r12+0x08]
            mov      rsi, rbx
            mov      edx, r15d
            mov      ecx, r14d
            mov      rax, 0xD1FFAB1E      ; code for Newtonsoft.Json.DefaultJsonNameTable:TextEquals(System.String,char[],int,int):bool
            call     [rax]Newtonsoft.Json.DefaultJsonNameTable:TextEquals(System.String,char[],int,int):bool
            test     eax, eax
            je       SHORT G_M29284_IG11
     						;; size=30 bbWeight=2 PerfScore 14.50
     G_M29284_IG08:
            mov      rax, gword ptr [r12+0x08]
     						;; size=5 bbWeight=0.50 PerfScore 1.00
     G_M29284_IG09:
            add      rsp, 8
            pop      rbx
            pop      r12
            pop      r13
            pop      r14
            pop      r15
            pop      rbp
            ret      
     						;; size=15 bbWeight=0.50 PerfScore 2.12
     G_M29284_IG10:
            cmp      ecx, esi
            jae      SHORT G_M29284_IG16
            mov      eax, ecx
            movzx    rax, word  ptr [rbx+2*rax+0x10]
            mov      r8d, r13d
            shl      r8d, 7
            xor      eax, r8d
            add      eax, r13d
            mov      r13d, eax
            inc      ecx
            cmp      ecx, edx
            jl       SHORT G_M29284_IG10
            jmp      G_M29284_IG05
     						;; size=38 bbWeight=0.04 PerfScore 0.34
     G_M29284_IG11:
            mov      r12, gword ptr [r12+0x10]
            test     r12, r12
            jne      SHORT G_M29284_IG06
     						;; size=10 bbWeight=4 PerfScore 13.00
     G_M29284_IG12:
            xor      rax, rax
     						;; size=2 bbWeight=0.50 PerfScore 0.12
     G_M29284_IG13:
            add      rsp, 8
            pop      rbx
            pop      r12
            pop      r13
            pop      r14
            pop      r15
            pop      rbp
            ret      
     						;; size=15 bbWeight=0.50 PerfScore 2.12
     G_M29284_IG14:
            mov      rax, 0xD1FFAB1E      ; ''
     						;; size=10 bbWeight=0.50 PerfScore 0.12
     G_M29284_IG15:
            add      rsp, 8
            pop      rbx
            pop      r12
            pop      r13
            pop      r14
            pop      r15
            pop      rbp
            ret      
     						;; size=15 bbWeight=0.50 PerfScore 2.12
     G_M29284_IG16:
            call     CORINFO_HELP_RNGCHKFAIL
            int3     
     						;; size=6 bbWeight=0 PerfScore 0.00
     
     ; Total bytes of code 333, prolog size 25, PerfScore 89.52, instruction count 113, allocated bytes for code 333 (MethodHash=987c8d9b) for method Newtonsoft.Json.DefaultJsonNameTable:Get(char[],int,int):System.String:this (FullOpts)
     ; ============================================================
    Silk.NET.Assimp.CustomFileIO:.ctor(Silk.NET.Assimp.OpenFileCustomIOCallback):this (FullOpts) (159 -> 159 bytes (0))

    Assembly: Silk.NET.Assimp.dasm

    @@ -1,94 +1,94 @@
     ; Assembly listing for method Silk.NET.Assimp.CustomFileIO:.ctor(Silk.NET.Assimp.OpenFileCustomIOCallback):this (FullOpts)
     ; Emitting BLENDED_CODE for x64 + VEX + EVEX on Unix
     ; FullOpts code
     ; optimized code
     ; rbp based frame
     ; partially interruptible
     ; No PGO data
     ; 0 inlinees with PGO data; 9 single block inlinees; 2 inlinees without PGO data
     ; Final local variable assignments
     ;
     ;  V00 this         [V00,T00] (  7,  6.50)     ref  ->  rbx         this class-hnd single-def <Silk.NET.Assimp.CustomFileIO>
     ;  V01 arg1         [V01,T01] (  3,  3   )     ref  ->  r15         class-hnd single-def <Silk.NET.Assimp.OpenFileCustomIOCallback>
     ;* V02 loc0         [V02    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op <System.Runtime.InteropServices.GCHandle>
     ;* V03 loc1         [V03    ] (  0,  0   )  struct (24) zero-ref    ld-addr-op <Silk.NET.Assimp.FileIO>
     ;# V04 OutArgs      [V04    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <Empty>
     ;  V05 tmp1         [V05,T03] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.InvalidOperationException>
     ;* V06 tmp2         [V06    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.Runtime.InteropServices.GCHandle>
     ;* V07 tmp3         [V07    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
     ;  V08 tmp4         [V08,T02] (  5,  4.50)    long  ->  r14         "Inline stloc first use temp"
     ;* V09 tmp5         [V09    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <Silk.NET.Assimp.PfnFileOpenProc>
     ;* V10 tmp6         [V10    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <Silk.NET.Assimp.PfnFileCloseProc>
     ;* V11 tmp7         [V11    ] (  0,  0   )  struct ( 8) zero-ref    "Inlining Arg" <System.Runtime.InteropServices.GCHandle>
     ;* V12 tmp8         [V12    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
     ;* V13 tmp9         [V13    ] (  0,  0   )    long  ->  zero-ref    single-def "field V02._handle (fldOffset=0x0)" P-INDEP
     ;* V14 tmp10        [V14    ] (  0,  0   )    long  ->  zero-ref    single-def "field V03.OpenProc (fldOffset=0x0)" P-INDEP
     ;* V15 tmp11        [V15    ] (  0,  0   )    long  ->  zero-ref    single-def "field V03.CloseProc (fldOffset=0x8)" P-INDEP
     ;* V16 tmp12        [V16    ] (  0,  0   )    long  ->  zero-ref    single-def "field V03.UserData (fldOffset=0x10)" P-INDEP
     ;* V17 tmp13        [V17    ] (  0,  0   )    long  ->  zero-ref    single-def "field V06._handle (fldOffset=0x0)" P-INDEP
     ;* V18 tmp14        [V18    ] (  0,  0   )    long  ->  zero-ref    single-def "field V09._handle (fldOffset=0x0)" P-INDEP
     ;* V19 tmp15        [V19    ] (  0,  0   )    long  ->  zero-ref    single-def "field V10._handle (fldOffset=0x0)" P-INDEP
     ;* V20 tmp16        [V20    ] (  0,  0   )    long  ->  zero-ref    single-def "field V11._handle (fldOffset=0x0)" P-INDEP
     ;
     ; Lcl frame size = 8
     
     G_M23716_IG01:
            push     rbp
            push     r15
            push     r14
            push     rbx
            push     rax
            lea      rbp, [rsp+0x20]
            mov      rbx, rdi
            mov      r15, rsi
     						;; size=18 bbWeight=1 PerfScore 6.00
     G_M23716_IG02:
            mov      rdi, rbx
            mov      esi, 2
            call     System.Runtime.InteropServices.GCHandle:_InternalAlloc(System.Object,int):nint
            mov      r14, rax
            test     r14, r14
            jne      SHORT G_M23716_IG04
     						;; size=21 bbWeight=1 PerfScore 3.00
     G_M23716_IG03:
            mov      rdi, rbx
            mov      esi, 2
            mov      rax, 0xD1FFAB1E      ; code for System.Runtime.InteropServices.GCHandle:InternalAllocWithGCTransition(System.Object,int):nint
            call     [rax]System.Runtime.InteropServices.GCHandle:InternalAllocWithGCTransition(System.Object,int):nint
            mov      r14, rax
     						;; size=23 bbWeight=0.50 PerfScore 2.00
     G_M23716_IG04:
            test     r14, r14
            je       SHORT G_M23716_IG06
            lea      rdi, bword ptr [rbx+0x08]
            mov      rsi, r15
            call     CORINFO_HELP_ASSIGN_REF
            vmovups  xmm0, xmmword ptr [reloc @RWD00]
            vmovups  xmmword ptr [rbx+0x10], xmm0
            mov      qword ptr [rbx+0x20], r14
     						;; size=34 bbWeight=1 PerfScore 6.00
     G_M23716_IG05:
            add      rsp, 8
            pop      rbx
            pop      r14
            pop      r15
            pop      rbp
            ret      
     						;; size=11 bbWeight=1 PerfScore 3.25
     G_M23716_IG06:
            mov      rdi, 0xD1FFAB1E      ; System.InvalidOperationException
            call     CORINFO_HELP_NEWSFAST
            mov      rbx, rax
            mov      rdi, rbx
            mov      rsi, 0xD1FFAB1E      ; 'Failed to allocate GCHandle for CustomFileIO'
            mov      rax, 0xD1FFAB1E      ; code for System.InvalidOperationException:.ctor(System.String):this
            call     [rax]System.InvalidOperationException:.ctor(System.String):this
            mov      rdi, rbx
            call     CORINFO_HELP_THROW
            int3     
     						;; size=52 bbWeight=0 PerfScore 0.00
    -RWD00  	dq	00007E23E8D50A98h, 00007E23E8D50AB0h
    +RWD00  	dq	0000700F06350A98h, 0000700F06350AB0h
     
     
     ; Total bytes of code 159, prolog size 12, PerfScore 20.25, instruction count 43, allocated bytes for code 159 (MethodHash=57fda35b) for method Silk.NET.Assimp.CustomFileIO:.ctor(Silk.NET.Assimp.OpenFileCustomIOCallback):this (FullOpts)
     ; ============================================================
    System.Runtime.CompilerServices.AsyncHelpers+ValueTaskSourceContinuation+ValueTaskSourceContinuationResume:.cctor() (FullOpts) (23 -> 23 bytes (0))

    Assembly: System.Private.CoreLib.dasm

    @@ -1,32 +1,32 @@
     ; Assembly listing for method System.Runtime.CompilerServices.AsyncHelpers+ValueTaskSourceContinuation+ValueTaskSourceContinuationResume:.cctor() (FullOpts)
     ; Emitting BLENDED_CODE for x64 + VEX + EVEX on Unix
     ; FullOpts code
     ; optimized code
     ; rsp based frame
     ; partially interruptible
     ; No PGO data
     ; Final local variable assignments
     ;
     ;* V00 loc0         [V00    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op <System.Runtime.CompilerServices.ResumeInfo>
     ;# V01 OutArgs      [V01    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <Empty>
     ;* V02 tmp1         [V02    ] (  0,  0   )    long  ->  zero-ref    "field V00.Resume (fldOffset=0x0)" P-INDEP
     ;* V03 tmp2         [V03    ] (  0,  0   )    long  ->  zero-ref    "field V00.DiagnosticIP (fldOffset=0x8)" P-INDEP
     ;  V04 cse0         [V04,T00] (  2,  2   )    long  ->  rax         "CSE #01: aggressive"
     ;
     ; Lcl frame size = 0
     
     G_M58358_IG01:
     						;; size=0 bbWeight=1 PerfScore 0.00
     G_M58358_IG02:
            mov      rax, 0xD1FFAB1E      ; data for System.Runtime.CompilerServices.AsyncHelpers+ValueTaskSourceContinuation+ValueTaskSourceContinuationResume:ResumeInfo
            vmovsd   xmm0, qword ptr [reloc @RWD00]
            vmovups  xmmword ptr [rax], xmm0
     						;; size=22 bbWeight=1 PerfScore 3.25
     G_M58358_IG03:
            ret      
     						;; size=1 bbWeight=1 PerfScore 1.00
    -RWD00  	dq	00007F26EB7215A8h
    +RWD00  	dq	00007D10445415A8h
     
     
     ; Total bytes of code 23, prolog size 0, PerfScore 4.25, instruction count 4, allocated bytes for code 23 (MethodHash=bcd21c09) for method System.Runtime.CompilerServices.AsyncHelpers+ValueTaskSourceContinuation+ValueTaskSourceContinuationResume:.cctor() (FullOpts)
     ; ============================================================
    Silk.NET.Assimp.CustomFileIO:OpenFile(ptr,ptr,ptr):ptr (FullOpts) (1,423 -> 1,423 bytes (0))

    Assembly: Silk.NET.Assimp.dasm

    @@ -1,815 +1,815 @@
     ; Assembly listing for method Silk.NET.Assimp.CustomFileIO:OpenFile(ptr,ptr,ptr):ptr (FullOpts)
     ; Emitting BLENDED_CODE for x64 + VEX + EVEX on Unix
     ; FullOpts code
     ; optimized code
     ; rbp based frame
     ; fully interruptible
     ; No PGO data
     ; 0 inlinees with PGO data; 88 single block inlinees; 22 inlinees without PGO data
     ; Final local variable assignments
     ;
     ;  V00 arg0         [V00,T13] (  3,  3   )    long  ->  r14         single-def
     ;  V01 arg1         [V01,T01] (  5,  8   )    long  ->  rbx         single-def
     ;  V02 arg2         [V02,T02] (  5,  8   )    long  ->  r15         single-def
     ;  V03 loc0         [V03,T36] (  2,  2   )     ref  ->  [rbp-0xA8]  class-hnd exact spill-single-def ptr <Silk.NET.Assimp.CustomFileIO>
     ;  V04 loc1         [V04,T00] ( 23, 38.50)     int  ->  r13        
     ;* V05 loc2         [V05    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op <System.Span`1[byte]>
     ;* V06 loc3         [V06    ] (  0,  0   )     int  ->  zero-ref    single-def
     ;* V07 loc4         [V07    ] (  0,  0   )  struct (16) zero-ref    <System.Span`1[char]>
     ;* V08 loc5         [V08    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op <System.Span`1[byte]>
     ;  V09 loc6         [V09,T20] (  4,  3   )   ubyte  ->  rbx         single-def
     ;  V10 loc7         [V10,T30] (  3,  2   )   ubyte  ->  r14         single-def
     ;  V11 loc8         [V11,T31] (  3,  2   )   ubyte  ->  r12         single-def
     ;  V12 loc9         [V12,T17] (  5,  3.50)   ubyte  ->  r15         single-def
     ;* V13 loc10        [V13    ] (  0,  0   )     int  ->  zero-ref    single-def
     ;* V14 loc11        [V14    ] (  0,  0   )     int  ->  zero-ref    single-def
     ;  V15 loc12        [V15,T16] (  5,  3.50)     ref  ->  r14         class-hnd single-def <System.IO.Stream>
     ;* V16 loc13        [V16    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op <System.Runtime.InteropServices.GCHandle>
     ;  V17 loc14        [V17,T25] (  5,  2.50)    long  ->  r15         single-def
     ;* V18 loc15        [V18    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op <System.Runtime.InteropServices.GCHandle>
     ;* V19 loc16        [V19    ] (  0,  0   )  struct (16) zero-ref    <System.Span`1[char]>
     ;* V20 loc17        [V20    ] (  0,  0   )     int  ->  zero-ref    single-def
     ;* V21 loc18        [V21    ] (  0,  0   )  struct (56) zero-ref    do-not-enreg[SF] ld-addr-op <Silk.NET.Assimp.File>
     ;  V22 OutArgs      [V22    ] (  1,  1   )  struct (16) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <UNNAMED>
     ;  V23 tmp1         [V23,T03] (  4,  7   )     ref  ->  r14         single-def "ISINST eval op1"
     ;* V24 tmp2         [V24    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling qmarkNull" <Silk.NET.Assimp.CustomFileIO>
     ;  V25 tmp3         [V25,T23] (  2,  3   )     ref  ->  [rbp-0xB0]  class-hnd exact spill-single-def ptr "impAppendStmt" <System.Text.UTF8Encoding+UTF8EncodingSealed>
     ;* V26 tmp4         [V26    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.ReadOnlySpan`1[byte]>
     ;* V27 tmp5         [V27    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[char]>
     ;  V28 tmp6         [V28,T24] (  2,  3   )     ref  ->  r12         class-hnd exact single-def "impAppendStmt" <System.Text.UTF8Encoding+UTF8EncodingSealed>
     ;* V29 tmp7         [V29    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.ReadOnlySpan`1[byte]>
     ;  V30 tmp8         [V30,T32] (  3,  2   )     int  ->  r14        
     ;  V31 tmp9         [V31,T33] (  3,  2   )     int  ->  r12        
     ;  V32 tmp10        [V32,T34] (  3,  2   )     int  ->  rax        
     ;  V33 tmp11        [V33,T26] (  4,  2.50)     int  ->  rcx        
     ;  V34 tmp12        [V34,T27] (  4,  2.50)     int  ->   r8        
     ;  V35 tmp13        [V35,T08] (  3,  6   )     ref  ->  rax         class-hnd exact single-def "impAppendStmt" <Silk.NET.Assimp.OpenFileCustomIOCallback>
     ;* V36 tmp14        [V36    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.ReadOnlySpan`1[char]>
     ;  V37 tmp15        [V37,T43] (  3,  0   )     ref  ->  r15         class-hnd exact single-def "NewObj constructor temp" <System.InvalidOperationException>
     ;  V38 tmp16        [V38,T44] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.ArgumentException>
     ;  V39 tmp17        [V39,T45] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.ArgumentException>
     ;  V40 tmp18        [V40,T21] (  3,  3   )     ref  ->  rax         class-hnd exact single-def "NewArr temp" <char[]>
     ;  V41 tmp19        [V41,T46] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.InvalidOperationException>
     ;  V42 tmp20        [V42,T09] (  3,  6   )    long  ->  rdx         "Inlining Arg"
     ;* V43 tmp21        [V43    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.Runtime.InteropServices.GCHandle>
     ;* V44 tmp22        [V44    ] (  0,  0   )    long  ->  zero-ref    "dup spill"
     ;* V45 tmp23        [V45    ] (  0,  0   )    long  ->  zero-ref    ld-addr-op "NewObj constructor temp"
     ;* V46 tmp24        [V46    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
     ;* V47 tmp25        [V47    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
     ;* V48 tmp26        [V48    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[byte]>
     ;* V49 tmp27        [V49    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[byte]>
     ;* V50 tmp28        [V50    ] (  0,  0   )   byref  ->  zero-ref    single-def "Inlining Arg"
     ;* V51 tmp29        [V51    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
     ;* V52 tmp30        [V52    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline return value spill temp"
     ;* V53 tmp31        [V53    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[byte]>
     ;  V54 tmp32        [V54    ] (  2,  2   )   byref  ->  [rbp-0x38]  do-not-enreg[] must-init pinned ptr "Inline stloc first use temp"
     ;* V55 tmp33        [V55    ] (  0,  0   )    long  ->  zero-ref    single-def "Inline stloc first use temp"
     ;* V56 tmp34        [V56    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[byte]>
     ;* V57 tmp35        [V57    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
     ;* V58 tmp36        [V58    ] (  0,  0   )     int  ->  zero-ref    ld-addr-op single-def "Inline ldloca(s) first use temp"
     ;  V59 tmp37        [V59,T11] (  9,  5.50)     int  ->  [rbp-0x3C]  ptr "Inline stloc first use temp"
     ;  V60 tmp38        [V60    ] (  2,  2   )     int  ->  [rbp-0x48]  do-not-enreg[X] must-init addr-exposed ld-addr-op ptr "Inline ldloca(s) first use temp"
     ;  V61 tmp39        [V61    ] (  1,  1   )     int  ->  [rbp-0x50]  do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
     ;  V62 tmp40        [V62,T18] (  4,  3.50)     int  ->  rcx         single-def "Inline stloc first use temp"
     ;* V63 tmp41        [V63    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[char]>
     ;  V64 tmp42        [V64,T37] (  2,  2   )    long  ->  rax         "Inlining Arg"
     ;* V65 tmp43        [V65    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[byte]>
     ;* V66 tmp44        [V66    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[byte]>
     ;* V67 tmp45        [V67    ] (  0,  0   )   byref  ->  zero-ref    single-def "Inlining Arg"
     ;* V68 tmp46        [V68    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
     ;* V69 tmp47        [V69    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline return value spill temp"
     ;* V70 tmp48        [V70    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[byte]>
     ;  V71 tmp49        [V71    ] (  2,  2   )   byref  ->  [rbp-0x58]  do-not-enreg[] must-init pinned ptr "Inline stloc first use temp"
     ;* V72 tmp50        [V72    ] (  0,  0   )    long  ->  zero-ref    single-def "Inline stloc first use temp"
     ;* V73 tmp51        [V73    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[char]>
     ;  V74 tmp52        [V74    ] (  2,  2   )   byref  ->  [rbp-0x60]  do-not-enreg[] must-init pinned ptr "Inline stloc first use temp"
     ;* V75 tmp53        [V75    ] (  0,  0   )    long  ->  zero-ref    single-def "Inline stloc first use temp"
     ;* V76 tmp54        [V76    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[byte]>
     ;* V77 tmp55        [V77    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[char]>
     ;* V78 tmp56        [V78    ] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
     ;* V79 tmp57        [V79    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
     ;* V80 tmp58        [V80    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
     ;  V81 tmp59        [V81,T28] (  3,  2.50)     int  ->   r9         ld-addr-op single-def "Inline ldloca(s) first use temp"
     ;  V82 tmp60        [V82,T39] (  2,  1.50)     int  ->  rdi         single-def "Inline stloc first use temp"
     ;  V83 tmp61        [V83    ] (  2,  2   )    long  ->  [rbp-0x68]  do-not-enreg[X] must-init addr-exposed ld-addr-op ptr "Inline ldloca(s) first use temp"
     ;  V84 tmp62        [V84    ] (  2,  2   )    long  ->  [rbp-0x70]  do-not-enreg[X] must-init addr-exposed ld-addr-op ptr "Inline ldloca(s) first use temp"
     ;* V85 tmp63        [V85    ] (  0,  0   )  struct (16) zero-ref    "Inlining Arg" <System.Span`1[byte]>
     ;* V86 tmp64        [V86    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.ReadOnlySpan`1[byte]>
     ;* V87 tmp65        [V87    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[byte]>
     ;* V88 tmp66        [V88    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[byte]>
     ;* V89 tmp67        [V89    ] (  0,  0   )   byref  ->  zero-ref    single-def "Inlining Arg"
     ;* V90 tmp68        [V90    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
     ;* V91 tmp69        [V91    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
     ;* V92 tmp70        [V92    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[byte]>
     ;* V93 tmp71        [V93    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[byte]>
     ;* V94 tmp72        [V94    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
     ;* V95 tmp73        [V95    ] (  0,  0   )   byref  ->  zero-ref    single-def "Inlining Arg"
     ;* V96 tmp74        [V96    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
     ;* V97 tmp75        [V97    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[byte]>
     ;* V98 tmp76        [V98    ] (  0,  0   )  struct (16) zero-ref    "Inlining Arg" <System.Span`1[byte]>
     ;* V99 tmp77        [V99    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.ReadOnlySpan`1[byte]>
     ;* V100 tmp78       [V100    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[byte]>
     ;* V101 tmp79       [V101    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[byte]>
     ;* V102 tmp80       [V102    ] (  0,  0   )   byref  ->  zero-ref    single-def "Inlining Arg"
     ;* V103 tmp81       [V103    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
     ;* V104 tmp82       [V104    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
     ;* V105 tmp83       [V105    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[byte]>
     ;* V106 tmp84       [V106    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[byte]>
     ;* V107 tmp85       [V107    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
     ;* V108 tmp86       [V108    ] (  0,  0   )   byref  ->  zero-ref    single-def "Inlining Arg"
     ;* V109 tmp87       [V109    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
     ;* V110 tmp88       [V110    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[byte]>
     ;* V111 tmp89       [V111    ] (  0,  0   )  struct (16) zero-ref    "Inlining Arg" <System.Span`1[byte]>
     ;* V112 tmp90       [V112    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.ReadOnlySpan`1[byte]>
     ;* V113 tmp91       [V113    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[byte]>
     ;* V114 tmp92       [V114    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[byte]>
     ;* V115 tmp93       [V115    ] (  0,  0   )   byref  ->  zero-ref    single-def "Inlining Arg"
     ;* V116 tmp94       [V116    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
     ;* V117 tmp95       [V117    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
     ;* V118 tmp96       [V118    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[byte]>
     ;* V119 tmp97       [V119    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[byte]>
     ;* V120 tmp98       [V120    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
     ;* V121 tmp99       [V121    ] (  0,  0   )   byref  ->  zero-ref    single-def "Inlining Arg"
     ;* V122 tmp100      [V122    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
     ;* V123 tmp101      [V123    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[byte]>
     ;* V124 tmp102      [V124    ] (  0,  0   )  struct (16) zero-ref    "Inlining Arg" <System.Span`1[byte]>
     ;* V125 tmp103      [V125    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.ReadOnlySpan`1[byte]>
     ;* V126 tmp104      [V126    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[byte]>
     ;* V127 tmp105      [V127    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[byte]>
     ;* V128 tmp106      [V128    ] (  0,  0   )   byref  ->  zero-ref    single-def "Inlining Arg"
     ;* V129 tmp107      [V129    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
     ;* V130 tmp108      [V130    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
     ;* V131 tmp109      [V131    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[byte]>
     ;* V132 tmp110      [V132    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[byte]>
     ;* V133 tmp111      [V133    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
     ;* V134 tmp112      [V134    ] (  0,  0   )   byref  ->  zero-ref    single-def "Inlining Arg"
     ;* V135 tmp113      [V135    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
     ;* V136 tmp114      [V136    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[byte]>
     ;* V137 tmp115      [V137    ] (  0,  0   )  struct (16) zero-ref    "Inlining Arg" <System.Span`1[byte]>
     ;* V138 tmp116      [V138    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.ReadOnlySpan`1[byte]>
     ;* V139 tmp117      [V139    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[byte]>
     ;* V140 tmp118      [V140    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan
    ... truncated for GitHub; see the full report in the diff browser ...
    System.Runtime.CompilerServices.AsyncProfiler+ContinuationWrapper:InitContinuationWrappers():System.Runtime.CompilerServices.AsyncProfiler+ContinuationWrapper+ContinuationWrapperTable (FullOpts) (79 -> 79 bytes (0))

    Assembly: System.Private.CoreLib.dasm

    @@ -1,76 +1,76 @@
     ; Assembly listing for method System.Runtime.CompilerServices.AsyncProfiler+ContinuationWrapper:InitContinuationWrappers():System.Runtime.CompilerServices.AsyncProfiler+ContinuationWrapper+ContinuationWrapperTable (FullOpts)
     ; Emitting BLENDED_CODE for x64 + VEX + EVEX on Unix
     ; FullOpts code
     ; optimized code
     ; rbp based frame
     ; partially interruptible
     ; No PGO data
     ; 0 inlinees with PGO data; 32 single block inlinees; 0 inlinees without PGO data
     ; Final local variable assignments
     ;
     ;  V00 RetBuf       [V00,T00] (  7,  7   )    long  ->  rdi         single-def
     ;* V01 loc0         [V01    ] (  0,  0   )  struct (256) zero-ref    do-not-enreg[SF] ld-addr-op <System.Runtime.CompilerServices.AsyncProfiler+ContinuationWrapper+ContinuationWrapperTable>
     ;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <Empty>
     ;* V03 tmp1         [V03    ] (  0,  0   )    long  ->  zero-ref    "V01.[000..008)"
     ;* V04 tmp2         [V04    ] (  0,  0   )    long  ->  zero-ref    "V01.[008..016)"
     ;* V05 tmp3         [V05    ] (  0,  0   )    long  ->  zero-ref    "V01.[016..024)"
     ;* V06 tmp4         [V06    ] (  0,  0   )    long  ->  zero-ref    "V01.[024..032)"
     ;* V07 tmp5         [V07    ] (  0,  0   )    long  ->  zero-ref    "V01.[032..040)"
     ;* V08 tmp6         [V08    ] (  0,  0   )    long  ->  zero-ref    "V01.[040..048)"
     ;* V09 tmp7         [V09    ] (  0,  0   )    long  ->  zero-ref    "V01.[048..056)"
     ;* V10 tmp8         [V10    ] (  0,  0   )    long  ->  zero-ref    "V01.[056..064)"
     ;* V11 tmp9         [V11    ] (  0,  0   )    long  ->  zero-ref    "V01.[064..072)"
     ;* V12 tmp10        [V12    ] (  0,  0   )    long  ->  zero-ref    "V01.[072..080)"
     ;* V13 tmp11        [V13    ] (  0,  0   )    long  ->  zero-ref    "V01.[080..088)"
     ;* V14 tmp12        [V14    ] (  0,  0   )    long  ->  zero-ref    "V01.[088..096)"
     ;* V15 tmp13        [V15    ] (  0,  0   )    long  ->  zero-ref    "V01.[096..104)"
     ;* V16 tmp14        [V16    ] (  0,  0   )    long  ->  zero-ref    "V01.[104..112)"
     ;* V17 tmp15        [V17    ] (  0,  0   )    long  ->  zero-ref    "V01.[112..120)"
     ;* V18 tmp16        [V18    ] (  0,  0   )    long  ->  zero-ref    "V01.[120..128)"
     ;* V19 tmp17        [V19    ] (  0,  0   )    long  ->  zero-ref    "V01.[128..136)"
     ;* V20 tmp18        [V20    ] (  0,  0   )    long  ->  zero-ref    "V01.[136..144)"
     ;* V21 tmp19        [V21    ] (  0,  0   )    long  ->  zero-ref    "V01.[144..152)"
     ;* V22 tmp20        [V22    ] (  0,  0   )    long  ->  zero-ref    "V01.[152..160)"
     ;* V23 tmp21        [V23    ] (  0,  0   )    long  ->  zero-ref    "V01.[160..168)"
     ;* V24 tmp22        [V24    ] (  0,  0   )    long  ->  zero-ref    "V01.[168..176)"
     ;* V25 tmp23        [V25    ] (  0,  0   )    long  ->  zero-ref    "V01.[176..184)"
     ;* V26 tmp24        [V26    ] (  0,  0   )    long  ->  zero-ref    "V01.[184..192)"
     ;* V27 tmp25        [V27    ] (  0,  0   )    long  ->  zero-ref    "V01.[192..200)"
     ;* V28 tmp26        [V28    ] (  0,  0   )    long  ->  zero-ref    "V01.[200..208)"
     ;* V29 tmp27        [V29    ] (  0,  0   )    long  ->  zero-ref    "V01.[208..216)"
     ;* V30 tmp28        [V30    ] (  0,  0   )    long  ->  zero-ref    "V01.[216..224)"
     ;* V31 tmp29        [V31    ] (  0,  0   )    long  ->  zero-ref    "V01.[224..232)"
     ;* V32 tmp30        [V32    ] (  0,  0   )    long  ->  zero-ref    "V01.[232..240)"
     ;* V33 tmp31        [V33    ] (  0,  0   )    long  ->  zero-ref    "V01.[240..248)"
     ;* V34 tmp32        [V34    ] (  0,  0   )    long  ->  zero-ref    "V01.[248..256)"
     ;
     ; Lcl frame size = 0
     
     G_M36615_IG01:
            push     rbp
            mov      rbp, rsp
     						;; size=4 bbWeight=1 PerfScore 1.25
     G_M36615_IG02:
            vmovups  zmm0, zmmword ptr [reloc @RWD00]
            vmovups  zmmword ptr [rdi], zmm0
            vmovups  zmm0, zmmword ptr [reloc @RWD64]
            vmovups  zmmword ptr [rdi+0x40], zmm0
            vmovups  zmm0, zmmword ptr [reloc @RWD128]
            vmovups  zmmword ptr [rdi+0x80], zmm0
            vmovups  zmm0, zmmword ptr [reloc @RWD192]
            vmovups  zmmword ptr [rdi+0xC0], zmm0
            mov      rax, rdi
     						;; size=70 bbWeight=1 PerfScore 20.25
     G_M36615_IG03:
            vzeroupper 
            pop      rbp
            ret      
     						;; size=5 bbWeight=1 PerfScore 2.50
    -RWD00  	dq	00007F26EB721698h, 00007F26EB7216B0h, 00007F26EB7216C8h, 00007F26EB7216E0h, 00007F26EB7216F8h, 00007F26EB721710h, 00007F26EB721728h, 00007F26EB721740h
    -RWD64  	dq	00007F26EB721758h, 00007F26EB721770h, 00007F26EB721788h, 00007F26EB7217A0h, 00007F26EB7217B8h, 00007F26EB7217D0h, 00007F26EB7217E8h, 00007F26EB721800h
    -RWD128 	dq	00007F26EB721818h, 00007F26EB721830h, 00007F26EB721848h, 00007F26EB721860h, 00007F26EB721878h, 00007F26EB721890h, 00007F26EB7218A8h, 00007F26EB7218C0h
    -RWD192 	dq	00007F26EB7218D8h, 00007F26EB7218F0h, 00007F26EB721908h, 00007F26EB721920h, 00007F26EB721938h, 00007F26EB721950h, 00007F26EB721968h, 00007F26EB721980h
    +RWD00  	dq	00007D1044541698h, 00007D10445416B0h, 00007D10445416C8h, 00007D10445416E0h, 00007D10445416F8h, 00007D1044541710h, 00007D1044541728h, 00007D1044541740h
    +RWD64  	dq	00007D1044541758h, 00007D1044541770h, 00007D1044541788h, 00007D10445417A0h, 00007D10445417B8h, 00007D10445417D0h, 00007D10445417E8h, 00007D1044541800h
    +RWD128 	dq	00007D1044541818h, 00007D1044541830h, 00007D1044541848h, 00007D1044541860h, 00007D1044541878h, 00007D1044541890h, 00007D10445418A8h, 00007D10445418C0h
    +RWD192 	dq	00007D10445418D8h, 00007D10445418F0h, 00007D1044541908h, 00007D1044541920h, 00007D1044541938h, 00007D1044541950h, 00007D1044541968h, 00007D1044541980h
     
     
     ; Total bytes of code 79, prolog size 4, PerfScore 24.00, instruction count 14, allocated bytes for code 79 (MethodHash=14f070f8) for method System.Runtime.CompilerServices.AsyncProfiler+ContinuationWrapper:InitContinuationWrappers():System.Runtime.CompilerServices.AsyncProfiler+ContinuationWrapper+ContinuationWrapperTable (FullOpts)
     ; ============================================================
    System.Runtime.CompilerServices.RuntimeAsyncTaskContinuation+TaskContinuationResume:.cctor() (FullOpts) (167 -> 167 bytes (0))

    Assembly: System.Private.CoreLib.dasm

    @@ -1,73 +1,73 @@
     ; Assembly listing for method System.Runtime.CompilerServices.RuntimeAsyncTaskContinuation+TaskContinuationResume:.cctor() (FullOpts)
     ; Emitting BLENDED_CODE for x64 + VEX + EVEX on Unix
     ; FullOpts code
     ; optimized code
     ; rbp based frame
     ; partially interruptible
     ; No PGO data
     ; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
     ; Final local variable assignments
     ;
     ;* V00 loc0         [V00    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op <System.Runtime.CompilerServices.ResumeInfo>
     ;# V01 OutArgs      [V01    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <Empty>
     ;  V02 tmp1         [V02,T00] (  4,  8   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.Threading.SendOrPostCallback>
     ;  V03 tmp2         [V03,T01] (  3,  6   )     ref  ->  rsi         class-hnd exact single-def "Inlining Arg" <System.Runtime.CompilerServices.RuntimeAsyncTaskContinuation+TaskContinuationResume+<>c>
     ;* V04 tmp3         [V04    ] (  0,  0   )    long  ->  zero-ref    "field V00.Resume (fldOffset=0x0)" P-INDEP
     ;* V05 tmp4         [V05    ] (  0,  0   )    long  ->  zero-ref    "field V00.DiagnosticIP (fldOffset=0x8)" P-INDEP
     ;  V06 cse0         [V06,T02] (  2,  2   )    long  ->  rdi         "CSE #01: aggressive"
     ;
     ; Lcl frame size = 8
     
     G_M63124_IG01:
            push     rbp
            push     rbx
            push     rax
            lea      rbp, [rsp+0x10]
     						;; size=8 bbWeight=1 PerfScore 3.50
     G_M63124_IG02:
            mov      rdi, 0xD1FFAB1E      ; data for System.Runtime.CompilerServices.RuntimeAsyncTaskContinuation+TaskContinuationResume:ResumeInfo
            vmovsd   xmm0, qword ptr [reloc @RWD00]
            vmovups  xmmword ptr [rdi], xmm0
            mov      rdi, 0xD1FFAB1E      ; System.Threading.SendOrPostCallback
            call     CORINFO_HELP_NEWSFAST
            mov      rbx, rax
            mov      rdi, 0xD1FFAB1E      ; global ptr
            test     byte  ptr [rdi], 1
            je       SHORT G_M63124_IG05
     						;; size=55 bbWeight=1 PerfScore 8.00
     G_M63124_IG03:
            mov      rdi, 0xD1FFAB1E      ; data for System.Runtime.CompilerServices.RuntimeAsyncTaskContinuation+TaskContinuationResume+<>c:<>9
            mov      rsi, gword ptr [rdi]
            test     rsi, rsi
            je       SHORT G_M63124_IG06
            lea      rdi, bword ptr [rbx+0x10]
            call     CORINFO_HELP_ASSIGN_REF
            mov      rdi, 0xD1FFAB1E      ; code for System.Runtime.CompilerServices.RuntimeAsyncTaskContinuation+TaskContinuationResume+<>c:<.cctor>b__3_0(System.Object):this
            mov      qword ptr [rbx+0x18], rdi
            mov      rdi, 0xD1FFAB1E      ; data for System.Runtime.CompilerServices.RuntimeAsyncTaskContinuation+TaskContinuationResume:s_postCallback
            mov      rsi, rbx
            call     CORINFO_HELP_ASSIGN_REF
            nop      
     						;; size=60 bbWeight=1 PerfScore 8.00
     G_M63124_IG04:
            add      rsp, 8
            pop      rbx
            pop      rbp
            ret      
     						;; size=7 bbWeight=1 PerfScore 2.25
     G_M63124_IG05:
            mov      rdi, 0xD1FFAB1E      ; System.Runtime.CompilerServices.RuntimeAsyncTaskContinuation+TaskContinuationResume+<>c
            mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_GET_GCSTATIC_BASE
            call     [rax]CORINFO_HELP_GET_GCSTATIC_BASE
            jmp      SHORT G_M63124_IG03
     						;; size=24 bbWeight=0 PerfScore 0.00
     G_M63124_IG06:
            mov      rax, 0xD1FFAB1E      ; code for System.Delegate:ThrowNullThisInDelegateToInstance()
            call     [rax]System.Delegate:ThrowNullThisInDelegateToInstance()
            int3     
     						;; size=13 bbWeight=0 PerfScore 0.00
    -RWD00  	dq	00007F26EB721A70h
    +RWD00  	dq	00007D1044541A70h
     
     
     ; Total bytes of code 167, prolog size 8, PerfScore 21.75, instruction count 36, allocated bytes for code 167 (MethodHash=4e05096b) for method System.Runtime.CompilerServices.RuntimeAsyncTaskContinuation+TaskContinuationResume:.cctor() (FullOpts)
     ; ============================================================

    Showing 6 of 6 reported examples in this category.

    Browse all JIT diff results and examples

  3. MihuBot commented on Oct 4, 2026

    @MihuBot
    OwnerAuthor
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions