Skip to content

Instantly share code, notes, and snippets.

@BoyBaykiller
Created April 3, 2026 03:40
Show Gist options
  • Select an option

  • Save BoyBaykiller/eae58ed0fd4221d42d120472d28bf045 to your computer and use it in GitHub Desktop.

Select an option

Save BoyBaykiller/eae58ed0fd4221d42d120472d28bf045 to your computer and use it in GitHub Desktop.
lowerAddNegToSub

Diffs are based on 2,542,063 contexts (973,272 MinOpts, 1,568,791 FullOpts).

Overall (+9,918 bytes)
Collection Base size (bytes) Diff size (bytes) PerfScore in Diffs
aspnet2.run.windows.x64.checked.mch 18,909,649 +119 +0.11%
benchmarks.run.windows.x64.checked.mch 13,336,843 +127 -0.04%
benchmarks.run_pgo.windows.x64.checked.mch 29,574,934 +1,155 +0.08%
benchmarks.run_pgo_optrepeat.windows.x64.checked.mch 13,529,071 +131 -0.04%
coreclr_tests.run.windows.x64.checked.mch 294,975,944 -811 +0.05%
libraries.crossgen2.windows.x64.checked.mch 41,264,262 +175 +0.42%
libraries.pmi.windows.x64.checked.mch 48,433,660 +52 +0.14%
libraries_tests.run.windows.x64.Release.mch 343,438,187 +5,217 +0.06%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch 153,702,737 +2,577 -0.17%
realworld.run.windows.x64.checked.mch 11,585,274 +1,183 +0.06%
smoke_tests.nativeaot.windows.x64.checked.mch 5,503,934 -7 -0.24%
FullOpts (+9,918 bytes)
Collection Base size (bytes) Diff size (bytes) PerfScore in Diffs
aspnet2.run.windows.x64.checked.mch 13,810,184 +119 +0.11%
benchmarks.run.windows.x64.checked.mch 13,213,568 +127 -0.04%
benchmarks.run_pgo.windows.x64.checked.mch 12,016,469 +1,155 +0.08%
benchmarks.run_pgo_optrepeat.windows.x64.checked.mch 13,405,796 +131 -0.04%
coreclr_tests.run.windows.x64.checked.mch 109,309,109 -811 +0.05%
libraries.crossgen2.windows.x64.checked.mch 41,262,472 +175 +0.42%
libraries.pmi.windows.x64.checked.mch 48,321,223 +52 +0.14%
libraries_tests.run.windows.x64.Release.mch 146,743,830 +5,217 +0.06%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch 142,382,109 +2,577 -0.17%
realworld.run.windows.x64.checked.mch 11,357,738 +1,183 +0.06%
smoke_tests.nativeaot.windows.x64.checked.mch 5,502,251 -7 -0.24%
Example diffs
aspnet2.run.windows.x64.checked.mch
-22 (-5.63%) : 48370.dasm - System.SpanHelpers:IndexOfNullCharacter(ptr):int (Tier1)
@@ -90,9 +90,8 @@ G_M36857_IG06:        ; bbWeight=0.42, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
        add      rbx, 8
 						;; size=25 bbWeight=0.42 PerfScore 2.87
 G_M36857_IG07:        ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
-       mov      rax, rbx
-       neg      rax
-       add      rax, 0xD1FFAB1E
+       mov      eax, 0xD1FFAB1E
+       sub      rax, rbx
        and      rax, -16
        jle      SHORT G_M36857_IG12
        vxorps   ymm0, ymm0, ymm0
@@ -100,7 +99,7 @@ G_M36857_IG07:        ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
        vpmovmskb edx, ymm0
        test     edx, edx
        jne      SHORT G_M36857_IG09
-						;; size=35 bbWeight=1.00 PerfScore 9.58
+						;; size=31 bbWeight=1.00 PerfScore 9.33
 G_M36857_IG08:        ; bbWeight=4.19, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        add      rbx, 16
        add      rax, -16
@@ -125,17 +124,16 @@ G_M36857_IG10:        ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
        pop      rbx
        ret      
 						;; size=9 bbWeight=1.00 PerfScore 2.75
-G_M36857_IG11:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M36857_IG11:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
        cmp      word  ptr [rcx+2*rbx], 0
-       je       G_M36857_IG20
+       je       SHORT G_M36857_IG20
        inc      rbx
        dec      rax
        jmp      G_M36857_IG05
-						;; size=22 bbWeight=0 PerfScore 0.00
+						;; size=18 bbWeight=0 PerfScore 0.00
 G_M36857_IG12:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
-       mov      rax, rbx
-       neg      rax
-       add      rax, 0xD1FFAB1E
+       mov      eax, 0xD1FFAB1E
+       sub      rax, rbx
        and      rax, -8
        jle      SHORT G_M36857_IG13
        vxorps   xmm0, xmm0, xmm0
@@ -144,15 +142,14 @@ G_M36857_IG12:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
        test     eax, eax
        jne      SHORT G_M36857_IG15
        add      rbx, 8
-						;; size=39 bbWeight=0 PerfScore 0.00
+						;; size=35 bbWeight=0 PerfScore 0.00
 G_M36857_IG13:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        cmp      rbx, 0xD1FFAB1E
        jge      SHORT G_M36857_IG16
-       mov      rax, rbx
-       neg      rax
-       add      rax, 0xD1FFAB1E
+       mov      eax, 0xD1FFAB1E
+       sub      rax, rbx
        jmp      G_M36857_IG04
-						;; size=26 bbWeight=0 PerfScore 0.00
+						;; size=22 bbWeight=0 PerfScore 0.00
 G_M36857_IG14:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        tzcnt    eax, eax
        shr      eax, 1
@@ -172,14 +169,14 @@ G_M36857_IG16:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        ; gcr arg pop 0
        int3     
 						;; size=7 bbWeight=0 PerfScore 0.00
-G_M36857_IG17:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M36857_IG17:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        lea      eax, [rbx+0x03]
-       jmp      G_M36857_IG10
-						;; size=8 bbWeight=0 PerfScore 0.00
-G_M36857_IG18:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+       jmp      SHORT G_M36857_IG10
+						;; size=5 bbWeight=0 PerfScore 0.00
+G_M36857_IG18:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        lea      eax, [rbx+0x02]
-       jmp      G_M36857_IG10
-						;; size=8 bbWeight=0 PerfScore 0.00
+       jmp      SHORT G_M36857_IG10
+						;; size=5 bbWeight=0 PerfScore 0.00
 G_M36857_IG19:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        lea      eax, [rbx+0x01]
        jmp      G_M36857_IG10
@@ -189,7 +186,7 @@ G_M36857_IG20:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        jmp      G_M36857_IG10
 						;; size=7 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 391, prolog size 5, PerfScore 85.61, instruction count 110, allocated bytes for code 391 (MethodHash=87b17006) for method System.SpanHelpers:IndexOfNullCharacter(ptr):int (Tier1)
+; Total bytes of code 369, prolog size 5, PerfScore 85.36, instruction count 107, allocated bytes for code 369 (MethodHash=87b17006) for method System.SpanHelpers:IndexOfNullCharacter(ptr):int (Tier1)
 ; ============================================================
 
 Unwind Info:
-4 (-4.04%) : 1390.dasm - System.Threading.PortableThreadPool+GateThread+DelayHelper:GetNextDelay(int):uint:this (FullOpts)
@@ -29,9 +29,8 @@ G_M55382_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byr
        ; byrRegs +[rcx]
        mov      eax, edx
        sub      eax, dword ptr [rcx]
-       mov      r8d, eax
-       neg      r8d
-       add      r8d, 500
+       mov      r8d, 500
+       sub      r8d, eax
        mov      r10d, 1
        cmp      eax, 500
        mov      eax, r10d
@@ -39,7 +38,7 @@ G_M55382_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byr
        mov      r8d, dword ptr [rcx+0x08]
        test     r8d, r8d
        je       SHORT G_M55382_IG07
-						;; size=44 bbWeight=1 PerfScore 8.25
+						;; size=40 bbWeight=1 PerfScore 8.00
 G_M55382_IG03:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz
        sub      edx, dword ptr [rcx+0x04]
        cmp      edx, r8d
@@ -72,7 +71,7 @@ G_M55382_IG08:        ; bbWeight=0.50, epilog, nogc, extend
        ret      
 						;; size=1 bbWeight=0.50 PerfScore 0.50
 
-; Total bytes of code 99, prolog size 0, PerfScore 15.88, instruction count 31, allocated bytes for code 99 (MethodHash=422727a9) for method System.Threading.PortableThreadPool+GateThread+DelayHelper:GetNextDelay(int):uint:this (FullOpts)
+; Total bytes of code 95, prolog size 0, PerfScore 15.62, instruction count 30, allocated bytes for code 95 (MethodHash=422727a9) for method System.Threading.PortableThreadPool+GateThread+DelayHelper:GetNextDelay(int):uint:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
-3 (-2.54%) : 22620.dasm - Microsoft.IdentityModel.Tokens.DateTimeUtil:Add(System.DateTime,System.TimeSpan):System.DateTime (FullOpts)
@@ -41,7 +41,7 @@
 ;* V30 tmp28        [V30    ] (  0,  0   )    long  ->  zero-ref    single-def "field V09._ticks (fldOffset=0x0)" P-INDEP
 ;* V31 tmp29        [V31    ] (  0,  0   )    long  ->  zero-ref    single-def "field V10._dateData (fldOffset=0x0)" P-INDEP
 ;* V32 tmp30        [V32    ] (  0,  0   )    long  ->  zero-ref    single-def "field V11._dateData (fldOffset=0x0)" P-INDEP
-;  V33 tmp31        [V33,T04] (  2,  1   )    long  ->  rax         single-def "field V13._ticks (fldOffset=0x0)" P-INDEP
+;  V33 tmp31        [V33,T04] (  2,  1   )    long  ->   r8         single-def "field V13._ticks (fldOffset=0x0)" P-INDEP
 ;* V34 tmp32        [V34    ] (  0,  0   )    long  ->  zero-ref    single-def "field V16._dateData (fldOffset=0x0)" P-INDEP
 ;* V35 tmp33        [V35    ] (  0,  0   )    long  ->  zero-ref    single-def "field V17._dateData (fldOffset=0x0)" P-INDEP
 ;  V36 tmp34        [V36,T05] (  2,  1   )    long  ->  rax         single-def "field V19._ticks (fldOffset=0x0)" P-INDEP
@@ -59,12 +59,11 @@ G_M25930_IG03:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
        jle      SHORT G_M25930_IG04
        mov      rax, 0xD1FFAB1E
        and      rax, rcx
-       neg      rax
        mov      r8, 0xD1FFAB1E
-       add      rax, r8
-       cmp      rax, rdx
+       sub      r8, rax
+       cmp      r8, rdx
        jle      SHORT G_M25930_IG08
-						;; size=39 bbWeight=0.50 PerfScore 1.88
+						;; size=36 bbWeight=0.50 PerfScore 1.75
 G_M25930_IG04:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        test     rdx, rdx
        jge      SHORT G_M25930_IG05
@@ -102,7 +101,7 @@ G_M25930_IG11:        ; bbWeight=0.50, epilog, nogc, extend
        ret      
 						;; size=1 bbWeight=0.50 PerfScore 0.50
 
-; Total bytes of code 118, prolog size 0, PerfScore 10.12, instruction count 31, allocated bytes for code 118 (MethodHash=10a29ab5) for method Microsoft.IdentityModel.Tokens.DateTimeUtil:Add(System.DateTime,System.TimeSpan):System.DateTime (FullOpts)
+; Total bytes of code 115, prolog size 0, PerfScore 10.00, instruction count 30, allocated bytes for code 115 (MethodHash=10a29ab5) for method Microsoft.IdentityModel.Tokens.DateTimeUtil:Add(System.DateTime,System.TimeSpan):System.DateTime (FullOpts)
 ; ============================================================
 
 Unwind Info:
+7 (+6.31%) : 14966.dasm - System.SpanHelpers:g__SimdImpl|99_0[byte,System.SpanHelpers+DontNegate`1[byte],System.Runtime.Intrinsics.Vector256`1[byte]](byref,byte,int):int (FullOpts)
@@ -61,9 +61,10 @@ G_M29489_IG06:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
        vpcmpeqb ymm0, ymm1, ymm0
        vpmovmskb eax, ymm0
        lzcnt    eax, eax
-       neg      eax
-       add      eax, 31
-						;; size=17 bbWeight=0.50 PerfScore 3.00
+       mov      r8d, 31
+       sub      r8d, eax
+       mov      eax, r8d
+						;; size=24 bbWeight=0.50 PerfScore 3.12
 G_M29489_IG07:        ; bbWeight=0.50, epilog, nogc, extend
        vzeroupper 
        ret      
@@ -80,7 +81,7 @@ G_M29489_IG09:        ; bbWeight=0.50, epilog, nogc, extend
        ret      
 						;; size=4 bbWeight=0.50 PerfScore 1.00
 
-; Total bytes of code 111, prolog size 0, PerfScore 71.75, instruction count 33, allocated bytes for code 111 (MethodHash=fd4a8cce) for method System.SpanHelpers:<LastIndexOfValueType>g__SimdImpl|99_0[byte,System.SpanHelpers+DontNegate`1[byte],System.Runtime.Intrinsics.Vector256`1[byte]](byref,byte,int):int (FullOpts)
+; Total bytes of code 118, prolog size 0, PerfScore 71.88, instruction count 34, allocated bytes for code 118 (MethodHash=fd4a8cce) for method System.SpanHelpers:<LastIndexOfValueType>g__SimdImpl|99_0[byte,System.SpanHelpers+DontNegate`1[byte],System.Runtime.Intrinsics.Vector256`1[byte]](byref,byte,int):int (FullOpts)
 ; ============================================================
 
 Unwind Info:
+7 (+6.09%) : 1182.dasm - System.SpanHelpers:g__SimdImpl|99_0[short,System.SpanHelpers+DontNegate`1[short],System.Runtime.Intrinsics.Vector256`1[short]](byref,short,int):int (FullOpts)
@@ -61,9 +61,10 @@ G_M16881_IG06:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
        vpcmpeqw k1, ymm1, ymm0
        kmovw    eax, k1
        lzcnt    eax, eax
-       neg      eax
-       add      eax, 31
-						;; size=19 bbWeight=0.50 PerfScore 2.50
+       mov      r8d, 31
+       sub      r8d, eax
+       mov      eax, r8d
+						;; size=26 bbWeight=0.50 PerfScore 2.62
 G_M16881_IG07:        ; bbWeight=0.50, epilog, nogc, extend
        vzeroupper 
        ret      
@@ -80,7 +81,7 @@ G_M16881_IG09:        ; bbWeight=0.50, epilog, nogc, extend
        ret      
 						;; size=4 bbWeight=0.50 PerfScore 1.00
 
-; Total bytes of code 115, prolog size 0, PerfScore 70.75, instruction count 33, allocated bytes for code 119 (MethodHash=1e65be0e) for method System.SpanHelpers:<LastIndexOfValueType>g__SimdImpl|99_0[short,System.SpanHelpers+DontNegate`1[short],System.Runtime.Intrinsics.Vector256`1[short]](byref,short,int):int (FullOpts)
+; Total bytes of code 122, prolog size 0, PerfScore 70.88, instruction count 34, allocated bytes for code 126 (MethodHash=1e65be0e) for method System.SpanHelpers:<LastIndexOfValueType>g__SimdImpl|99_0[short,System.SpanHelpers+DontNegate`1[short],System.Runtime.Intrinsics.Vector256`1[short]](byref,short,int):int (FullOpts)
 ; ============================================================
 
 Unwind Info:
+10 (+3.14%) : 24.dasm - System.SpanHelpers:Memmove(byref,byref,nuint) (FullOpts)
@@ -14,7 +14,7 @@
 ;  V03 loc0         [V03,T04] (  5,  2.50)   byref  ->  rbx         single-def
 ;  V04 loc1         [V04,T05] (  5,  2.50)   byref  ->  rsi         single-def
 ;  V05 loc2         [V05,T03] (  4, 12.50)    long  ->  rax        
-;  V06 loc3         [V06,T06] (  4,  2   )    long  ->  rax        
+;  V06 loc3         [V06,T06] (  4,  2   )    long  ->  r10        
 ;# V07 OutArgs      [V07    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <Empty>
 ;  V08 tmp1         [V08,T07] (  2,  2   )    long  ->  rax         "Cast away GC"
 ;
@@ -41,12 +41,12 @@ G_M31183_IG03:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0006 {rcx rd
        cmp      rax, r8
        jae      SHORT G_M31183_IG05
 						;; size=11 bbWeight=0.50 PerfScore 0.88
-G_M31183_IG04:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0006 {rcx rdx}, byref, isz
+G_M31183_IG04:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0006 {rcx rdx}, byref
        cmp      rcx, rdx
-       jne      SHORT G_M31183_IG09
+       jne      G_M31183_IG09
        cmp      byte  ptr [rdx], dl
        jmp      G_M31183_IG17
-						;; size=12 bbWeight=0.50 PerfScore 3.12
+						;; size=16 bbWeight=0.50 PerfScore 3.12
 G_M31183_IG05:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0006 {rcx rdx}, byref, isz
        lea      rbx, bword ptr [rdx+r8]
        ; byrRegs +[rbx]
@@ -92,10 +92,10 @@ G_M31183_IG07:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=004E {rcx rd
 G_M31183_IG08:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=004E {rcx rdx rbx rsi}, byref, isz
        ; byrRegs +[rcx]
        cmp      r8, 64
-       jbe      SHORT G_M31183_IG15
+       jbe      G_M31183_IG15
        cmp      r8, 0x800
        jbe      SHORT G_M31183_IG11
-						;; size=15 bbWeight=0.50 PerfScore 1.25
+						;; size=19 bbWeight=0.50 PerfScore 1.25
 G_M31183_IG09:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0006 {rcx rdx}, byref
        ; byrRegs -[rbx rsi]
        cmp      byte  ptr [rcx], cl
@@ -113,16 +113,16 @@ G_M31183_IG11:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
        jb       SHORT G_M31183_IG12
        mov      rax, rcx
        and      rax, 63
-       neg      rax
-       add      rax, 64
+       mov      r10d, 64
+       sub      r10, rax
        vmovdqu  ymm0, ymmword ptr [rdx]
        vmovdqu  ymmword ptr [rcx], ymm0
        vmovdqu  ymm0, ymmword ptr [rdx+0x20]
        vmovdqu  ymmword ptr [rcx+0x20], ymm0
-       add      rdx, rax
-       add      rcx, rax
-       sub      r8, rax
-						;; size=50 bbWeight=0.50 PerfScore 8.50
+       add      rdx, r10
+       add      rcx, r10
+       sub      r8, r10
+						;; size=52 bbWeight=0.50 PerfScore 8.50
 G_M31183_IG12:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=004E {rcx rdx rbx rsi}, byref
        mov      rax, r8
        shr      rax, 6
@@ -167,7 +167,7 @@ G_M31183_IG17:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
        ret      
 						;; size=6 bbWeight=0.50 PerfScore 1.50
 
-; Total bytes of code 318, prolog size 2, PerfScore 118.00, instruction count 93, allocated bytes for code 318 (MethodHash=a9988630) for method System.SpanHelpers:Memmove(byref,byref,nuint) (FullOpts)
+; Total bytes of code 328, prolog size 2, PerfScore 118.00, instruction count 93, allocated bytes for code 328 (MethodHash=a9988630) for method System.SpanHelpers:Memmove(byref,byref,nuint) (FullOpts)
 ; ============================================================
 
 Unwind Info:
benchmarks.run.windows.x64.checked.mch
-7 (-5.98%) : 2060.dasm - System.Xml.XmlBufferReader:SetWindow(int,int):this (FullOpts)
@@ -31,18 +31,16 @@ G_M28351_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
        mov      edi, r8d
 						;; size=15 bbWeight=1 PerfScore 4.00
 G_M28351_IG02:        ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
-       mov      edx, edi
-       neg      edx
-       add      edx, 0xD1FFAB1E
-       mov      r8d, esi
-       neg      r8d
-       add      r8d, 0xD1FFAB1E
+       mov      edx, 0xD1FFAB1E
+       sub      edx, edi
+       mov      r8d, 0xD1FFAB1E
+       sub      r8d, esi
        cmp      edx, esi
        cmovl    edi, r8d
        mov      edx, dword ptr [rbx+0x50]
        cmp      edx, esi
        je       SHORT G_M28351_IG04
-						;; size=36 bbWeight=1 PerfScore 5.25
+						;; size=29 bbWeight=1 PerfScore 4.75
 G_M28351_IG03:        ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
        mov      r8d, dword ptr [rbx+0x4C]
        sub      r8d, edx
@@ -77,7 +75,7 @@ G_M28351_IG05:        ; bbWeight=1, epilog, nogc, extend
        ret      
 						;; size=8 bbWeight=1 PerfScore 2.75
 
-; Total bytes of code 117, prolog size 7, PerfScore 24.75, instruction count 41, allocated bytes for code 117 (MethodHash=ef7e9140) for method System.Xml.XmlBufferReader:SetWindow(int,int):this (FullOpts)
+; Total bytes of code 110, prolog size 7, PerfScore 24.25, instruction count 39, allocated bytes for code 110 (MethodHash=ef7e9140) for method System.Xml.XmlBufferReader:SetWindow(int,int):this (FullOpts)
 ; ============================================================
 
 Unwind Info:
-4 (-4.04%) : 2898.dasm - System.Threading.PortableThreadPool+GateThread+DelayHelper:GetNextDelay(int):uint:this (FullOpts)
@@ -29,9 +29,8 @@ G_M55382_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byr
        ; byrRegs +[rcx]
        mov      eax, edx
        sub      eax, dword ptr [rcx]
-       mov      r8d, eax
-       neg      r8d
-       add      r8d, 500
+       mov      r8d, 500
+       sub      r8d, eax
        mov      r10d, 1
        cmp      eax, 500
        mov      eax, r10d
@@ -39,7 +38,7 @@ G_M55382_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byr
        mov      r8d, dword ptr [rcx+0x08]
        test     r8d, r8d
        je       SHORT G_M55382_IG07
-						;; size=44 bbWeight=1 PerfScore 8.25
+						;; size=40 bbWeight=1 PerfScore 8.00
 G_M55382_IG03:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz
        sub      edx, dword ptr [rcx+0x04]
        cmp      edx, r8d
@@ -72,7 +71,7 @@ G_M55382_IG08:        ; bbWeight=0.50, epilog, nogc, extend
        ret      
 						;; size=1 bbWeight=0.50 PerfScore 0.50
 
-; Total bytes of code 99, prolog size 0, PerfScore 15.88, instruction count 31, allocated bytes for code 99 (MethodHash=422727a9) for method System.Threading.PortableThreadPool+GateThread+DelayHelper:GetNextDelay(int):uint:this (FullOpts)
+; Total bytes of code 95, prolog size 0, PerfScore 15.62, instruction count 30, allocated bytes for code 95 (MethodHash=422727a9) for method System.Threading.PortableThreadPool+GateThread+DelayHelper:GetNextDelay(int):uint:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
-12 (-3.27%) : 22.dasm - System.SpanHelpers:IndexOfNullCharacter(ptr):int (FullOpts)
@@ -96,12 +96,11 @@ G_M36857_IG09:        ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        add      rbx, 8
 						;; size=4 bbWeight=2 PerfScore 0.50
 G_M36857_IG10:        ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
-       mov      rax, rbx
-       neg      rax
-       add      rax, 0xD1FFAB1E
+       mov      eax, 0xD1FFAB1E
+       sub      rax, rbx
        and      rax, -16
        jle      SHORT G_M36857_IG15
-						;; size=18 bbWeight=4 PerfScore 8.00
+						;; size=14 bbWeight=4 PerfScore 7.00
 G_M36857_IG11:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        vxorps   ymm0, ymm0, ymm0
        vpcmpeqw ymm0, ymm0, ymmword ptr [rcx+2*rbx]
@@ -134,12 +133,11 @@ G_M36857_IG14:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
        ret      
 						;; size=10 bbWeight=1 PerfScore 3.25
 G_M36857_IG15:        ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
-       mov      rax, rbx
-       neg      rax
-       add      rax, 0xD1FFAB1E
+       mov      eax, 0xD1FFAB1E
+       sub      rax, rbx
        and      rax, -8
        jle      SHORT G_M36857_IG19
-						;; size=18 bbWeight=4 PerfScore 8.00
+						;; size=14 bbWeight=4 PerfScore 7.00
 G_M36857_IG16:        ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        vxorps   xmm0, xmm0, xmm0
        vpcmpeqw xmm0, xmm0, xmmword ptr [rcx+2*rbx]
@@ -159,10 +157,9 @@ G_M36857_IG18:        ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
 G_M36857_IG19:        ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        cmp      rbx, 0xD1FFAB1E
        jge      SHORT G_M36857_IG30
-       mov      rax, rbx
-       neg      rax
-       add      rax, 0xD1FFAB1E
-						;; size=21 bbWeight=4 PerfScore 8.00
+       mov      eax, 0xD1FFAB1E
+       sub      rax, rbx
+						;; size=17 bbWeight=4 PerfScore 7.00
 G_M36857_IG20:        ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        cmp      rax, 4
        jl       G_M36857_IG04
@@ -210,7 +207,7 @@ G_M36857_IG30:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        int3     
 						;; size=7 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 367, prolog size 6, PerfScore 419.13, instruction count 112, allocated bytes for code 367 (MethodHash=87b17006) for method System.SpanHelpers:IndexOfNullCharacter(ptr):int (FullOpts)
+; Total bytes of code 355, prolog size 6, PerfScore 416.13, instruction count 109, allocated bytes for code 355 (MethodHash=87b17006) for method System.SpanHelpers:IndexOfNullCharacter(ptr):int (FullOpts)
 ; ============================================================
 
 Unwind Info:
+21 (+11.80%) : 12805.dasm - V8.Crypto.BigInteger:invDigit():int:this (FullOpts)
@@ -28,7 +28,7 @@ G_M64469_IG02:        ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byr
        cmp      dword ptr [rcx+0x10], 0
        jle      G_M64469_IG05
 						;; size=14 bbWeight=1 PerfScore 6.00
-G_M64469_IG03:        ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
+G_M64469_IG03:        ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rcx]
        cmp      dword ptr [rax+0x10], 0
        je       G_M64469_IG07
@@ -38,36 +38,35 @@ G_M64469_IG03:        ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {},
        mov      eax, dword ptr [rax+0x10]
        ; gcrRegs -[rax]
        test     al, 1
-       je       SHORT G_M64469_IG05
+       je       G_M64469_IG05
        mov      ecx, eax
        and      ecx, 3
        mov      edx, eax
        and      edx, 15
        imul     edx, ecx
-       neg      edx
-       add      edx, 2
-       imul     ecx, edx
+       mov      r8d, 2
+       sub      r8d, edx
+       imul     ecx, r8d
        and      ecx, 15
        movzx    rdx, al
        imul     edx, ecx
-       neg      edx
-       add      edx, 2
-       imul     edx, ecx
-       movzx    rcx, dl
+       mov      r8d, 2
+       sub      r8d, edx
+       imul     r8d, ecx
+       movzx    rcx, r8b
        mov      edx, eax
        imul     edx, ecx
        movzx    rdx, dx
-       neg      edx
-       add      edx, 2
-       imul     edx, ecx
-       movzx    rcx, dx
+       mov      r8d, 2
+       sub      r8d, edx
+       imul     r8d, ecx
+       movzx    rcx, r8w
        imul     eax, ecx
        mov      r8d, dword ptr [(reloc)]      ; static handle
        cdq      
        idiv     edx:eax, r8d
-       mov      eax, edx
-       neg      eax
-       add      eax, 2
+       mov      eax, 2
+       sub      eax, edx
        imul     eax, ecx
        cdq      
        idiv     edx:eax, r8d
@@ -78,7 +77,7 @@ G_M64469_IG03:        ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {},
        neg      edx
        test     ecx, ecx
        cmovle   eax, edx
-						;; size=135 bbWeight=0.50 PerfScore 44.38
+						;; size=156 bbWeight=0.50 PerfScore 44.25
 G_M64469_IG04:        ; bbWeight=0.50, epilog, nogc, extend
        add      rsp, 40
        ret      
@@ -101,7 +100,7 @@ G_M64469_IG08:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        int3     
 						;; size=6 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 178, prolog size 4, PerfScore 52.00, instruction count 60, allocated bytes for code 178 (MethodHash=c0e4042a) for method V8.Crypto.BigInteger:invDigit():int:this (FullOpts)
+; Total bytes of code 199, prolog size 4, PerfScore 51.88, instruction count 59, allocated bytes for code 199 (MethodHash=c0e4042a) for method V8.Crypto.BigInteger:invDigit():int:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
+7 (+6.31%) : 9319.dasm - System.SpanHelpers:g__SimdImpl|99_0[byte,System.SpanHelpers+DontNegate`1[byte],System.Runtime.Intrinsics.Vector256`1[byte]](byref,byte,int):int (FullOpts)
@@ -61,9 +61,10 @@ G_M29489_IG06:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
        vpcmpeqb ymm0, ymm1, ymm0
        vpmovmskb eax, ymm0
        lzcnt    eax, eax
-       neg      eax
-       add      eax, 31
-						;; size=17 bbWeight=0.50 PerfScore 3.00
+       mov      r8d, 31
+       sub      r8d, eax
+       mov      eax, r8d
+						;; size=24 bbWeight=0.50 PerfScore 3.12
 G_M29489_IG07:        ; bbWeight=0.50, epilog, nogc, extend
        vzeroupper 
        ret      
@@ -80,7 +81,7 @@ G_M29489_IG09:        ; bbWeight=0.50, epilog, nogc, extend
        ret      
 						;; size=4 bbWeight=0.50 PerfScore 1.00
 
-; Total bytes of code 111, prolog size 0, PerfScore 71.75, instruction count 33, allocated bytes for code 111 (MethodHash=fd4a8cce) for method System.SpanHelpers:<LastIndexOfValueType>g__SimdImpl|99_0[byte,System.SpanHelpers+DontNegate`1[byte],System.Runtime.Intrinsics.Vector256`1[byte]](byref,byte,int):int (FullOpts)
+; Total bytes of code 118, prolog size 0, PerfScore 71.88, instruction count 34, allocated bytes for code 118 (MethodHash=fd4a8cce) for method System.SpanHelpers:<LastIndexOfValueType>g__SimdImpl|99_0[byte,System.SpanHelpers+DontNegate`1[byte],System.Runtime.Intrinsics.Vector256`1[byte]](byref,byte,int):int (FullOpts)
 ; ============================================================
 
 Unwind Info:
+7 (+6.09%) : 4758.dasm - System.SpanHelpers:g__SimdImpl|99_0[short,System.SpanHelpers+DontNegate`1[short],System.Runtime.Intrinsics.Vector256`1[short]](byref,short,int):int (FullOpts)
@@ -61,9 +61,10 @@ G_M16881_IG06:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
        vpcmpeqw k1, ymm1, ymm0
        kmovw    eax, k1
        lzcnt    eax, eax
-       neg      eax
-       add      eax, 31
-						;; size=19 bbWeight=0.50 PerfScore 2.50
+       mov      r8d, 31
+       sub      r8d, eax
+       mov      eax, r8d
+						;; size=26 bbWeight=0.50 PerfScore 2.62
 G_M16881_IG07:        ; bbWeight=0.50, epilog, nogc, extend
        vzeroupper 
        ret      
@@ -80,7 +81,7 @@ G_M16881_IG09:        ; bbWeight=0.50, epilog, nogc, extend
        ret      
 						;; size=4 bbWeight=0.50 PerfScore 1.00
 
-; Total bytes of code 115, prolog size 0, PerfScore 70.75, instruction count 33, allocated bytes for code 119 (MethodHash=1e65be0e) for method System.SpanHelpers:<LastIndexOfValueType>g__SimdImpl|99_0[short,System.SpanHelpers+DontNegate`1[short],System.Runtime.Intrinsics.Vector256`1[short]](byref,short,int):int (FullOpts)
+; Total bytes of code 122, prolog size 0, PerfScore 70.88, instruction count 34, allocated bytes for code 126 (MethodHash=1e65be0e) for method System.SpanHelpers:<LastIndexOfValueType>g__SimdImpl|99_0[short,System.SpanHelpers+DontNegate`1[short],System.Runtime.Intrinsics.Vector256`1[short]](byref,short,int):int (FullOpts)
 ; ============================================================
 
 Unwind Info:
benchmarks.run_pgo.windows.x64.checked.mch
-4 (-4.00%) : 82339.dasm - System.Threading.PortableThreadPool+GateThread+DelayHelper:GetNextDelay(int):uint:this (Tier1)
@@ -29,9 +29,8 @@ G_M55382_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byr
        ; byrRegs +[rcx]
        mov      eax, edx
        sub      eax, dword ptr [rcx]
-       mov      r8d, eax
-       neg      r8d
-       add      r8d, 500
+       mov      r8d, 500
+       sub      r8d, eax
        mov      r10d, 1
        cmp      eax, 500
        mov      eax, r10d
@@ -39,7 +38,7 @@ G_M55382_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byr
        cmp      dword ptr [rcx+0x08], 0
        jne      SHORT G_M55382_IG04
        mov      word  ptr [rcx+0x0C], 1
-						;; size=47 bbWeight=1 PerfScore 10.00
+						;; size=43 bbWeight=1 PerfScore 9.75
 G_M55382_IG03:        ; bbWeight=1, epilog, nogc, extend
        ret      
 						;; size=1 bbWeight=1 PerfScore 1.00
@@ -70,7 +69,7 @@ G_M55382_IG07:        ; bbWeight=0, epilog, nogc, extend
        ret      
 						;; size=1 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 100, prolog size 0, PerfScore 11.00, instruction count 31, allocated bytes for code 100 (MethodHash=422727a9) for method System.Threading.PortableThreadPool+GateThread+DelayHelper:GetNextDelay(int):uint:this (Tier1)
+; Total bytes of code 96, prolog size 0, PerfScore 10.75, instruction count 30, allocated bytes for code 96 (MethodHash=422727a9) for method System.Threading.PortableThreadPool+GateThread+DelayHelper:GetNextDelay(int):uint:this (Tier1)
 ; ============================================================
 
 Unwind Info:
-4 (-2.23%) : 47018.dasm - System.IO.MemoryStream:set_Position(long):this (Tier1)
@@ -34,15 +34,14 @@ G_M18541_IG02:        ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byr
        cmp      byte  ptr [rcx+0x2B], 0
        je       SHORT G_M18541_IG05
        mov      eax, dword ptr [rcx+0x18]
-       mov      r8d, eax
-       neg      r8d
-       add      r8d, 0xD1FFAB1E
+       mov      r8d, 0xD1FFAB1E
+       sub      r8d, eax
        movsxd   r8, r8d
        cmp      r8, rdx
        jl       SHORT G_M18541_IG06
        add      eax, edx
        mov      dword ptr [rcx+0x1C], eax
-						;; size=40 bbWeight=1 PerfScore 10.75
+						;; size=36 bbWeight=1 PerfScore 10.50
 G_M18541_IG03:        ; bbWeight=1, epilog, nogc, extend
        add      rsp, 32
        pop      rbx
@@ -109,7 +108,7 @@ G_M18541_IG06:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        int3     
 						;; size=95 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 179, prolog size 7, PerfScore 16.75, instruction count 48, allocated bytes for code 179 (MethodHash=481ab792) for method System.IO.MemoryStream:set_Position(long):this (Tier1)
+; Total bytes of code 175, prolog size 7, PerfScore 16.50, instruction count 47, allocated bytes for code 175 (MethodHash=481ab792) for method System.IO.MemoryStream:set_Position(long):this (Tier1)
 ; ============================================================
 
 Unwind Info:
-3 (-1.60%) : 52004.dasm - Benchstone.BenchI.HeapSort:Test():bool:this (Tier1-OSR)
@@ -39,14 +39,13 @@ G_M10355_IG03:        ; bbWeight=0.99, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
 G_M10355_IG04:        ; bbWeight=167.07, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
        cmp      ecx, esi
        jae      G_M10355_IG16
-       mov      edx, ecx
-       neg      edx
-       add      edx, 0x157D
+       mov      edx, 0x157D
+       sub      edx, ecx
        mov      dword ptr [rbx+4*rcx+0x10], edx
        inc      ecx
        cmp      ecx, 0x157C
        jle      SHORT G_M10355_IG04
-						;; size=32 bbWeight=167.07 PerfScore 751.80
+						;; size=29 bbWeight=167.07 PerfScore 710.04
 G_M10355_IG05:        ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
        mov      rcx, rbx
        ; gcrRegs +[rcx]
@@ -118,7 +117,7 @@ G_M10355_IG16:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
        int3     
 						;; size=6 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 187, prolog size 29, PerfScore 1304.56, instruction count 57, allocated bytes for code 187 (MethodHash=5029d78c) for method Benchstone.BenchI.HeapSort:Test():bool:this (Tier1-OSR)
+; Total bytes of code 184, prolog size 29, PerfScore 1262.79, instruction count 56, allocated bytes for code 184 (MethodHash=5029d78c) for method Benchstone.BenchI.HeapSort:Test():bool:this (Tier1-OSR)
 ; ============================================================
 
 Unwind Info:
+4 (+16.00%) : 82023.dasm - System.Runtime.Intrinsics.Vector256:LastIndexOfWhereAllBitsSet[int](System.Runtime.Intrinsics.Vector256`1[int]):int (Tier1)
@@ -24,15 +24,17 @@ G_M27078_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byr
        vpcmpeqd ymm0, ymm0, ymmword ptr [rcx]
        vmovmskps rax, ymm0
        lzcnt    eax, eax
-       neg      eax
-       add      eax, 31
-						;; size=21 bbWeight=1 PerfScore 10.00
+       mov      ecx, 31
+       ; byrRegs -[rcx]
+       sub      ecx, eax
+       mov      eax, ecx
+						;; size=25 bbWeight=1 PerfScore 10.25
 G_M27078_IG03:        ; bbWeight=1, epilog, nogc, extend
        vzeroupper 
        ret      
 						;; size=4 bbWeight=1 PerfScore 2.00
 
-; Total bytes of code 25, prolog size 0, PerfScore 12.00, instruction count 8, allocated bytes for code 25 (MethodHash=dc709639) for method System.Runtime.Intrinsics.Vector256:LastIndexOfWhereAllBitsSet[int](System.Runtime.Intrinsics.Vector256`1[int]):int (Tier1)
+; Total bytes of code 29, prolog size 0, PerfScore 12.25, instruction count 9, allocated bytes for code 29 (MethodHash=dc709639) for method System.Runtime.Intrinsics.Vector256:LastIndexOfWhereAllBitsSet[int](System.Runtime.Intrinsics.Vector256`1[int]):int (Tier1)
 ; ============================================================
 
 Unwind Info:
+4 (+16.00%) : 82022.dasm - System.Runtime.Intrinsics.Vector256`1[int]:System.Runtime.Intrinsics.ISimdVector,T>.LastIndexOfWhereAllBitsSet(System.Runtime.Intrinsics.Vector256`1[int]):int (Tier1)
@@ -25,15 +25,17 @@ G_M1790_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byre
        vpcmpeqd ymm0, ymm0, ymmword ptr [rcx]
        vmovmskps rax, ymm0
        lzcnt    eax, eax
-       neg      eax
-       add      eax, 31
-						;; size=21 bbWeight=1 PerfScore 10.00
+       mov      ecx, 31
+       ; byrRegs -[rcx]
+       sub      ecx, eax
+       mov      eax, ecx
+						;; size=25 bbWeight=1 PerfScore 10.25
 G_M1790_IG03:        ; bbWeight=1, epilog, nogc, extend
        vzeroupper 
        ret      
 						;; size=4 bbWeight=1 PerfScore 2.00
 
-; Total bytes of code 25, prolog size 0, PerfScore 12.00, instruction count 8, allocated bytes for code 25 (MethodHash=0191f901) for method System.Runtime.Intrinsics.Vector256`1[int]:System.Runtime.Intrinsics.ISimdVector<System.Runtime.Intrinsics.Vector256<T>,T>.LastIndexOfWhereAllBitsSet(System.Runtime.Intrinsics.Vector256`1[int]):int (Tier1)
+; Total bytes of code 29, prolog size 0, PerfScore 12.25, instruction count 9, allocated bytes for code 29 (MethodHash=0191f901) for method System.Runtime.Intrinsics.Vector256`1[int]:System.Runtime.Intrinsics.ISimdVector<System.Runtime.Intrinsics.Vector256<T>,T>.LastIndexOfWhereAllBitsSet(System.Runtime.Intrinsics.Vector256`1[int]):int (Tier1)
 ; ============================================================
 
 Unwind Info:
+4 (+14.81%) : 82025.dasm - System.Runtime.Intrinsics.Vector256:LastIndexOf[int](System.Runtime.Intrinsics.Vector256`1[int],int):int (Tier1)
@@ -23,15 +23,17 @@ G_M62779_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byr
        vpcmpeqd ymm0, ymm0, ymmword ptr [rcx]
        vmovmskps rax, ymm0
        lzcnt    eax, eax
-       neg      eax
-       add      eax, 31
-						;; size=23 bbWeight=1 PerfScore 11.50
+       mov      ecx, 31
+       ; byrRegs -[rcx]
+       sub      ecx, eax
+       mov      eax, ecx
+						;; size=27 bbWeight=1 PerfScore 11.75
 G_M62779_IG03:        ; bbWeight=1, epilog, nogc, extend
        vzeroupper 
        ret      
 						;; size=4 bbWeight=1 PerfScore 2.00
 
-; Total bytes of code 27, prolog size 0, PerfScore 13.50, instruction count 8, allocated bytes for code 27 (MethodHash=38aa0ac4) for method System.Runtime.Intrinsics.Vector256:LastIndexOf[int](System.Runtime.Intrinsics.Vector256`1[int],int):int (Tier1)
+; Total bytes of code 31, prolog size 0, PerfScore 13.75, instruction count 9, allocated bytes for code 31 (MethodHash=38aa0ac4) for method System.Runtime.Intrinsics.Vector256:LastIndexOf[int](System.Runtime.Intrinsics.Vector256`1[int],int):int (Tier1)
 ; ============================================================
 
 Unwind Info:
benchmarks.run_pgo_optrepeat.windows.x64.checked.mch
-7 (-5.98%) : 2951.dasm - System.Xml.XmlBufferReader:SetWindow(int,int):this (FullOpts)
@@ -31,18 +31,16 @@ G_M28351_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
        mov      edi, r8d
 						;; size=15 bbWeight=1 PerfScore 4.00
 G_M28351_IG02:        ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
-       mov      edx, edi
-       neg      edx
-       add      edx, 0xD1FFAB1E
-       mov      r8d, esi
-       neg      r8d
-       add      r8d, 0xD1FFAB1E
+       mov      edx, 0xD1FFAB1E
+       sub      edx, edi
+       mov      r8d, 0xD1FFAB1E
+       sub      r8d, esi
        cmp      edx, esi
        cmovl    edi, r8d
        mov      edx, dword ptr [rbx+0x50]
        cmp      edx, esi
        je       SHORT G_M28351_IG04
-						;; size=36 bbWeight=1 PerfScore 5.25
+						;; size=29 bbWeight=1 PerfScore 4.75
 G_M28351_IG03:        ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
        mov      r8d, dword ptr [rbx+0x4C]
        sub      r8d, edx
@@ -77,7 +75,7 @@ G_M28351_IG05:        ; bbWeight=1, epilog, nogc, extend
        ret      
 						;; size=8 bbWeight=1 PerfScore 2.75
 
-; Total bytes of code 117, prolog size 7, PerfScore 24.75, instruction count 41, allocated bytes for code 117 (MethodHash=ef7e9140) for method System.Xml.XmlBufferReader:SetWindow(int,int):this (FullOpts)
+; Total bytes of code 110, prolog size 7, PerfScore 24.25, instruction count 39, allocated bytes for code 110 (MethodHash=ef7e9140) for method System.Xml.XmlBufferReader:SetWindow(int,int):this (FullOpts)
 ; ============================================================
 
 Unwind Info:
-4 (-4.04%) : 4062.dasm - System.Threading.PortableThreadPool+GateThread+DelayHelper:GetNextDelay(int):uint:this (FullOpts)
@@ -29,9 +29,8 @@ G_M55382_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byr
        ; byrRegs +[rcx]
        mov      eax, edx
        sub      eax, dword ptr [rcx]
-       mov      r8d, eax
-       neg      r8d
-       add      r8d, 500
+       mov      r8d, 500
+       sub      r8d, eax
        mov      r10d, 1
        cmp      eax, 500
        mov      eax, r10d
@@ -39,7 +38,7 @@ G_M55382_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byr
        mov      r8d, dword ptr [rcx+0x08]
        test     r8d, r8d
        je       SHORT G_M55382_IG07
-						;; size=44 bbWeight=1 PerfScore 8.25
+						;; size=40 bbWeight=1 PerfScore 8.00
 G_M55382_IG03:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz
        sub      edx, dword ptr [rcx+0x04]
        cmp      edx, r8d
@@ -72,7 +71,7 @@ G_M55382_IG08:        ; bbWeight=0.50, epilog, nogc, extend
        ret      
 						;; size=1 bbWeight=0.50 PerfScore 0.50
 
-; Total bytes of code 99, prolog size 0, PerfScore 15.88, instruction count 31, allocated bytes for code 99 (MethodHash=422727a9) for method System.Threading.PortableThreadPool+GateThread+DelayHelper:GetNextDelay(int):uint:this (FullOpts)
+; Total bytes of code 95, prolog size 0, PerfScore 15.62, instruction count 30, allocated bytes for code 95 (MethodHash=422727a9) for method System.Threading.PortableThreadPool+GateThread+DelayHelper:GetNextDelay(int):uint:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
-12 (-3.27%) : 22.dasm - System.SpanHelpers:IndexOfNullCharacter(ptr):int (FullOpts)
@@ -96,12 +96,11 @@ G_M36857_IG09:        ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        add      rbx, 8
 						;; size=4 bbWeight=2 PerfScore 0.50
 G_M36857_IG10:        ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
-       mov      rax, rbx
-       neg      rax
-       add      rax, 0xD1FFAB1E
+       mov      eax, 0xD1FFAB1E
+       sub      rax, rbx
        and      rax, -16
        jle      SHORT G_M36857_IG15
-						;; size=18 bbWeight=4 PerfScore 8.00
+						;; size=14 bbWeight=4 PerfScore 7.00
 G_M36857_IG11:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        vxorps   ymm0, ymm0, ymm0
        vpcmpeqw ymm0, ymm0, ymmword ptr [rcx+2*rbx]
@@ -134,12 +133,11 @@ G_M36857_IG14:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
        ret      
 						;; size=10 bbWeight=1 PerfScore 3.25
 G_M36857_IG15:        ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
-       mov      rax, rbx
-       neg      rax
-       add      rax, 0xD1FFAB1E
+       mov      eax, 0xD1FFAB1E
+       sub      rax, rbx
        and      rax, -8
        jle      SHORT G_M36857_IG19
-						;; size=18 bbWeight=4 PerfScore 8.00
+						;; size=14 bbWeight=4 PerfScore 7.00
 G_M36857_IG16:        ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        vxorps   xmm0, xmm0, xmm0
        vpcmpeqw xmm0, xmm0, xmmword ptr [rcx+2*rbx]
@@ -159,10 +157,9 @@ G_M36857_IG18:        ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
 G_M36857_IG19:        ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        cmp      rbx, 0xD1FFAB1E
        jge      SHORT G_M36857_IG30
-       mov      rax, rbx
-       neg      rax
-       add      rax, 0xD1FFAB1E
-						;; size=21 bbWeight=4 PerfScore 8.00
+       mov      eax, 0xD1FFAB1E
+       sub      rax, rbx
+						;; size=17 bbWeight=4 PerfScore 7.00
 G_M36857_IG20:        ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        cmp      rax, 4
        jl       G_M36857_IG04
@@ -210,7 +207,7 @@ G_M36857_IG30:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        int3     
 						;; size=7 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 367, prolog size 6, PerfScore 419.13, instruction count 112, allocated bytes for code 367 (MethodHash=87b17006) for method System.SpanHelpers:IndexOfNullCharacter(ptr):int (FullOpts)
+; Total bytes of code 355, prolog size 6, PerfScore 416.13, instruction count 109, allocated bytes for code 355 (MethodHash=87b17006) for method System.SpanHelpers:IndexOfNullCharacter(ptr):int (FullOpts)
 ; ============================================================
 
 Unwind Info:
+21 (+11.80%) : 13214.dasm - V8.Crypto.BigInteger:invDigit():int:this (FullOpts)
@@ -28,7 +28,7 @@ G_M64469_IG02:        ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byr
        cmp      dword ptr [rcx+0x10], 0
        jle      G_M64469_IG05
 						;; size=14 bbWeight=1 PerfScore 6.00
-G_M64469_IG03:        ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
+G_M64469_IG03:        ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rcx]
        cmp      dword ptr [rax+0x10], 0
        je       G_M64469_IG07
@@ -38,36 +38,35 @@ G_M64469_IG03:        ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {},
        mov      eax, dword ptr [rax+0x10]
        ; gcrRegs -[rax]
        test     al, 1
-       je       SHORT G_M64469_IG05
+       je       G_M64469_IG05
        mov      ecx, eax
        and      ecx, 3
        mov      edx, eax
        and      edx, 15
        imul     edx, ecx
-       neg      edx
-       add      edx, 2
-       imul     ecx, edx
+       mov      r8d, 2
+       sub      r8d, edx
+       imul     ecx, r8d
        and      ecx, 15
        movzx    rdx, al
        imul     edx, ecx
-       neg      edx
-       add      edx, 2
-       imul     edx, ecx
-       movzx    rcx, dl
+       mov      r8d, 2
+       sub      r8d, edx
+       imul     r8d, ecx
+       movzx    rcx, r8b
        mov      edx, eax
        imul     edx, ecx
        movzx    rdx, dx
-       neg      edx
-       add      edx, 2
-       imul     edx, ecx
-       movzx    rcx, dx
+       mov      r8d, 2
+       sub      r8d, edx
+       imul     r8d, ecx
+       movzx    rcx, r8w
        imul     eax, ecx
        mov      r8d, dword ptr [(reloc)]      ; static handle
        cdq      
        idiv     edx:eax, r8d
-       mov      eax, edx
-       neg      eax
-       add      eax, 2
+       mov      eax, 2
+       sub      eax, edx
        imul     eax, ecx
        cdq      
        idiv     edx:eax, r8d
@@ -78,7 +77,7 @@ G_M64469_IG03:        ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {},
        neg      edx
        test     ecx, ecx
        cmovle   eax, edx
-						;; size=135 bbWeight=0.50 PerfScore 44.38
+						;; size=156 bbWeight=0.50 PerfScore 44.25
 G_M64469_IG04:        ; bbWeight=0.50, epilog, nogc, extend
        add      rsp, 40
        ret      
@@ -101,7 +100,7 @@ G_M64469_IG08:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        int3     
 						;; size=6 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 178, prolog size 4, PerfScore 52.00, instruction count 60, allocated bytes for code 178 (MethodHash=c0e4042a) for method V8.Crypto.BigInteger:invDigit():int:this (FullOpts)
+; Total bytes of code 199, prolog size 4, PerfScore 51.88, instruction count 59, allocated bytes for code 199 (MethodHash=c0e4042a) for method V8.Crypto.BigInteger:invDigit():int:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
+7 (+6.31%) : 9353.dasm - System.SpanHelpers:g__SimdImpl|99_0[byte,System.SpanHelpers+DontNegate`1[byte],System.Runtime.Intrinsics.Vector256`1[byte]](byref,byte,int):int (FullOpts)
@@ -61,9 +61,10 @@ G_M29489_IG06:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
        vpcmpeqb ymm0, ymm1, ymm0
        vpmovmskb eax, ymm0
        lzcnt    eax, eax
-       neg      eax
-       add      eax, 31
-						;; size=17 bbWeight=0.50 PerfScore 3.00
+       mov      r8d, 31
+       sub      r8d, eax
+       mov      eax, r8d
+						;; size=24 bbWeight=0.50 PerfScore 3.12
 G_M29489_IG07:        ; bbWeight=0.50, epilog, nogc, extend
        vzeroupper 
        ret      
@@ -80,7 +81,7 @@ G_M29489_IG09:        ; bbWeight=0.50, epilog, nogc, extend
        ret      
 						;; size=4 bbWeight=0.50 PerfScore 1.00
 
-; Total bytes of code 111, prolog size 0, PerfScore 71.75, instruction count 33, allocated bytes for code 111 (MethodHash=fd4a8cce) for method System.SpanHelpers:<LastIndexOfValueType>g__SimdImpl|99_0[byte,System.SpanHelpers+DontNegate`1[byte],System.Runtime.Intrinsics.Vector256`1[byte]](byref,byte,int):int (FullOpts)
+; Total bytes of code 118, prolog size 0, PerfScore 71.88, instruction count 34, allocated bytes for code 118 (MethodHash=fd4a8cce) for method System.SpanHelpers:<LastIndexOfValueType>g__SimdImpl|99_0[byte,System.SpanHelpers+DontNegate`1[byte],System.Runtime.Intrinsics.Vector256`1[byte]](byref,byte,int):int (FullOpts)
 ; ============================================================
 
 Unwind Info:
+7 (+6.09%) : 3709.dasm - System.SpanHelpers:g__SimdImpl|99_0[short,System.SpanHelpers+DontNegate`1[short],System.Runtime.Intrinsics.Vector256`1[short]](byref,short,int):int (FullOpts)
@@ -61,9 +61,10 @@ G_M16881_IG06:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
        vpcmpeqw k1, ymm1, ymm0
        kmovw    eax, k1
        lzcnt    eax, eax
-       neg      eax
-       add      eax, 31
-						;; size=19 bbWeight=0.50 PerfScore 2.50
+       mov      r8d, 31
+       sub      r8d, eax
+       mov      eax, r8d
+						;; size=26 bbWeight=0.50 PerfScore 2.62
 G_M16881_IG07:        ; bbWeight=0.50, epilog, nogc, extend
        vzeroupper 
        ret      
@@ -80,7 +81,7 @@ G_M16881_IG09:        ; bbWeight=0.50, epilog, nogc, extend
        ret      
 						;; size=4 bbWeight=0.50 PerfScore 1.00
 
-; Total bytes of code 115, prolog size 0, PerfScore 70.75, instruction count 33, allocated bytes for code 119 (MethodHash=1e65be0e) for method System.SpanHelpers:<LastIndexOfValueType>g__SimdImpl|99_0[short,System.SpanHelpers+DontNegate`1[short],System.Runtime.Intrinsics.Vector256`1[short]](byref,short,int):int (FullOpts)
+; Total bytes of code 122, prolog size 0, PerfScore 70.88, instruction count 34, allocated bytes for code 126 (MethodHash=1e65be0e) for method System.SpanHelpers:<LastIndexOfValueType>g__SimdImpl|99_0[short,System.SpanHelpers+DontNegate`1[short],System.Runtime.Intrinsics.Vector256`1[short]](byref,short,int):int (FullOpts)
 ; ============================================================
 
 Unwind Info:
coreclr_tests.run.windows.x64.checked.mch
-6 (-7.41%) : 536853.dasm - ILGEN_622380794:main():int (FullOpts)
@@ -28,18 +28,16 @@ G_M30338_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        mov      rdx, 0xD1FFAB1E
        imul     rcx, rdx
        or       rcx, rax
-       mov      rax, rcx
-       neg      rax
-       mov      rcx, 0xD1FFAB1E
-       add      rax, rcx
+       mov      rax, 0xD1FFAB1E
+       sub      rax, rcx
        movzx    rax, al
        dec      eax
-						;; size=80 bbWeight=1 PerfScore 8.00
+						;; size=74 bbWeight=1 PerfScore 7.50
 G_M30338_IG03:        ; bbWeight=1, epilog, nogc, extend
        ret      
 						;; size=1 bbWeight=1 PerfScore 1.00
 
-; Total bytes of code 81, prolog size 0, PerfScore 9.00, instruction count 16, allocated bytes for code 81 (MethodHash=35ba897d) for method ILGEN_622380794:main():int (FullOpts)
+; Total bytes of code 75, prolog size 0, PerfScore 8.50, instruction count 14, allocated bytes for code 75 (MethodHash=35ba897d) for method ILGEN_622380794:main():int (FullOpts)
 ; ============================================================
 
 Unwind Info:
-7 (-5.98%) : 503241.dasm - System.Xml.XmlBufferReader:SetWindow(int,int):this (FullOpts)
@@ -31,18 +31,16 @@ G_M28351_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
        mov      edi, r8d
 						;; size=15 bbWeight=1 PerfScore 4.00
 G_M28351_IG02:        ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
-       mov      edx, edi
-       neg      edx
-       add      edx, 0xD1FFAB1E
-       mov      r8d, esi
-       neg      r8d
-       add      r8d, 0xD1FFAB1E
+       mov      edx, 0xD1FFAB1E
+       sub      edx, edi
+       mov      r8d, 0xD1FFAB1E
+       sub      r8d, esi
        cmp      edx, esi
        cmovl    edi, r8d
        mov      edx, dword ptr [rbx+0x50]
        cmp      edx, esi
        je       SHORT G_M28351_IG04
-						;; size=36 bbWeight=1 PerfScore 5.25
+						;; size=29 bbWeight=1 PerfScore 4.75
 G_M28351_IG03:        ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
        mov      r8d, dword ptr [rbx+0x4C]
        sub      r8d, edx
@@ -77,7 +75,7 @@ G_M28351_IG05:        ; bbWeight=1, epilog, nogc, extend
        ret      
 						;; size=8 bbWeight=1 PerfScore 2.75
 
-; Total bytes of code 117, prolog size 7, PerfScore 24.75, instruction count 41, allocated bytes for code 117 (MethodHash=ef7e9140) for method System.Xml.XmlBufferReader:SetWindow(int,int):this (FullOpts)
+; Total bytes of code 110, prolog size 7, PerfScore 24.25, instruction count 39, allocated bytes for code 110 (MethodHash=ef7e9140) for method System.Xml.XmlBufferReader:SetWindow(int,int):this (FullOpts)
 ; ============================================================
 
 Unwind Info:
-9 (-5.33%) : 527446.dasm - Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1():long (FullOpts)
@@ -25,7 +25,7 @@
 ;* V14 tmp11        [V14    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V15 tmp12        [V15    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V16 tmp13        [V16    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[SF] "stack allocated Test_10w250d.testout1+CL_0_1_1_1_1_1_1_1_1_1_1_1_1_1" <Test_10w250d.testout1+CL_0_1_1_1_1_1_1_1_1_1_1_1_1_1>
-;  V17 tmp14        [V17,T04] (  2,  2   )    long  ->  rbx         "V05.[000..008)"
+;  V17 tmp14        [V17,T04] (  2,  2   )    long  ->  rdi         "V05.[000..008)"
 ;* V18 tmp15        [V18    ] (  0,  0   )    long  ->  zero-ref    single-def "V16.[000..008)"
 ;* V19 tmp16        [V19    ] (  0,  0   )     int  ->  zero-ref    single-def "V16.[008..012)"
 ;  V20 cse0         [V20,T02] (  3,  3   )    long  ->  rbx         "CSE #01: aggressive"
@@ -48,11 +48,8 @@ G_M48901_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
        call     [<unknown method>]
        ; gcr arg pop 0
        mov      esi, eax
-       mov      rax, qword ptr [rbx]
-       mov      rbx, rax
-       neg      rbx
        mov      rdi, 0xD1FFAB1E
-       add      rbx, rdi
+       sub      rdi, qword ptr [rbx]
        vmovss   xmm0, dword ptr [(reloc)]      ; static handle
        vmulss   xmm0, xmm0, dword ptr [reloc @RWD00]
        vcvtss2sd xmm0, xmm0, xmm0
@@ -66,12 +63,12 @@ G_M48901_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
        ja       SHORT G_M48901_IG05
        add      edx, 0xD1FFAB1E
        mov      eax, edx
-       sub      rax, rbx
+       sub      rax, rdi
        mov      r9, 0xD1FFAB1E
        cmp      qword ptr [rsp+0x28], r9
        je       SHORT G_M48901_IG03
        call     CORINFO_HELP_FAIL_FAST
-						;; size=131 bbWeight=1 PerfScore 56.50
+						;; size=122 bbWeight=1 PerfScore 56.75
 G_M48901_IG03:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        nop      
 						;; size=1 bbWeight=1 PerfScore 0.25
@@ -90,7 +87,7 @@ G_M48901_IG05:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
 RWD00  	dd	42D00000h		;       104
 
 
-; Total bytes of code 169, prolog size 22, PerfScore 64.00, instruction count 41, allocated bytes for code 169 (MethodHash=0aca40fa) for method Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1():long (FullOpts)
+; Total bytes of code 160, prolog size 22, PerfScore 64.25, instruction count 38, allocated bytes for code 160 (MethodHash=0aca40fa) for method Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1():long (FullOpts)
 ; ============================================================
 
 Unwind Info:
+4 (+22.22%) : 490503.dasm - Test_Rotate:two_left_shifts(uint,int):uint (FullOpts)
@@ -17,16 +17,16 @@ G_M27504_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
 						;; size=0 bbWeight=1 PerfScore 0.00
 G_M27504_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        shlx     eax, ecx, edx
-       neg      edx
-       add      edx, 32
-       shlx     ecx, ecx, edx
+       mov      r8d, 32
+       sub      r8d, edx
+       shlx     ecx, ecx, r8d
        or       eax, ecx
-						;; size=17 bbWeight=1 PerfScore 1.75
+						;; size=21 bbWeight=1 PerfScore 1.75
 G_M27504_IG03:        ; bbWeight=1, epilog, nogc, extend
        ret      
 						;; size=1 bbWeight=1 PerfScore 1.00
 
-; Total bytes of code 18, prolog size 0, PerfScore 2.75, instruction count 6, allocated bytes for code 18 (MethodHash=24ea948f) for method Test_Rotate:two_left_shifts(uint,int):uint (FullOpts)
+; Total bytes of code 22, prolog size 0, PerfScore 2.75, instruction count 6, allocated bytes for code 22 (MethodHash=24ea948f) for method Test_Rotate:two_left_shifts(uint,int):uint (FullOpts)
 ; ============================================================
 
 Unwind Info:
+21 (+11.80%) : 503042.dasm - V8.Crypto.BigInteger:invDigit():int:this (FullOpts)
@@ -28,7 +28,7 @@ G_M64469_IG02:        ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byr
        cmp      dword ptr [rcx+0x10], 0
        jle      G_M64469_IG05
 						;; size=14 bbWeight=1 PerfScore 6.00
-G_M64469_IG03:        ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
+G_M64469_IG03:        ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rcx]
        cmp      dword ptr [rax+0x10], 0
        je       G_M64469_IG07
@@ -38,36 +38,35 @@ G_M64469_IG03:        ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {},
        mov      eax, dword ptr [rax+0x10]
        ; gcrRegs -[rax]
        test     al, 1
-       je       SHORT G_M64469_IG05
+       je       G_M64469_IG05
        mov      ecx, eax
        and      ecx, 3
        mov      edx, eax
        and      edx, 15
        imul     edx, ecx
-       neg      edx
-       add      edx, 2
-       imul     ecx, edx
+       mov      r8d, 2
+       sub      r8d, edx
+       imul     ecx, r8d
        and      ecx, 15
        movzx    rdx, al
        imul     edx, ecx
-       neg      edx
-       add      edx, 2
-       imul     edx, ecx
-       movzx    rcx, dl
+       mov      r8d, 2
+       sub      r8d, edx
+       imul     r8d, ecx
+       movzx    rcx, r8b
        mov      edx, eax
        imul     edx, ecx
        movzx    rdx, dx
-       neg      edx
-       add      edx, 2
-       imul     edx, ecx
-       movzx    rcx, dx
+       mov      r8d, 2
+       sub      r8d, edx
+       imul     r8d, ecx
+       movzx    rcx, r8w
        imul     eax, ecx
        mov      r8d, dword ptr [(reloc)]      ; static handle
        cdq      
        idiv     edx:eax, r8d
-       mov      eax, edx
-       neg      eax
-       add      eax, 2
+       mov      eax, 2
+       sub      eax, edx
        imul     eax, ecx
        cdq      
        idiv     edx:eax, r8d
@@ -78,7 +77,7 @@ G_M64469_IG03:        ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {},
        neg      edx
        test     ecx, ecx
        cmovle   eax, edx
-						;; size=135 bbWeight=0.50 PerfScore 44.38
+						;; size=156 bbWeight=0.50 PerfScore 44.25
 G_M64469_IG04:        ; bbWeight=0.50, epilog, nogc, extend
        add      rsp, 40
        ret      
@@ -101,7 +100,7 @@ G_M64469_IG08:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        int3     
 						;; size=6 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 178, prolog size 4, PerfScore 52.00, instruction count 60, allocated bytes for code 178 (MethodHash=c0e4042a) for method V8.Crypto.BigInteger:invDigit():int:this (FullOpts)
+; Total bytes of code 199, prolog size 4, PerfScore 51.88, instruction count 59, allocated bytes for code 199 (MethodHash=c0e4042a) for method V8.Crypto.BigInteger:invDigit():int:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
+2 (+7.41%) : 497246.dasm - CSEWithDoubleNegation.DoNotMorphAwayCSEThatRepresentsDoubleNegation:DoubleNeg():int (FullOpts)
@@ -19,16 +19,16 @@ G_M1603_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
 G_M1603_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        mov      rax, 0xD1FFAB1E      ; data for <unknown class>:<unknown field>
        mov      dword ptr [rax], 42
-       mov      eax, dword ptr [rax]
-       neg      eax
-       add      eax, 21
+       mov      ecx, 21
+       sub      ecx, dword ptr [rax]
+       mov      eax, ecx
        add      eax, 43
-						;; size=26 bbWeight=1 PerfScore 4.00
+						;; size=28 bbWeight=1 PerfScore 5.00
 G_M1603_IG03:        ; bbWeight=1, epilog, nogc, extend
        ret      
 						;; size=1 bbWeight=1 PerfScore 1.00
 
-; Total bytes of code 27, prolog size 0, PerfScore 5.00, instruction count 7, allocated bytes for code 27 (MethodHash=af84f9bc) for method CSEWithDoubleNegation.DoNotMorphAwayCSEThatRepresentsDoubleNegation:DoubleNeg():int (FullOpts)
+; Total bytes of code 29, prolog size 0, PerfScore 6.00, instruction count 7, allocated bytes for code 29 (MethodHash=af84f9bc) for method CSEWithDoubleNegation.DoNotMorphAwayCSEThatRepresentsDoubleNegation:DoubleNeg():int (FullOpts)
 ; ============================================================
 
 Unwind Info:
libraries.crossgen2.windows.x64.checked.mch
-8 (-10.67%) : 272143.dasm - System.Runtime.Serialization.CodeExporter:AppendToValidClrIdentifier(System.String,System.String):System.String (FullOpts)
@@ -24,17 +24,15 @@ G_M7027_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
 						;; size=8 bbWeight=1 PerfScore 1.50
 G_M7027_IG02:        ; bbWeight=1, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs +[rcx]
-       mov      r8d, dword ptr [rcx+0x08]
-       neg      r8d
-       add      r8d, 511
+       mov      r8d, 511
+       sub      r8d, dword ptr [rcx+0x08]
        mov      r11d, dword ptr [rbx+0x08]
        cmp      r8d, r11d
        jge      SHORT G_M7027_IG04
-						;; size=23 bbWeight=1 PerfScore 5.75
+						;; size=19 bbWeight=1 PerfScore 6.50
 G_M7027_IG03:        ; bbWeight=0.50, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref
-       mov      r8d, r11d
-       neg      r8d
-       add      r8d, 511
+       mov      r8d, 511
+       sub      r8d, r11d
        lea      r11, [(reloc)]      ; function address
        xor      edx, edx
        call     [r11]<unknown method>
@@ -42,7 +40,7 @@ G_M7027_IG03:        ; bbWeight=0.50, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {
        ; gcr arg pop 0
        mov      rcx, rax
        ; gcrRegs +[rcx]
-						;; size=28 bbWeight=0.50 PerfScore 2.38
+						;; size=24 bbWeight=0.50 PerfScore 2.25
 G_M7027_IG04:        ; bbWeight=1, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rax]
        mov      rdx, rbx
@@ -58,7 +56,7 @@ G_M7027_IG05:        ; bbWeight=1, epilog, nogc, extend
        ret      
 						;; size=6 bbWeight=1 PerfScore 1.75
 
-; Total bytes of code 75, prolog size 5, PerfScore 14.88, instruction count 22, allocated bytes for code 75 (MethodHash=f77ce48c) for method System.Runtime.Serialization.CodeExporter:AppendToValidClrIdentifier(System.String,System.String):System.String (FullOpts)
+; Total bytes of code 67, prolog size 5, PerfScore 15.50, instruction count 20, allocated bytes for code 67 (MethodHash=f77ce48c) for method System.Runtime.Serialization.CodeExporter:AppendToValidClrIdentifier(System.String,System.String):System.String (FullOpts)
 ; ============================================================
 
 Unwind Info:
-2 (-10.00%) : 111218.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.LexicalSortKey:GetSynthesizedMemberKey(int):Microsoft.CodeAnalysis.CSharp.Symbols.LexicalSortKey (FullOpts)
@@ -19,17 +19,16 @@
 G_M60645_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
 						;; size=0 bbWeight=1 PerfScore 0.00
 G_M60645_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-       mov      eax, ecx
-       neg      eax
-       add      eax, 0xD1FFAB1E
+       mov      eax, 0xD1FFAB1E
+       sub      eax, ecx
        shl      rax, 32
        or       rax, 0xD1FFAB1E
-						;; size=19 bbWeight=1 PerfScore 1.50
+						;; size=17 bbWeight=1 PerfScore 1.25
 G_M60645_IG03:        ; bbWeight=1, epilog, nogc, extend
        ret      
 						;; size=1 bbWeight=1 PerfScore 1.00
 
-; Total bytes of code 20, prolog size 0, PerfScore 2.50, instruction count 6, allocated bytes for code 20 (MethodHash=5f5a131a) for method Microsoft.CodeAnalysis.CSharp.Symbols.LexicalSortKey:GetSynthesizedMemberKey(int):Microsoft.CodeAnalysis.CSharp.Symbols.LexicalSortKey (FullOpts)
+; Total bytes of code 18, prolog size 0, PerfScore 2.25, instruction count 5, allocated bytes for code 18 (MethodHash=5f5a131a) for method Microsoft.CodeAnalysis.CSharp.Symbols.LexicalSortKey:GetSynthesizedMemberKey(int):Microsoft.CodeAnalysis.CSharp.Symbols.LexicalSortKey (FullOpts)
 ; ============================================================
 
 Unwind Info:
-7 (-5.98%) : 207880.dasm - System.Xml.XmlBufferReader:SetWindow(int,int):this (FullOpts)
@@ -32,18 +32,16 @@ G_M28351_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
        mov      edi, r8d
 						;; size=15 bbWeight=1 PerfScore 4.00
 G_M28351_IG02:        ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
-       mov      edx, edi
-       neg      edx
-       add      edx, 0xD1FFAB1E
-       mov      r8d, esi
-       neg      r8d
-       add      r8d, 0xD1FFAB1E
+       mov      edx, 0xD1FFAB1E
+       sub      edx, edi
+       mov      r8d, 0xD1FFAB1E
+       sub      r8d, esi
        cmp      edx, esi
        cmovl    edi, r8d
        mov      edx, dword ptr [rbx+0x50]
        cmp      edx, esi
        je       SHORT G_M28351_IG04
-						;; size=36 bbWeight=1 PerfScore 5.25
+						;; size=29 bbWeight=1 PerfScore 4.75
 G_M28351_IG03:        ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
        mov      r8d, dword ptr [rbx+0x4C]
        sub      r8d, edx
@@ -78,7 +76,7 @@ G_M28351_IG05:        ; bbWeight=1, epilog, nogc, extend
        ret      
 						;; size=8 bbWeight=1 PerfScore 2.75
 
-; Total bytes of code 117, prolog size 7, PerfScore 24.75, instruction count 41, allocated bytes for code 117 (MethodHash=ef7e9140) for method System.Xml.XmlBufferReader:SetWindow(int,int):this (FullOpts)
+; Total bytes of code 110, prolog size 7, PerfScore 24.25, instruction count 39, allocated bytes for code 110 (MethodHash=ef7e9140) for method System.Xml.XmlBufferReader:SetWindow(int,int):this (FullOpts)
 ; ============================================================
 
 Unwind Info:
+5 (+35.71%) : 158856.dasm - Microsoft.CodeAnalysis.Compilation:MakeMemberMissing(int):this (FullOpts)
@@ -18,15 +18,16 @@ G_M15962_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
 						;; size=0 bbWeight=1 PerfScore 0.00
 G_M15962_IG02:        ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
        ; gcrRegs +[rcx]
-       neg      edx
-       dec      edx
+       mov      eax, -1
+       sub      eax, edx
+       mov      edx, eax
        lea      rax, [(reloc)]      ; function address
-						;; size=11 bbWeight=1 PerfScore 1.00
+						;; size=16 bbWeight=1 PerfScore 1.25
 G_M15962_IG03:        ; bbWeight=1, epilog, nogc, extend
        tail.jmp [rax]Microsoft.CodeAnalysis.Compilation:MakeMemberMissing(int):this
 						;; size=3 bbWeight=1 PerfScore 4.00
 
-; Total bytes of code 14, prolog size 0, PerfScore 5.00, instruction count 4, allocated bytes for code 14 (MethodHash=1dbac1a5) for method Microsoft.CodeAnalysis.Compilation:MakeMemberMissing(int):this (FullOpts)
+; Total bytes of code 19, prolog size 0, PerfScore 5.25, instruction count 5, allocated bytes for code 19 (MethodHash=1dbac1a5) for method Microsoft.CodeAnalysis.Compilation:MakeMemberMissing(int):this (FullOpts)
 ; ============================================================
 
 Unwind Info:
+4 (+33.33%) : 4413.dasm - System.UInt32:System.Numerics.IBinaryInteger.GetShortestBitLength():int:this (FullOpts)
@@ -19,14 +19,16 @@ G_M56864_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byr
        ; byrRegs +[rcx]
        xor      eax, eax
        lzcnt    eax, dword ptr [rcx]
-       neg      eax
-       add      eax, 32
-						;; size=11 bbWeight=1 PerfScore 5.75
+       mov      ecx, 32
+       ; byrRegs -[rcx]
+       sub      ecx, eax
+       mov      eax, ecx
+						;; size=15 bbWeight=1 PerfScore 6.00
 G_M56864_IG03:        ; bbWeight=1, epilog, nogc, extend
        ret      
 						;; size=1 bbWeight=1 PerfScore 1.00
 
-; Total bytes of code 12, prolog size 0, PerfScore 6.75, instruction count 5, allocated bytes for code 12 (MethodHash=ae7a21df) for method System.UInt32:System.Numerics.IBinaryInteger<System.UInt32>.GetShortestBitLength():int:this (FullOpts)
+; Total bytes of code 16, prolog size 0, PerfScore 7.00, instruction count 6, allocated bytes for code 16 (MethodHash=ae7a21df) for method System.UInt32:System.Numerics.IBinaryInteger<System.UInt32>.GetShortestBitLength():int:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
+4 (+30.77%) : 4511.dasm - System.UInt64:System.Numerics.IBinaryInteger.GetShortestBitLength():int:this (FullOpts)
@@ -19,14 +19,16 @@ G_M25600_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byr
        ; byrRegs +[rcx]
        xor      eax, eax
        lzcnt    rax, qword ptr [rcx]
-       neg      eax
-       add      eax, 64
-						;; size=12 bbWeight=1 PerfScore 5.75
+       mov      ecx, 64
+       ; byrRegs -[rcx]
+       sub      ecx, eax
+       mov      eax, ecx
+						;; size=16 bbWeight=1 PerfScore 6.00
 G_M25600_IG03:        ; bbWeight=1, epilog, nogc, extend
        ret      
 						;; size=1 bbWeight=1 PerfScore 1.00
 
-; Total bytes of code 13, prolog size 0, PerfScore 6.75, instruction count 5, allocated bytes for code 13 (MethodHash=70fa9bff) for method System.UInt64:System.Numerics.IBinaryInteger<System.UInt64>.GetShortestBitLength():int:this (FullOpts)
+; Total bytes of code 17, prolog size 0, PerfScore 7.00, instruction count 6, allocated bytes for code 17 (MethodHash=70fa9bff) for method System.UInt64:System.Numerics.IBinaryInteger<System.UInt64>.GetShortestBitLength():int:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
libraries.pmi.windows.x64.checked.mch
-2 (-10.00%) : 47441.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.LexicalSortKey:GetSynthesizedMemberKey(int):Microsoft.CodeAnalysis.CSharp.Symbols.LexicalSortKey (FullOpts)
@@ -18,17 +18,16 @@
 G_M60645_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
 						;; size=0 bbWeight=1 PerfScore 0.00
 G_M60645_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-       mov      eax, ecx
-       neg      eax
-       add      eax, 0xD1FFAB1E
+       mov      eax, 0xD1FFAB1E
+       sub      eax, ecx
        shl      rax, 32
        or       rax, 0xD1FFAB1E
-						;; size=19 bbWeight=1 PerfScore 1.50
+						;; size=17 bbWeight=1 PerfScore 1.25
 G_M60645_IG03:        ; bbWeight=1, epilog, nogc, extend
        ret      
 						;; size=1 bbWeight=1 PerfScore 1.00
 
-; Total bytes of code 20, prolog size 0, PerfScore 2.50, instruction count 6, allocated bytes for code 20 (MethodHash=5f5a131a) for method Microsoft.CodeAnalysis.CSharp.Symbols.LexicalSortKey:GetSynthesizedMemberKey(int):Microsoft.CodeAnalysis.CSharp.Symbols.LexicalSortKey (FullOpts)
+; Total bytes of code 18, prolog size 0, PerfScore 2.25, instruction count 5, allocated bytes for code 18 (MethodHash=5f5a131a) for method Microsoft.CodeAnalysis.CSharp.Symbols.LexicalSortKey:GetSynthesizedMemberKey(int):Microsoft.CodeAnalysis.CSharp.Symbols.LexicalSortKey (FullOpts)
 ; ============================================================
 
 Unwind Info:
-7 (-5.98%) : 201694.dasm - System.Xml.XmlBufferReader:SetWindow(int,int):this (FullOpts)
@@ -31,18 +31,16 @@ G_M28351_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
        mov      edi, r8d
 						;; size=15 bbWeight=1 PerfScore 4.00
 G_M28351_IG02:        ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
-       mov      edx, edi
-       neg      edx
-       add      edx, 0xD1FFAB1E
-       mov      r8d, esi
-       neg      r8d
-       add      r8d, 0xD1FFAB1E
+       mov      edx, 0xD1FFAB1E
+       sub      edx, edi
+       mov      r8d, 0xD1FFAB1E
+       sub      r8d, esi
        cmp      edx, esi
        cmovl    edi, r8d
        mov      edx, dword ptr [rbx+0x50]
        cmp      edx, esi
        je       SHORT G_M28351_IG04
-						;; size=36 bbWeight=1 PerfScore 5.25
+						;; size=29 bbWeight=1 PerfScore 4.75
 G_M28351_IG03:        ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
        mov      r8d, dword ptr [rbx+0x4C]
        sub      r8d, edx
@@ -77,7 +75,7 @@ G_M28351_IG05:        ; bbWeight=1, epilog, nogc, extend
        ret      
 						;; size=8 bbWeight=1 PerfScore 2.75
 
-; Total bytes of code 117, prolog size 7, PerfScore 24.75, instruction count 41, allocated bytes for code 117 (MethodHash=ef7e9140) for method System.Xml.XmlBufferReader:SetWindow(int,int):this (FullOpts)
+; Total bytes of code 110, prolog size 7, PerfScore 24.25, instruction count 39, allocated bytes for code 110 (MethodHash=ef7e9140) for method System.Xml.XmlBufferReader:SetWindow(int,int):this (FullOpts)
 ; ============================================================
 
 Unwind Info:
-3 (-5.77%) : 57214.dasm - Microsoft.CodeAnalysis.CSharp.DecisionDagBuilder+Tests+One:g__safeAdd|9_1(Microsoft.CodeAnalysis.ConstantValue,int):Microsoft.CodeAnalysis.ConstantValue (FullOpts)
@@ -27,22 +27,21 @@ G_M45256_IG02:        ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byr
        call     [rax+0x28]<unknown method>
        ; gcrRegs -[rcx]
        ; gcr arg pop 0
-       mov      ecx, eax
-       neg      ecx
-       add      ecx, 0xD1FFAB1E
+       mov      ecx, 0xD1FFAB1E
+       sub      ecx, eax
        mov      edx, 0xD1FFAB1E
        add      eax, ebx
        cmp      ecx, ebx
        mov      ecx, eax
        cmovl    ecx, edx
-						;; size=34 bbWeight=1 PerfScore 9.00
+						;; size=31 bbWeight=1 PerfScore 8.75
 G_M45256_IG03:        ; bbWeight=1, epilog, nogc, extend
        add      rsp, 32
        pop      rbx
        tail.jmp [Microsoft.CodeAnalysis.ConstantValue:Create(int):Microsoft.CodeAnalysis.ConstantValue]
 						;; size=11 bbWeight=1 PerfScore 2.75
 
-; Total bytes of code 52, prolog size 5, PerfScore 13.25, instruction count 17, allocated bytes for code 52 (MethodHash=38414f37) for method Microsoft.CodeAnalysis.CSharp.DecisionDagBuilder+Tests+One:<RewriteNestedLengthTests>g__safeAdd|9_1(Microsoft.CodeAnalysis.ConstantValue,int):Microsoft.CodeAnalysis.ConstantValue (FullOpts)
+; Total bytes of code 49, prolog size 5, PerfScore 13.00, instruction count 16, allocated bytes for code 49 (MethodHash=38414f37) for method Microsoft.CodeAnalysis.CSharp.DecisionDagBuilder+Tests+One:<RewriteNestedLengthTests>g__safeAdd|9_1(Microsoft.CodeAnalysis.ConstantValue,int):Microsoft.CodeAnalysis.ConstantValue (FullOpts)
 ; ============================================================
 
 Unwind Info:
+5 (+50.00%) : 136411.dasm - Microsoft.CodeAnalysis.Compilation:MakeMemberMissing(int):this (FullOpts)
@@ -17,14 +17,15 @@ G_M15962_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
 						;; size=0 bbWeight=1 PerfScore 0.00
 G_M15962_IG02:        ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
        ; gcrRegs +[rcx]
-       neg      edx
-       dec      edx
-						;; size=4 bbWeight=1 PerfScore 0.50
+       mov      eax, -1
+       sub      eax, edx
+       mov      edx, eax
+						;; size=9 bbWeight=1 PerfScore 0.75
 G_M15962_IG03:        ; bbWeight=1, epilog, nogc, extend
        tail.jmp [Microsoft.CodeAnalysis.Compilation:MakeMemberMissing(int):this]
 						;; size=6 bbWeight=1 PerfScore 2.00
 
-; Total bytes of code 10, prolog size 0, PerfScore 2.50, instruction count 3, allocated bytes for code 10 (MethodHash=1dbac1a5) for method Microsoft.CodeAnalysis.Compilation:MakeMemberMissing(int):this (FullOpts)
+; Total bytes of code 15, prolog size 0, PerfScore 2.75, instruction count 4, allocated bytes for code 15 (MethodHash=1dbac1a5) for method Microsoft.CodeAnalysis.Compilation:MakeMemberMissing(int):this (FullOpts)
 ; ============================================================
 
 Unwind Info:
+4 (+33.33%) : 3024.dasm - System.Number+BigInteger:CountSignificantBits(uint):int (FullOpts)
@@ -17,14 +17,15 @@ G_M26981_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
 G_M26981_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        xor      eax, eax
        lzcnt    eax, ecx
-       neg      eax
-       add      eax, 32
-						;; size=11 bbWeight=1 PerfScore 2.75
+       mov      ecx, 32
+       sub      ecx, eax
+       mov      eax, ecx
+						;; size=15 bbWeight=1 PerfScore 3.00
 G_M26981_IG03:        ; bbWeight=1, epilog, nogc, extend
        ret      
 						;; size=1 bbWeight=1 PerfScore 1.00
 
-; Total bytes of code 12, prolog size 0, PerfScore 3.75, instruction count 5, allocated bytes for code 12 (MethodHash=960f969a) for method System.Number+BigInteger:CountSignificantBits(uint):int (FullOpts)
+; Total bytes of code 16, prolog size 0, PerfScore 4.00, instruction count 6, allocated bytes for code 16 (MethodHash=960f969a) for method System.Number+BigInteger:CountSignificantBits(uint):int (FullOpts)
 ; ============================================================
 
 Unwind Info:
+4 (+30.77%) : 3025.dasm - System.Number+BigInteger:CountSignificantBits(ulong):int (FullOpts)
@@ -17,14 +17,15 @@ G_M33308_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
 G_M33308_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        xor      eax, eax
        lzcnt    rax, rcx
-       neg      eax
-       add      eax, 64
-						;; size=12 bbWeight=1 PerfScore 2.75
+       mov      ecx, 64
+       sub      ecx, eax
+       mov      eax, ecx
+						;; size=16 bbWeight=1 PerfScore 3.00
 G_M33308_IG03:        ; bbWeight=1, epilog, nogc, extend
        ret      
 						;; size=1 bbWeight=1 PerfScore 1.00
 
-; Total bytes of code 13, prolog size 0, PerfScore 3.75, instruction count 5, allocated bytes for code 13 (MethodHash=6a147de3) for method System.Number+BigInteger:CountSignificantBits(ulong):int (FullOpts)
+; Total bytes of code 17, prolog size 0, PerfScore 4.00, instruction count 6, allocated bytes for code 17 (MethodHash=6a147de3) for method System.Number+BigInteger:CountSignificantBits(ulong):int (FullOpts)
 ; ============================================================
 
 Unwind Info:
libraries_tests.run.windows.x64.Release.mch
-2 (-18.18%) : 315794.dasm - System.IO.Compression.OutputWindow:get_FreeBytes():int:this (Tier1)
@@ -18,15 +18,14 @@ G_M19840_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
 						;; size=0 bbWeight=1 PerfScore 0.00
 G_M19840_IG02:        ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
        ; gcrRegs +[rcx]
-       mov      eax, dword ptr [rcx+0x14]
-       neg      eax
-       add      eax, 0xD1FFAB1E
-						;; size=10 bbWeight=1 PerfScore 2.50
+       mov      eax, 0xD1FFAB1E
+       sub      eax, dword ptr [rcx+0x14]
+						;; size=8 bbWeight=1 PerfScore 3.25
 G_M19840_IG03:        ; bbWeight=1, epilog, nogc, extend
        ret      
 						;; size=1 bbWeight=1 PerfScore 1.00
 
-; Total bytes of code 11, prolog size 0, PerfScore 3.50, instruction count 4, allocated bytes for code 11 (MethodHash=8870b27f) for method System.IO.Compression.OutputWindow:get_FreeBytes():int:this (Tier1)
+; Total bytes of code 9, prolog size 0, PerfScore 4.25, instruction count 3, allocated bytes for code 9 (MethodHash=8870b27f) for method System.IO.Compression.OutputWindow:get_FreeBytes():int:this (Tier1)
 ; ============================================================
 
 Unwind Info:
-3 (-9.09%) : 704455.dasm - System.Text.RegularExpressions.RegexPrefixAnalyzer:g__GetRangeLength|4_1(System.ValueTuple`2[char,char],bool):int (Tier1)
@@ -27,17 +27,16 @@ G_M24178_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        movzx    rcx, cx
        sub      eax, ecx
        inc      eax
-       mov      ecx, eax
-       neg      ecx
-       add      ecx, 0x10000
+       mov      ecx, 0x10000
+       sub      ecx, eax
        test     dl, dl
        cmovne   eax, ecx
-						;; size=32 bbWeight=1 PerfScore 3.00
+						;; size=29 bbWeight=1 PerfScore 2.75
 G_M24178_IG03:        ; bbWeight=1, epilog, nogc, extend
        ret      
 						;; size=1 bbWeight=1 PerfScore 1.00
 
-; Total bytes of code 33, prolog size 0, PerfScore 4.00, instruction count 12, allocated bytes for code 33 (MethodHash=cf78a18d) for method System.Text.RegularExpressions.RegexPrefixAnalyzer:<SortFixedDistanceSetsByQuality>g__GetRangeLength|4_1(System.ValueTuple`2[char,char],bool):int (Tier1)
+; Total bytes of code 30, prolog size 0, PerfScore 3.75, instruction count 11, allocated bytes for code 30 (MethodHash=cf78a18d) for method System.Text.RegularExpressions.RegexPrefixAnalyzer:<SortFixedDistanceSetsByQuality>g__GetRangeLength|4_1(System.ValueTuple`2[char,char],bool):int (Tier1)
 ; ============================================================
 
 Unwind Info:
-24 (-4.79%) : 130511.dasm - System.SpanHelpers:IndexOfNullCharacter(ptr):int (Tier1)
@@ -98,15 +98,14 @@ G_M36857_IG08:        ; bbWeight=1.26, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
        test     rdi, rdi
        jg       SHORT G_M36857_IG07
 						;; size=11 bbWeight=1.26 PerfScore 2.21
-G_M36857_IG09:        ; bbWeight=0.94, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M36857_IG09:        ; bbWeight=0.94, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        cmp      rsi, 0xD1FFAB1E
        jge      G_M36857_IG27
-       mov      rcx, rsi
-       neg      rcx
-       add      rcx, 0xD1FFAB1E
+       mov      ecx, 0xD1FFAB1E
+       sub      rcx, rsi
        cmp      rcx, 8
-       jl       G_M36857_IG21
-						;; size=36 bbWeight=0.94 PerfScore 3.07
+       jl       SHORT G_M36857_IG21
+						;; size=27 bbWeight=0.94 PerfScore 2.83
 G_M36857_IG10:        ; bbWeight=0.94, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        lea      rcx, [rbx+2*rsi]
        test     cl, 31
@@ -123,12 +122,11 @@ G_M36857_IG12:        ; bbWeight=0.45, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
        add      rsi, 8
 						;; size=4 bbWeight=0.45 PerfScore 0.11
 G_M36857_IG13:        ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-       mov      rdi, rsi
-       neg      rdi
-       add      rdi, 0xD1FFAB1E
+       mov      edi, 0xD1FFAB1E
+       sub      rdi, rsi
        and      rdi, -16
        jle      G_M36857_IG23
-						;; size=23 bbWeight=0.92 PerfScore 1.83
+						;; size=18 bbWeight=0.92 PerfScore 1.60
 G_M36857_IG14:        ; bbWeight=2.70, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        cmp      rdi, 16
        jl       SHORT G_M36857_IG22
@@ -193,9 +191,8 @@ G_M36857_IG22:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
        jmp      SHORT G_M36857_IG15
 						;; size=28 bbWeight=0 PerfScore 0.00
 G_M36857_IG23:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
-       mov      rdi, rsi
-       neg      rdi
-       add      rdi, 0xD1FFAB1E
+       mov      edi, 0xD1FFAB1E
+       sub      rdi, rsi
        and      rdi, -8
        jle      SHORT G_M36857_IG25
        cmp      rdi, 8
@@ -207,7 +204,7 @@ G_M36857_IG23:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
        call     [<unknown method>]
        ; gcrRegs -[rcx rdx]
        ; gcr arg pop 0
-						;; size=51 bbWeight=0 PerfScore 0.00
+						;; size=46 bbWeight=0 PerfScore 0.00
 G_M36857_IG24:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        vxorps   xmm0, xmm0, xmm0
        vpcmpeqw xmm0, xmm0, xmmword ptr [rbx+2*rsi]
@@ -219,11 +216,10 @@ G_M36857_IG24:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
 G_M36857_IG25:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        cmp      rsi, 0xD1FFAB1E
        jge      SHORT G_M36857_IG27
-       mov      rdi, rsi
-       neg      rdi
-       add      rdi, 0xD1FFAB1E
+       mov      edi, 0xD1FFAB1E
+       sub      rdi, rsi
        jmp      G_M36857_IG05
-						;; size=27 bbWeight=0 PerfScore 0.00
+						;; size=22 bbWeight=0 PerfScore 0.00
 G_M36857_IG26:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        tzcnt    eax, eax
        shr      eax, 1
@@ -248,7 +244,7 @@ G_M36857_IG30:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        jmp      G_M36857_IG19
 						;; size=8 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 501, prolog size 10, PerfScore 74.07, instruction count 131, allocated bytes for code 501 (MethodHash=87b17006) for method System.SpanHelpers:IndexOfNullCharacter(ptr):int (Tier1)
+; Total bytes of code 477, prolog size 10, PerfScore 73.60, instruction count 127, allocated bytes for code 477 (MethodHash=87b17006) for method System.SpanHelpers:IndexOfNullCharacter(ptr):int (Tier1)
 ; ============================================================
 
 Unwind Info:
+8 (+17.39%) : 60686.dasm - Microsoft.CodeAnalysis.Compilation:IsMemberMissing(int):bool:this (Tier1)
@@ -40,16 +40,17 @@ G_M36374_IG04:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0002 {
        mov      rcx, gword ptr [rcx+0x18]
        cmp      byte  ptr [rcx], cl
        mov      byte  ptr [rsp+0x20], 0
-       neg      edx
-       dec      edx
+       mov      r8d, -1
+       sub      r8d, edx
+       mov      edx, r8d
        lea      r8, [rsp+0x20]
        call     [Microsoft.CodeAnalysis.SmallDictionary`2[int,bool]:TryGetValue(int,byref):bool:this]
        ; gcrRegs -[rcx]
        ; gcr arg pop 0
        jmp      SHORT G_M36374_IG03
-						;; size=28 bbWeight=0 PerfScore 0.00
+						;; size=36 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 46, prolog size 4, PerfScore 5.75, instruction count 14, allocated bytes for code 46 (MethodHash=a9d671e9) for method Microsoft.CodeAnalysis.Compilation:IsMemberMissing(int):bool:this (Tier1)
+; Total bytes of code 54, prolog size 4, PerfScore 5.75, instruction count 15, allocated bytes for code 54 (MethodHash=a9d671e9) for method Microsoft.CodeAnalysis.Compilation:IsMemberMissing(int):bool:this (Tier1)
 ; ============================================================
 
 Unwind Info:
+4 (+16.00%) : 529677.dasm - System.Runtime.Intrinsics.Vector256`1[int]:System.Runtime.Intrinsics.ISimdVector,T>.LastIndexOfWhereAllBitsSet(System.Runtime.Intrinsics.Vector256`1[int]):int (Instrumented Tier1)
@@ -25,15 +25,17 @@ G_M1790_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byre
        vpcmpeqd ymm0, ymm0, ymmword ptr [rcx]
        vmovmskps rax, ymm0
        lzcnt    eax, eax
-       neg      eax
-       add      eax, 31
-						;; size=21 bbWeight=1 PerfScore 10.00
+       mov      ecx, 31
+       ; byrRegs -[rcx]
+       sub      ecx, eax
+       mov      eax, ecx
+						;; size=25 bbWeight=1 PerfScore 10.25
 G_M1790_IG03:        ; bbWeight=1, epilog, nogc, extend
        vzeroupper 
        ret      
 						;; size=4 bbWeight=1 PerfScore 2.00
 
-; Total bytes of code 25, prolog size 0, PerfScore 12.00, instruction count 8, allocated bytes for code 25 (MethodHash=0191f901) for method System.Runtime.Intrinsics.Vector256`1[int]:System.Runtime.Intrinsics.ISimdVector<System.Runtime.Intrinsics.Vector256<T>,T>.LastIndexOfWhereAllBitsSet(System.Runtime.Intrinsics.Vector256`1[int]):int (Instrumented Tier1)
+; Total bytes of code 29, prolog size 0, PerfScore 12.25, instruction count 9, allocated bytes for code 29 (MethodHash=0191f901) for method System.Runtime.Intrinsics.Vector256`1[int]:System.Runtime.Intrinsics.ISimdVector<System.Runtime.Intrinsics.Vector256<T>,T>.LastIndexOfWhereAllBitsSet(System.Runtime.Intrinsics.Vector256`1[int]):int (Instrumented Tier1)
 ; ============================================================
 
 Unwind Info:
+5 (+15.62%) : 451520.dasm - System.Byte:RotateLeft(byte,int):byte (Instrumented Tier1)
@@ -23,18 +23,18 @@ G_M14791_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        mov      ecx, edx
        and      ecx, 7
        shlx     ecx, eax, ecx
-       neg      edx
-       add      edx, 8
-       and      edx, 7
-       sarx     eax, eax, edx
+       mov      r8d, 8
+       sub      r8d, edx
+       and      r8d, 7
+       sarx     eax, eax, r8d
        or       eax, ecx
        movzx    rax, al
-						;; size=31 bbWeight=1 PerfScore 3.00
+						;; size=36 bbWeight=1 PerfScore 3.00
 G_M14791_IG03:        ; bbWeight=1, epilog, nogc, extend
        ret      
 						;; size=1 bbWeight=1 PerfScore 1.00
 
-; Total bytes of code 32, prolog size 0, PerfScore 4.00, instruction count 11, allocated bytes for code 32 (MethodHash=f806c638) for method System.Byte:RotateLeft(byte,int):byte (Instrumented Tier1)
+; Total bytes of code 37, prolog size 0, PerfScore 4.00, instruction count 11, allocated bytes for code 37 (MethodHash=f806c638) for method System.Byte:RotateLeft(byte,int):byte (Instrumented Tier1)
 ; ============================================================
 
 Unwind Info:
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch
-2 (-20.00%) : 163379.dasm - System.Linq.Tests.OrderByTests+<>c:b__38_0(int):int:this (FullOpts)
@@ -16,15 +16,14 @@
 G_M17922_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
 						;; size=0 bbWeight=1 PerfScore 0.00
 G_M17922_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-       mov      eax, edx
-       neg      eax
-       add      eax, 0xD1FFAB1E
-						;; size=9 bbWeight=1 PerfScore 0.75
+       mov      eax, 0xD1FFAB1E
+       sub      eax, edx
+						;; size=7 bbWeight=1 PerfScore 0.50
 G_M17922_IG03:        ; bbWeight=1, epilog, nogc, extend
        ret      
 						;; size=1 bbWeight=1 PerfScore 1.00
 
-; Total bytes of code 10, prolog size 0, PerfScore 1.75, instruction count 4, allocated bytes for code 10 (MethodHash=beafb9fd) for method System.Linq.Tests.OrderByTests+<>c:<SortsLargeDescendingEnumerableCorrectly>b__38_0(int):int:this (FullOpts)
+; Total bytes of code 8, prolog size 0, PerfScore 1.50, instruction count 3, allocated bytes for code 8 (MethodHash=beafb9fd) for method System.Linq.Tests.OrderByTests+<>c:<SortsLargeDescendingEnumerableCorrectly>b__38_0(int):int:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
-2 (-20.00%) : 163161.dasm - System.Linq.Tests.ThenByDescendingTests+<>c:b__13_0(int):int:this (FullOpts)
@@ -16,15 +16,14 @@
 G_M31980_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
 						;; size=0 bbWeight=1 PerfScore 0.00
 G_M31980_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-       mov      eax, edx
-       neg      eax
-       add      eax, 0x1869F
-						;; size=9 bbWeight=1 PerfScore 0.75
+       mov      eax, 0x1869F
+       sub      eax, edx
+						;; size=7 bbWeight=1 PerfScore 0.50
 G_M31980_IG03:        ; bbWeight=1, epilog, nogc, extend
        ret      
 						;; size=1 bbWeight=1 PerfScore 1.00
 
-; Total bytes of code 10, prolog size 0, PerfScore 1.75, instruction count 4, allocated bytes for code 10 (MethodHash=a7f98313) for method System.Linq.Tests.ThenByDescendingTests+<>c:<SortsLargeDescendingEnumerableCorrectly>b__13_0(int):int:this (FullOpts)
+; Total bytes of code 8, prolog size 0, PerfScore 1.50, instruction count 3, allocated bytes for code 8 (MethodHash=a7f98313) for method System.Linq.Tests.ThenByDescendingTests+<>c:<SortsLargeDescendingEnumerableCorrectly>b__13_0(int):int:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
-7 (-5.98%) : 119512.dasm - System.Xml.XmlBufferReader:SetWindow(int,int):this (FullOpts)
@@ -31,18 +31,16 @@ G_M28351_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
        mov      edi, r8d
 						;; size=15 bbWeight=1 PerfScore 4.00
 G_M28351_IG02:        ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
-       mov      edx, edi
-       neg      edx
-       add      edx, 0xD1FFAB1E
-       mov      r8d, esi
-       neg      r8d
-       add      r8d, 0xD1FFAB1E
+       mov      edx, 0xD1FFAB1E
+       sub      edx, edi
+       mov      r8d, 0xD1FFAB1E
+       sub      r8d, esi
        cmp      edx, esi
        cmovl    edi, r8d
        mov      edx, dword ptr [rbx+0x50]
        cmp      edx, esi
        je       SHORT G_M28351_IG04
-						;; size=36 bbWeight=1 PerfScore 5.25
+						;; size=29 bbWeight=1 PerfScore 4.75
 G_M28351_IG03:        ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
        mov      r8d, dword ptr [rbx+0x4C]
        sub      r8d, edx
@@ -77,7 +75,7 @@ G_M28351_IG05:        ; bbWeight=1, epilog, nogc, extend
        ret      
 						;; size=8 bbWeight=1 PerfScore 2.75
 
-; Total bytes of code 117, prolog size 7, PerfScore 24.75, instruction count 41, allocated bytes for code 117 (MethodHash=ef7e9140) for method System.Xml.XmlBufferReader:SetWindow(int,int):this (FullOpts)
+; Total bytes of code 110, prolog size 7, PerfScore 24.25, instruction count 39, allocated bytes for code 110 (MethodHash=ef7e9140) for method System.Xml.XmlBufferReader:SetWindow(int,int):this (FullOpts)
 ; ============================================================
 
 Unwind Info:
+6 (+12.50%) : 117392.dasm - System.DirectoryServices.Protocols.LdapErrorMappings:IsLdapError(int):bool (FullOpts)
@@ -11,7 +11,7 @@
 ;  V00 arg0         [V00,T00] (  6,  4.50)     int  ->  rcx         single-def
 ;* V01 loc0         [V01    ] (  0,  0   )     int  ->  zero-ref    single-def
 ;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <Empty>
-;  V03 tmp1         [V03,T01] (  6,  3.50)     int  ->  rcx         "Inline return value spill temp"
+;  V03 tmp1         [V03,T01] (  6,  3.50)     int  ->  rax         "Inline return value spill temp"
 ;
 ; Lcl frame size = 0
 
@@ -24,34 +24,38 @@ G_M57930_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
 G_M57930_IG03:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        cmp      ecx, -17
        jl       SHORT G_M57930_IG04
-       neg      ecx
-       add      ecx, 80
-						;; size=10 bbWeight=0.50 PerfScore 0.88
-G_M57930_IG04:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
-       cmp      ecx, 35
-       je       SHORT G_M57930_IG07
+       mov      eax, 80
+       sub      eax, ecx
+       jmp      SHORT G_M57930_IG05
+						;; size=14 bbWeight=0.50 PerfScore 1.88
+G_M57930_IG04:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+       mov      eax, ecx
+						;; size=2 bbWeight=0.50 PerfScore 0.12
+G_M57930_IG05:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+       cmp      eax, 35
+       je       SHORT G_M57930_IG08
 						;; size=5 bbWeight=1 PerfScore 1.25
-G_M57930_IG05:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
-       cmp      ecx, 49
-       je       SHORT G_M57930_IG07
-       cmp      ecx, 112
-       je       SHORT G_M57930_IG07
-       sub      ecx, 81
-       cmp      ecx, 16
+G_M57930_IG06:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+       cmp      eax, 49
+       je       SHORT G_M57930_IG08
+       cmp      eax, 112
+       je       SHORT G_M57930_IG08
+       sub      eax, 81
+       cmp      eax, 16
        setbe    al
        movzx    rax, al
 						;; size=22 bbWeight=0.50 PerfScore 2.12
-G_M57930_IG06:        ; bbWeight=0.50, epilog, nogc, extend
+G_M57930_IG07:        ; bbWeight=0.50, epilog, nogc, extend
        ret      
 						;; size=1 bbWeight=0.50 PerfScore 0.50
-G_M57930_IG07:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M57930_IG08:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
        mov      eax, 1
 						;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M57930_IG08:        ; bbWeight=0.50, epilog, nogc, extend
+G_M57930_IG09:        ; bbWeight=0.50, epilog, nogc, extend
        ret      
 						;; size=1 bbWeight=0.50 PerfScore 0.50
 
-; Total bytes of code 48, prolog size 0, PerfScore 6.62, instruction count 20, allocated bytes for code 48 (MethodHash=dc061db5) for method System.DirectoryServices.Protocols.LdapErrorMappings:IsLdapError(int):bool (FullOpts)
+; Total bytes of code 54, prolog size 0, PerfScore 7.75, instruction count 21, allocated bytes for code 54 (MethodHash=dc061db5) for method System.DirectoryServices.Protocols.LdapErrorMappings:IsLdapError(int):bool (FullOpts)
 ; ============================================================
 
 Unwind Info:
+2 (+9.52%) : 21049.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedRecordCopyCtor:GetLexicalSortKey():Microsoft.CodeAnalysis.CSharp.Symbols.LexicalSortKey:this (FullOpts)
@@ -13,7 +13,7 @@
 ;* V02 tmp1         [V02    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.LexicalSortKey>
 ;  V03 tmp2         [V03,T01] (  2,  4   )     int  ->  rax         "Inlining Arg"
 ;* V04 tmp3         [V04    ] (  0,  0   )     int  ->  zero-ref    "field V02._treeOrdinal (fldOffset=0x0)" P-INDEP
-;  V05 tmp4         [V05,T02] (  2,  2   )     int  ->  rax         "field V02._position (fldOffset=0x4)" P-INDEP
+;  V05 tmp4         [V05,T02] (  2,  2   )     int  ->  rcx         "field V02._position (fldOffset=0x4)" P-INDEP
 ;
 ; Lcl frame size = 0
 
@@ -22,16 +22,18 @@ G_M34543_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
 G_M34543_IG02:        ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
        ; gcrRegs +[rcx]
        mov      eax, dword ptr [rcx+0x28]
-       neg      eax
-       add      eax, 0xD1FFAB1E
+       mov      ecx, 0xD1FFAB1E
+       ; gcrRegs -[rcx]
+       sub      ecx, eax
+       mov      eax, ecx
        shl      rax, 32
        or       rax, 0xD1FFAB1E
-						;; size=20 bbWeight=1 PerfScore 3.25
+						;; size=22 bbWeight=1 PerfScore 3.50
 G_M34543_IG03:        ; bbWeight=1, epilog, nogc, extend
        ret      
 						;; size=1 bbWeight=1 PerfScore 1.00
 
-; Total bytes of code 21, prolog size 0, PerfScore 4.25, instruction count 6, allocated bytes for code 21 (MethodHash=5e747910) for method Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedRecordCopyCtor:GetLexicalSortKey():Microsoft.CodeAnalysis.CSharp.Symbols.LexicalSortKey:this (FullOpts)
+; Total bytes of code 23, prolog size 0, PerfScore 4.50, instruction count 7, allocated bytes for code 23 (MethodHash=5e747910) for method Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedRecordCopyCtor:GetLexicalSortKey():Microsoft.CodeAnalysis.CSharp.Symbols.LexicalSortKey:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
+2 (+8.33%) : 21051.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedRecordEqualityOperatorBase:GetLexicalSortKey():Microsoft.CodeAnalysis.CSharp.Symbols.LexicalSortKey:this (FullOpts)
@@ -13,7 +13,7 @@
 ;* V02 tmp1         [V02    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.LexicalSortKey>
 ;  V03 tmp2         [V03,T01] (  2,  4   )     int  ->  rax         "Inlining Arg"
 ;* V04 tmp3         [V04    ] (  0,  0   )     int  ->  zero-ref    "field V02._treeOrdinal (fldOffset=0x0)" P-INDEP
-;  V05 tmp4         [V05,T02] (  2,  2   )     int  ->  rax         "field V02._position (fldOffset=0x4)" P-INDEP
+;  V05 tmp4         [V05,T02] (  2,  2   )     int  ->  rcx         "field V02._position (fldOffset=0x4)" P-INDEP
 ;
 ; Lcl frame size = 0
 
@@ -22,16 +22,18 @@ G_M24669_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
 G_M24669_IG02:        ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
        ; gcrRegs +[rcx]
        mov      eax, dword ptr [rcx+0xC0]
-       neg      eax
-       add      eax, 0xD1FFAB1E
+       mov      ecx, 0xD1FFAB1E
+       ; gcrRegs -[rcx]
+       sub      ecx, eax
+       mov      eax, ecx
        shl      rax, 32
        or       rax, 0xD1FFAB1E
-						;; size=23 bbWeight=1 PerfScore 3.25
+						;; size=25 bbWeight=1 PerfScore 3.50
 G_M24669_IG03:        ; bbWeight=1, epilog, nogc, extend
        ret      
 						;; size=1 bbWeight=1 PerfScore 1.00
 
-; Total bytes of code 24, prolog size 0, PerfScore 4.25, instruction count 6, allocated bytes for code 24 (MethodHash=c1429fa2) for method Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedRecordEqualityOperatorBase:GetLexicalSortKey():Microsoft.CodeAnalysis.CSharp.Symbols.LexicalSortKey:this (FullOpts)
+; Total bytes of code 26, prolog size 0, PerfScore 4.50, instruction count 7, allocated bytes for code 26 (MethodHash=c1429fa2) for method Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedRecordEqualityOperatorBase:GetLexicalSortKey():Microsoft.CodeAnalysis.CSharp.Symbols.LexicalSortKey:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
realworld.run.windows.x64.checked.mch
-30 (-4.13%) : 12375.dasm - Microsoft.CodeAnalysis.EnumConstantHelper:OffsetValue(Microsoft.CodeAnalysis.ConstantValue,uint,byref):int (FullOpts)
@@ -77,9 +77,8 @@ G_M56284_IG04:        ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi
        ; gcrRegs -[rcx rsi]
        ; gcr arg pop 0
        mov      rsi, rax
-       mov      rcx, rsi
-       neg      rcx
-       dec      rcx
+       mov      rcx, -1
+       sub      rcx, rsi
        mov      edx, ebx
        call     [Microsoft.CodeAnalysis.EnumConstantHelper:CheckOverflow(ulong,uint):int]
        ; gcr arg pop 0
@@ -99,7 +98,7 @@ G_M56284_IG04:        ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi
        ; gcrRegs -[rax rdx]
        ; byrRegs -[rcx rdi]
        jmp      G_M56284_IG12
-						;; size=68 bbWeight=0.50 PerfScore 9.00
+						;; size=72 bbWeight=0.50 PerfScore 8.88
 G_M56284_IG05:        ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, byref
        ; gcrRegs +[rsi]
        ; byrRegs +[rdi]
@@ -110,10 +109,8 @@ G_M56284_IG05:        ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi
        ; gcrRegs -[rcx rsi]
        ; gcr arg pop 0
        mov      rsi, rax
-       mov      rcx, rsi
-       neg      rcx
-       mov      rdx, 0xD1FFAB1E
-       add      rcx, rdx
+       mov      rcx, 0xD1FFAB1E
+       sub      rcx, rsi
        mov      edx, ebx
        call     [Microsoft.CodeAnalysis.EnumConstantHelper:CheckOverflow(ulong,uint):int]
        ; gcr arg pop 0
@@ -133,7 +130,7 @@ G_M56284_IG05:        ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi
        ; gcrRegs -[rax rdx]
        ; byrRegs -[rcx rdi]
        jmp      G_M56284_IG12
-						;; size=79 bbWeight=0.50 PerfScore 9.12
+						;; size=73 bbWeight=0.50 PerfScore 8.88
 G_M56284_IG06:        ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, byref
        ; gcrRegs +[rsi]
        ; byrRegs +[rdi]
@@ -144,10 +141,8 @@ G_M56284_IG06:        ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi
        ; gcrRegs -[rcx rsi]
        ; gcr arg pop 0
        mov      esi, eax
-       mov      rcx, rsi
-       neg      rcx
-       mov      edx, 0xD1FFAB1E
-       add      rcx, rdx
+       mov      ecx, 0xD1FFAB1E
+       sub      rcx, rsi
        mov      edx, ebx
        call     [Microsoft.CodeAnalysis.EnumConstantHelper:CheckOverflow(ulong,uint):int]
        ; gcr arg pop 0
@@ -167,7 +162,7 @@ G_M56284_IG06:        ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi
        ; gcrRegs -[rax rdx]
        ; byrRegs -[rcx rdi]
        jmp      G_M56284_IG12
-						;; size=72 bbWeight=0.50 PerfScore 9.12
+						;; size=66 bbWeight=0.50 PerfScore 8.88
 G_M56284_IG07:        ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, byref
        ; gcrRegs +[rsi]
        ; byrRegs +[rdi]
@@ -178,9 +173,8 @@ G_M56284_IG07:        ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi
        ; gcrRegs -[rcx rsi]
        ; gcr arg pop 0
        movsxd   rsi, eax
-       mov      rcx, rsi
-       neg      rcx
-       add      rcx, 0xD1FFAB1E
+       mov      ecx, 0xD1FFAB1E
+       sub      rcx, rsi
        mov      edx, ebx
        call     [Microsoft.CodeAnalysis.EnumConstantHelper:CheckOverflow(ulong,uint):int]
        ; gcr arg pop 0
@@ -200,7 +194,7 @@ G_M56284_IG07:        ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi
        ; gcrRegs -[rax rdx]
        ; byrRegs -[rcx rdi]
        jmp      G_M56284_IG12
-						;; size=72 bbWeight=0.50 PerfScore 9.00
+						;; size=67 bbWeight=0.50 PerfScore 8.88
 G_M56284_IG08:        ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, byref
        ; gcrRegs +[rsi]
        ; byrRegs +[rdi]
@@ -211,9 +205,8 @@ G_M56284_IG08:        ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi
        ; gcrRegs -[rcx rsi]
        ; gcr arg pop 0
        mov      esi, eax
-       mov      rcx, rsi
-       neg      rcx
-       add      rcx, 0xFFFF
+       mov      ecx, 0xFFFF
+       sub      rcx, rsi
        mov      edx, ebx
        call     [Microsoft.CodeAnalysis.EnumConstantHelper:CheckOverflow(ulong,uint):int]
        ; gcr arg pop 0
@@ -234,7 +227,7 @@ G_M56284_IG08:        ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi
        ; gcrRegs -[rax rdx]
        ; byrRegs -[rcx rdi]
        jmp      G_M56284_IG12
-						;; size=75 bbWeight=0.50 PerfScore 9.12
+						;; size=70 bbWeight=0.50 PerfScore 9.00
 G_M56284_IG09:        ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, byref
        ; gcrRegs +[rsi]
        ; byrRegs +[rdi]
@@ -245,9 +238,8 @@ G_M56284_IG09:        ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi
        ; gcrRegs -[rcx rsi]
        ; gcr arg pop 0
        movsxd   rsi, eax
-       mov      rcx, rsi
-       neg      rcx
-       add      rcx, 0x7FFF
+       mov      ecx, 0x7FFF
+       sub      rcx, rsi
        mov      edx, ebx
        call     [Microsoft.CodeAnalysis.EnumConstantHelper:CheckOverflow(ulong,uint):int]
        ; gcr arg pop 0
@@ -268,7 +260,7 @@ G_M56284_IG09:        ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi
        ; gcrRegs -[rax rdx]
        ; byrRegs -[rcx rdi]
        jmp      G_M56284_IG12
-						;; size=77 bbWeight=0.50 PerfScore 9.12
+						;; size=72 bbWeight=0.50 PerfScore 9.00
 G_M56284_IG10:        ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, byref, isz
        ; gcrRegs +[rsi]
        ; byrRegs +[rdi]
@@ -279,9 +271,8 @@ G_M56284_IG10:        ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi
        ; gcrRegs -[rcx rsi]
        ; gcr arg pop 0
        mov      esi, eax
-       mov      rcx, rsi
-       neg      rcx
-       add      rcx, 255
+       mov      ecx, 255
+       sub      rcx, rsi
        mov      edx, ebx
        call     [Microsoft.CodeAnalysis.EnumConstantHelper:CheckOverflow(ulong,uint):int]
        ; gcr arg pop 0
@@ -302,7 +293,7 @@ G_M56284_IG10:        ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi
        ; gcrRegs -[rax rdx]
        ; byrRegs -[rcx rdi]
        jmp      SHORT G_M56284_IG12
-						;; size=68 bbWeight=0.50 PerfScore 9.12
+						;; size=63 bbWeight=0.50 PerfScore 9.00
 G_M56284_IG11:        ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, byref, isz
        ; gcrRegs +[rsi]
        ; byrRegs +[rdi]
@@ -313,9 +304,8 @@ G_M56284_IG11:        ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi
        ; gcrRegs -[rcx rsi]
        ; gcr arg pop 0
        movsxd   rsi, eax
-       mov      rcx, rsi
-       neg      rcx
-       add      rcx, 127
+       mov      ecx, 127
+       sub      rcx, rsi
        mov      edx, ebx
        call     [Microsoft.CodeAnalysis.EnumConstantHelper:CheckOverflow(ulong,uint):int]
        ; gcr arg pop 0
@@ -335,7 +325,7 @@ G_M56284_IG11:        ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi
        call     CORINFO_HELP_CHECKED_ASSIGN_REF
        ; gcrRegs -[rax rdx]
        ; byrRegs -[rcx rdi]
-						;; size=65 bbWeight=0.50 PerfScore 8.12
+						;; size=63 bbWeight=0.50 PerfScore 8.00
 G_M56284_IG12:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        mov      eax, r14d
 						;; size=3 bbWeight=1 PerfScore 0.25
@@ -386,7 +376,7 @@ RWD00  	dd	G_M56284_IG11 - G_M56284_IG02
        	dd	G_M56284_IG04 - G_M56284_IG02
 
 
-; Total bytes of code 727, prolog size 10, PerfScore 99.33, instruction count 203, allocated bytes for code 727 (MethodHash=c7d92423) for method Microsoft.CodeAnalysis.EnumConstantHelper:OffsetValue(Microsoft.CodeAnalysis.ConstantValue,uint,byref):int (FullOpts)
+; Total bytes of code 697, prolog size 10, PerfScore 98.08, instruction count 193, allocated bytes for code 697 (MethodHash=c7d92423) for method Microsoft.CodeAnalysis.EnumConstantHelper:OffsetValue(Microsoft.CodeAnalysis.ConstantValue,uint,byref):int (FullOpts)
 ; ============================================================
 
 Unwind Info:
-4 (-4.04%) : 2909.dasm - System.Threading.PortableThreadPool+GateThread+DelayHelper:GetNextDelay(int):uint:this (FullOpts)
@@ -29,9 +29,8 @@ G_M55382_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byr
        ; byrRegs +[rcx]
        mov      eax, edx
        sub      eax, dword ptr [rcx]
-       mov      r8d, eax
-       neg      r8d
-       add      r8d, 500
+       mov      r8d, 500
+       sub      r8d, eax
        mov      r10d, 1
        cmp      eax, 500
        mov      eax, r10d
@@ -39,7 +38,7 @@ G_M55382_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byr
        mov      r8d, dword ptr [rcx+0x08]
        test     r8d, r8d
        je       SHORT G_M55382_IG07
-						;; size=44 bbWeight=1 PerfScore 8.25
+						;; size=40 bbWeight=1 PerfScore 8.00
 G_M55382_IG03:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz
        sub      edx, dword ptr [rcx+0x04]
        cmp      edx, r8d
@@ -72,7 +71,7 @@ G_M55382_IG08:        ; bbWeight=0.50, epilog, nogc, extend
        ret      
 						;; size=1 bbWeight=0.50 PerfScore 0.50
 
-; Total bytes of code 99, prolog size 0, PerfScore 15.88, instruction count 31, allocated bytes for code 99 (MethodHash=422727a9) for method System.Threading.PortableThreadPool+GateThread+DelayHelper:GetNextDelay(int):uint:this (FullOpts)
+; Total bytes of code 95, prolog size 0, PerfScore 15.62, instruction count 30, allocated bytes for code 95 (MethodHash=422727a9) for method System.Threading.PortableThreadPool+GateThread+DelayHelper:GetNextDelay(int):uint:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
-12 (-3.27%) : 22.dasm - System.SpanHelpers:IndexOfNullCharacter(ptr):int (FullOpts)
@@ -96,12 +96,11 @@ G_M36857_IG09:        ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        add      rbx, 8
 						;; size=4 bbWeight=2 PerfScore 0.50
 G_M36857_IG10:        ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
-       mov      rax, rbx
-       neg      rax
-       add      rax, 0xD1FFAB1E
+       mov      eax, 0xD1FFAB1E
+       sub      rax, rbx
        and      rax, -16
        jle      SHORT G_M36857_IG15
-						;; size=18 bbWeight=4 PerfScore 8.00
+						;; size=14 bbWeight=4 PerfScore 7.00
 G_M36857_IG11:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        vxorps   ymm0, ymm0, ymm0
        vpcmpeqw ymm0, ymm0, ymmword ptr [rcx+2*rbx]
@@ -134,12 +133,11 @@ G_M36857_IG14:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
        ret      
 						;; size=10 bbWeight=1 PerfScore 3.25
 G_M36857_IG15:        ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
-       mov      rax, rbx
-       neg      rax
-       add      rax, 0xD1FFAB1E
+       mov      eax, 0xD1FFAB1E
+       sub      rax, rbx
        and      rax, -8
        jle      SHORT G_M36857_IG19
-						;; size=18 bbWeight=4 PerfScore 8.00
+						;; size=14 bbWeight=4 PerfScore 7.00
 G_M36857_IG16:        ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        vxorps   xmm0, xmm0, xmm0
        vpcmpeqw xmm0, xmm0, xmmword ptr [rcx+2*rbx]
@@ -159,10 +157,9 @@ G_M36857_IG18:        ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
 G_M36857_IG19:        ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        cmp      rbx, 0xD1FFAB1E
        jge      SHORT G_M36857_IG30
-       mov      rax, rbx
-       neg      rax
-       add      rax, 0xD1FFAB1E
-						;; size=21 bbWeight=4 PerfScore 8.00
+       mov      eax, 0xD1FFAB1E
+       sub      rax, rbx
+						;; size=17 bbWeight=4 PerfScore 7.00
 G_M36857_IG20:        ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        cmp      rax, 4
        jl       G_M36857_IG04
@@ -210,7 +207,7 @@ G_M36857_IG30:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        int3     
 						;; size=7 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 367, prolog size 6, PerfScore 419.13, instruction count 112, allocated bytes for code 367 (MethodHash=87b17006) for method System.SpanHelpers:IndexOfNullCharacter(ptr):int (FullOpts)
+; Total bytes of code 355, prolog size 6, PerfScore 416.13, instruction count 109, allocated bytes for code 355 (MethodHash=87b17006) for method System.SpanHelpers:IndexOfNullCharacter(ptr):int (FullOpts)
 ; ============================================================
 
 Unwind Info:
+7 (+6.60%) : 1633.dasm - System.SpanHelpers:g__SimdImpl|99_0[short,System.SpanHelpers+DontNegate`1[short],System.Runtime.Intrinsics.Vector128`1[short]](byref,short,int):int (FullOpts)
@@ -60,9 +60,10 @@ G_M49243_IG06:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
        vpcmpeqw k1, xmm1, xmm0
        kmovb    eax, k1
        lzcnt    eax, eax
-       neg      eax
-       add      eax, 31
-						;; size=19 bbWeight=0.50 PerfScore 2.50
+       mov      r8d, 31
+       sub      r8d, eax
+       mov      eax, r8d
+						;; size=26 bbWeight=0.50 PerfScore 2.62
 G_M49243_IG07:        ; bbWeight=0.50, epilog, nogc, extend
        ret      
 						;; size=1 bbWeight=0.50 PerfScore 0.50
@@ -77,7 +78,7 @@ G_M49243_IG09:        ; bbWeight=0.50, epilog, nogc, extend
        ret      
 						;; size=1 bbWeight=0.50 PerfScore 0.50
 
-; Total bytes of code 106, prolog size 0, PerfScore 54.75, instruction count 30, allocated bytes for code 110 (MethodHash=25f83fa4) for method System.SpanHelpers:<LastIndexOfValueType>g__SimdImpl|99_0[short,System.SpanHelpers+DontNegate`1[short],System.Runtime.Intrinsics.Vector128`1[short]](byref,short,int):int (FullOpts)
+; Total bytes of code 113, prolog size 0, PerfScore 54.88, instruction count 31, allocated bytes for code 117 (MethodHash=25f83fa4) for method System.SpanHelpers:<LastIndexOfValueType>g__SimdImpl|99_0[short,System.SpanHelpers+DontNegate`1[short],System.Runtime.Intrinsics.Vector128`1[short]](byref,short,int):int (FullOpts)
 ; ============================================================
 
 Unwind Info:
+7 (+6.25%) : 8356.dasm - System.SpanHelpers:g__SimdImpl|99_0[int,System.SpanHelpers+Negate`1[int],System.Runtime.Intrinsics.Vector128`1[int]](byref,int,int):int (FullOpts)
@@ -58,9 +58,10 @@ G_M1450_IG06:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000
        vpcmpfalsed k1, xmm1, xmm0
        kmovb    eax, k1
        lzcnt    eax, eax
-       neg      eax
-       add      eax, 31
-						;; size=20 bbWeight=0.50 PerfScore 3.75
+       mov      r8d, 31
+       sub      r8d, eax
+       mov      eax, r8d
+						;; size=27 bbWeight=0.50 PerfScore 3.88
 G_M1450_IG07:        ; bbWeight=0.50, epilog, nogc, extend
        ret      
 						;; size=1 bbWeight=0.50 PerfScore 0.50
@@ -75,7 +76,7 @@ G_M1450_IG09:        ; bbWeight=0.50, epilog, nogc, extend
        ret      
 						;; size=1 bbWeight=0.50 PerfScore 0.50
 
-; Total bytes of code 112, prolog size 0, PerfScore 59.50, instruction count 30, allocated bytes for code 120 (MethodHash=1dfafa55) for method System.SpanHelpers:<LastIndexOfValueType>g__SimdImpl|99_0[int,System.SpanHelpers+Negate`1[int],System.Runtime.Intrinsics.Vector128`1[int]](byref,int,int):int (FullOpts)
+; Total bytes of code 119, prolog size 0, PerfScore 59.62, instruction count 31, allocated bytes for code 127 (MethodHash=1dfafa55) for method System.SpanHelpers:<LastIndexOfValueType>g__SimdImpl|99_0[int,System.SpanHelpers+Negate`1[int],System.Runtime.Intrinsics.Vector128`1[int]](byref,int,int):int (FullOpts)
 ; ============================================================
 
 Unwind Info:
+26 (+5.84%) : 5284.dasm - System.Buffers.IndexOfAnyAsciiSearcher:LastIndexOfAny[System.Buffers.IndexOfAnyAsciiSearcher+DontNegate,System.Buffers.IndexOfAnyAsciiSearcher+Default,System.Buffers.SearchValues+FalseConst](byref,int,byref):int (FullOpts)
@@ -57,7 +57,7 @@
 ;  V46 tmp24        [V46,T14] (  3,  1.50)     int  ->  rax         "Inline return value spill temp"
 ;* V47 tmp25        [V47    ] (  0,  0   )  simd32  ->  zero-ref    "Inlining Arg" <System.Runtime.Intrinsics.Vector256`1[byte]>
 ;* V48 tmp26        [V48    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
-;  V49 tmp27        [V49,T09] (  4,  2   )     int  ->  rax         "Inline stloc first use temp"
+;  V49 tmp27        [V49,T09] (  4,  2   )     int  ->   r8         "Inline stloc first use temp"
 ;  V50 tmp28        [V50,T22] (  3,  3   )  simd16  ->  mm1         "spilled call-like call argument"
 ;* V51 tmp29        [V51    ] (  0,  0   )  simd16  ->  zero-ref    "spilled call-like call argument"
 ;* V52 tmp30        [V52    ] (  0,  0   )  simd16  ->  zero-ref    "Inline return value spill temp" <System.Runtime.Intrinsics.Vector128`1[byte]>
@@ -74,7 +74,7 @@
 ;* V63 tmp41        [V63    ] (  0,  0   )  simd16  ->  zero-ref    "Inline return value spill temp" <System.Runtime.Intrinsics.Vector128`1[byte]>
 ;  V64 tmp42        [V64,T15] (  3,  1.50)     int  ->  rax         "Inline return value spill temp"
 ;* V65 tmp43        [V65    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
-;  V66 tmp44        [V66,T10] (  4,  2   )     int  ->  rax         "Inline stloc first use temp"
+;  V66 tmp44        [V66,T10] (  4,  2   )     int  ->   r8         "Inline stloc first use temp"
 ;  V67 tmp45        [V67,T07] (  5,  5   )     int  ->  rax         "Single return block return value"
 ;  V68 cse0         [V68,T18] (  4,  5.50)  simd32  ->  mm1         hoist multi-def "CSE #01: aggressive"
 ;  V69 cse1         [V69,T19] (  4,  5.50)  simd32  ->  mm2         hoist multi-def "CSE #02: aggressive"
@@ -86,14 +86,14 @@ G_M58588_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
 G_M58588_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0102 {rcx r8}, byref
        ; byrRegs +[rcx r8]
        cmp      edx, 8
-       jl       G_M58588_IG10
+       jl       G_M58588_IG12
 						;; size=9 bbWeight=1 PerfScore 1.25
 G_M58588_IG03:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0102 {rcx r8}, byref, isz
        mov      eax, edx
        lea      rax, bword ptr [rcx+2*rax]
        ; byrRegs +[rax]
        cmp      edx, 16
-       jg       SHORT G_M58588_IG05
+       jg       G_M58588_IG06
        vmovups  xmm0, xmmword ptr [r8]
        lea      r8, bword ptr [rcx+0x10]
        lea      rdx, bword ptr [rax-0x10]
@@ -109,7 +109,7 @@ G_M58588_IG03:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0102 {rcx r8
        vpshufb  xmm1, xmm1, xmm2
        vpand    xmm0, xmm1, xmm0
        vptest   xmm0, xmm0
-       je       G_M58588_IG14
+       je       G_M58588_IG16
        vxorps   xmm1, xmm1, xmm1
        vpcmpeqb xmm0, xmm1, xmm0
        vpmovmskb eax, xmm0
@@ -117,30 +117,35 @@ G_M58588_IG03:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0102 {rcx r8
        not      eax
        movzx    rax, ax
        lzcnt    eax, eax
-       neg      eax
-       add      eax, 31
-       cmp      eax, 8
+       mov      r8d, 31
+       ; byrRegs -[r8]
+       sub      r8d, eax
+       cmp      r8d, 8
        jl       SHORT G_M58588_IG04
        sub      rdx, rcx
        ; byrRegs -[rdx]
        shr      rdx, 1
-       lea      eax, [rdx+rax-0x08]
-						;; size=128 bbWeight=0.50 PerfScore 17.83
+       lea      eax, [rdx+r8-0x08]
+       jmp      SHORT G_M58588_IG05
+						;; size=140 bbWeight=0.50 PerfScore 18.83
 G_M58588_IG04:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-       ; byrRegs -[rcx r8]
-       jmp      G_M58588_IG17
+       ; byrRegs -[rcx]
+       mov      eax, r8d
+						;; size=3 bbWeight=0.50 PerfScore 0.12
+G_M58588_IG05:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+       jmp      G_M58588_IG19
 						;; size=5 bbWeight=0.50 PerfScore 1.00
-G_M58588_IG05:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0103 {rax rcx r8}, byref, isz
+G_M58588_IG06:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0103 {rax rcx r8}, byref, isz
        ; byrRegs +[rax rcx r8]
        vmovups  ymm0, ymmword ptr [r8]
        cmp      edx, 32
-       jle      SHORT G_M58588_IG07
+       jle      SHORT G_M58588_IG08
        lea      rdx, bword ptr [rcx+0x40]
        ; byrRegs +[rdx]
        vbroadcastss ymm1, dword ptr [reloc @RWD00]
        vbroadcastsd ymm2, qword ptr [reloc @RWD12]
 						;; size=32 bbWeight=0.50 PerfScore 7.38
-G_M58588_IG06:        ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0007 {rax rcx rdx}, byref, isz
+G_M58588_IG07:        ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0007 {rax rcx rdx}, byref, isz
        ; byrRegs -[r8]
        add      rax, -64
        vmovups  ymm3, ymmword ptr [rax]
@@ -151,11 +156,11 @@ G_M58588_IG06:        ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0007 {rax rcx r
        vpshufb  ymm3, ymm2, ymm3
        vpand    ymm3, ymm3, ymm4
        vptest   ymm3, ymm3
-       jne      G_M58588_IG09
+       jne      G_M58588_IG11
        cmp      rax, rdx
-       ja       SHORT G_M58588_IG06
+       ja       SHORT G_M58588_IG07
 						;; size=52 bbWeight=4 PerfScore 84.67
-G_M58588_IG07:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0003 {rax rcx}, byref, isz
+G_M58588_IG08:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0003 {rax rcx}, byref, isz
        ; byrRegs -[rdx]
        lea      r8, bword ptr [rcx+0x20]
        ; byrRegs +[r8]
@@ -173,7 +178,7 @@ G_M58588_IG07:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0003 {rax rc
        vpshufb  ymm0, ymm2, ymm0
        vpand    ymm0, ymm0, ymm3
        vptest   ymm0, ymm0
-       je       G_M58588_IG14
+       je       G_M58588_IG16
        vpermq   ymm0, ymm0, -40
        vxorps   ymm1, ymm1, ymm1
        vpcmpeqb ymm0, ymm1, ymm0
@@ -181,20 +186,25 @@ G_M58588_IG07:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0003 {rax rc
        ; byrRegs -[rax]
        not      eax
        lzcnt    eax, eax
-       neg      eax
-       add      eax, 31
-       cmp      eax, 16
-       jl       SHORT G_M58588_IG08
+       mov      r8d, 31
+       ; byrRegs -[r8]
+       sub      r8d, eax
+       cmp      r8d, 16
+       jl       SHORT G_M58588_IG09
        sub      rdx, rcx
        ; byrRegs -[rdx]
        shr      rdx, 1
-       lea      eax, [rdx+rax-0x10]
-						;; size=119 bbWeight=0.50 PerfScore 20.38
-G_M58588_IG08:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
-       ; byrRegs -[rcx r8]
-       jmp      SHORT G_M58588_IG17
+       lea      eax, [rdx+r8-0x10]
+       jmp      SHORT G_M58588_IG10
+						;; size=127 bbWeight=0.50 PerfScore 21.38
+G_M58588_IG09:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+       ; byrRegs -[rcx]
+       mov      eax, r8d
+						;; size=3 bbWeight=0.50 PerfScore 0.12
+G_M58588_IG10:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+       jmp      SHORT G_M58588_IG19
 						;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M58588_IG09:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0003 {rax rcx}, byref, isz
+G_M58588_IG11:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0003 {rax rcx}, byref, isz
        ; byrRegs +[rax rcx]
        sub      rax, rcx
        ; byrRegs -[rax]
@@ -208,46 +218,46 @@ G_M58588_IG09:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0003 {rax rc
        lzcnt    ecx, ecx
        sub      eax, ecx
        add      eax, 31
-       jmp      SHORT G_M58588_IG17
+       jmp      SHORT G_M58588_IG19
 						;; size=37 bbWeight=0.50 PerfScore 5.67
-G_M58588_IG10:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0102 {rcx r8}, byref, isz
+G_M58588_IG12:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0102 {rcx r8}, byref, isz
        ; byrRegs +[rcx r8]
        dec      edx
-       js       SHORT G_M58588_IG14
+       js       SHORT G_M58588_IG16
 						;; size=4 bbWeight=0.50 PerfScore 0.62
-G_M58588_IG11:        ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0102 {rcx r8}, byref, isz
+G_M58588_IG13:        ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0102 {rcx r8}, byref, isz
        movsxd   rax, edx
        movzx    rax, word  ptr [rcx+2*rax]
        cmp      byte  ptr [r8], r8b
        lea      r10, bword ptr [r8+0x20]
        ; byrRegs +[r10]
        cmp      eax, 256
-       jge      SHORT G_M58588_IG13
+       jge      SHORT G_M58588_IG15
 						;; size=21 bbWeight=4 PerfScore 28.00
-G_M58588_IG12:        ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0502 {rcx r8 r10}, byref, isz
+G_M58588_IG14:        ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0502 {rcx r8 r10}, byref, isz
        mov      r9d, eax
        sar      r9d, 5
        mov      r10d, dword ptr [r10+4*r9]
        ; byrRegs -[r10]
        bt       r10d, eax
-       jb       SHORT G_M58588_IG16
+       jb       SHORT G_M58588_IG18
 						;; size=17 bbWeight=2 PerfScore 8.50
-G_M58588_IG13:        ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0102 {rcx r8}, byref, isz
+G_M58588_IG15:        ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0102 {rcx r8}, byref, isz
        dec      edx
-       jns      SHORT G_M58588_IG11
+       jns      SHORT G_M58588_IG13
 						;; size=4 bbWeight=4 PerfScore 5.00
-G_M58588_IG14:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M58588_IG16:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        ; byrRegs -[rcx r8]
        mov      eax, -1
 						;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M58588_IG15:        ; bbWeight=0.50, epilog, nogc, extend
+G_M58588_IG17:        ; bbWeight=0.50, epilog, nogc, extend
        vzeroupper 
        ret      
 						;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M58588_IG16:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M58588_IG18:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
        mov      eax, edx
 						;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M58588_IG17:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M58588_IG19:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
        vzeroupper 
        ret      
 						;; size=4 bbWeight=0.50 PerfScore 1.00
@@ -257,7 +267,7 @@ RWD12  	dq	8040201008040201h
 RWD20  	dq	8040201008040201h
 
 
-; Total bytes of code 445, prolog size 0, PerfScore 183.54, instruction count 116, allocated bytes for code 445 (MethodHash=00051b23) for method System.Buffers.IndexOfAnyAsciiSearcher:LastIndexOfAny[System.Buffers.IndexOfAnyAsciiSearcher+DontNegate,System.Buffers.IndexOfAnyAsciiSearcher+Default,System.Buffers.SearchValues+FalseConst](byref,int,byref):int (FullOpts)
+; Total bytes of code 471, prolog size 0, PerfScore 185.79, instruction count 118, allocated bytes for code 471 (MethodHash=00051b23) for method System.Buffers.IndexOfAnyAsciiSearcher:LastIndexOfAny[System.Buffers.IndexOfAnyAsciiSearcher+DontNegate,System.Buffers.IndexOfAnyAsciiSearcher+Default,System.Buffers.SearchValues+FalseConst](byref,int,byref):int (FullOpts)
 ; ============================================================
 
 Unwind Info:
smoke_tests.nativeaot.windows.x64.checked.mch
-1 (-4.55%) : 27764.dasm - System.Number+BigInteger:CountSignificantBits(uint):int (FullOpts)
@@ -21,14 +21,14 @@ G_M26981_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        mov      edx, 32
        test     ecx, ecx
        cmove    eax, edx
-       neg      eax
-       add      eax, 32
-						;; size=21 bbWeight=1 PerfScore 3.50
+       sub      edx, eax
+       mov      eax, edx
+						;; size=20 bbWeight=1 PerfScore 3.50
 G_M26981_IG03:        ; bbWeight=1, epilog, nogc, extend
        ret      
 						;; size=1 bbWeight=1 PerfScore 1.00
 
-; Total bytes of code 22, prolog size 0, PerfScore 4.50, instruction count 8, allocated bytes for code 22 (MethodHash=960f969a) for method System.Number+BigInteger:CountSignificantBits(uint):int (FullOpts)
+; Total bytes of code 21, prolog size 0, PerfScore 4.50, instruction count 8, allocated bytes for code 21 (MethodHash=960f969a) for method System.Number+BigInteger:CountSignificantBits(uint):int (FullOpts)
 ; ============================================================
 
 Unwind Info:
-20 (-4.44%) : 13484.dasm - System.SpanHelpers:IndexOfNullCharacter(ptr):int (FullOpts)
@@ -83,12 +83,11 @@ G_M36857_IG05:        ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
 G_M36857_IG06:        ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        cmp      rsi, 0xD1FFAB1E
        jge      G_M36857_IG29
-       mov      rcx, rsi
-       neg      rcx
-       add      rcx, 0xD1FFAB1E
+       mov      ecx, 0xD1FFAB1E
+       sub      rcx, rsi
        cmp      rcx, 8
        jge      SHORT G_M36857_IG08
-						;; size=32 bbWeight=4 PerfScore 13.00
+						;; size=27 bbWeight=4 PerfScore 12.00
 G_M36857_IG07:        ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        lea      rcx, gword ptr [(reloc)]
        ; gcrRegs +[rcx]
@@ -121,12 +120,11 @@ G_M36857_IG11:        ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        add      rsi, 8
 						;; size=4 bbWeight=2 PerfScore 0.50
 G_M36857_IG12:        ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
-       mov      rdi, rsi
-       neg      rdi
-       add      rdi, 0xD1FFAB1E
+       mov      edi, 0xD1FFAB1E
+       sub      rdi, rsi
        and      rdi, -16
        jle      SHORT G_M36857_IG16
-						;; size=19 bbWeight=4 PerfScore 8.00
+						;; size=14 bbWeight=4 PerfScore 7.00
 G_M36857_IG13:        ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        cmp      rdi, 16
        jge      SHORT G_M36857_IG15
@@ -152,12 +150,11 @@ G_M36857_IG15:        ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        jg       SHORT G_M36857_IG13
 						;; size=34 bbWeight=16 PerfScore 149.33
 G_M36857_IG16:        ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
-       mov      rdi, rsi
-       neg      rdi
-       add      rdi, 0xD1FFAB1E
+       mov      edi, 0xD1FFAB1E
+       sub      rdi, rsi
        and      rdi, -8
        jle      SHORT G_M36857_IG19
-						;; size=19 bbWeight=4 PerfScore 8.00
+						;; size=14 bbWeight=4 PerfScore 7.00
 G_M36857_IG17:        ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        cmp      rdi, 8
        jge      SHORT G_M36857_IG18
@@ -180,10 +177,9 @@ G_M36857_IG18:        ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
 G_M36857_IG19:        ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        cmp      rsi, 0xD1FFAB1E
        jge      SHORT G_M36857_IG29
-       mov      rdi, rsi
-       neg      rdi
-       add      rdi, 0xD1FFAB1E
-						;; size=22 bbWeight=4 PerfScore 8.00
+       mov      edi, 0xD1FFAB1E
+       sub      rdi, rsi
+						;; size=17 bbWeight=4 PerfScore 7.00
 G_M36857_IG20:        ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        cmp      rdi, 4
        jl       G_M36857_IG04
@@ -243,7 +239,7 @@ G_M36857_IG29:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
        int3     
 						;; size=6 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 450, prolog size 10, PerfScore 467.79, instruction count 128, allocated bytes for code 450 (MethodHash=87b17006) for method System.SpanHelpers:IndexOfNullCharacter(ptr):int (FullOpts)
+; Total bytes of code 430, prolog size 10, PerfScore 463.79, instruction count 124, allocated bytes for code 430 (MethodHash=87b17006) for method System.SpanHelpers:IndexOfNullCharacter(ptr):int (FullOpts)
 ; ============================================================
 
 Unwind Info:
-1 (-3.85%) : 28233.dasm - System.Number+BigInteger:CountSignificantBits(ulong):int (FullOpts)
@@ -21,14 +21,14 @@ G_M33308_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        mov      edx, 64
        test     rcx, rcx
        cmove    rax, rdx
-       neg      eax
-       add      eax, 64
-						;; size=25 bbWeight=1 PerfScore 3.50
+       sub      edx, eax
+       mov      eax, edx
+						;; size=24 bbWeight=1 PerfScore 3.50
 G_M33308_IG03:        ; bbWeight=1, epilog, nogc, extend
        ret      
 						;; size=1 bbWeight=1 PerfScore 1.00
 
-; Total bytes of code 26, prolog size 0, PerfScore 4.50, instruction count 8, allocated bytes for code 26 (MethodHash=6a147de3) for method System.Number+BigInteger:CountSignificantBits(ulong):int (FullOpts)
+; Total bytes of code 25, prolog size 0, PerfScore 4.50, instruction count 8, allocated bytes for code 25 (MethodHash=6a147de3) for method System.Number+BigInteger:CountSignificantBits(ulong):int (FullOpts)
 ; ============================================================
 
 Unwind Info:
+8 (+5.63%) : 18333.dasm - System.Number:TryUInt32ToBinaryStr[char](uint,int,System.Span`1[char],byref):bool (FullOpts)
@@ -16,7 +16,7 @@
 ;  V06 loc2         [V06    ] (  2,  1   )   byref  ->  [rsp+0x20]  must-init pinned
 ;  V07 OutArgs      [V07    ] (  1,  1   )  struct (32) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <UNNAMED>
 ;  V08 tmp1         [V08,T10] (  4,  3   )     int  ->  rax         "Inline return value spill temp"
-;  V09 tmp2         [V09,T07] (  3,  6   )     int  ->  rax         "Inlining Arg"
+;  V09 tmp2         [V09,T07] (  3,  6   )     int  ->  r10         "Inlining Arg"
 ;* V10 tmp3         [V10    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[char]>
 ;  V11 tmp4         [V11,T02] (  4, 25   )     int  ->  rdx         "Inlining Arg"
 ;  V12 tmp5         [V12,T03] (  2, 16   )     int  ->  rdx         "dup spill"
@@ -46,13 +46,14 @@ G_M18913_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0300 {r8 r9}, b
        cmovle   edx, eax
        xor      eax, eax
        lzcnt    eax, ecx
-       neg      eax
-       add      eax, 32
-       cmp      edx, eax
+       mov      r10d, 32
+       sub      r10d, eax
+       cmp      edx, r10d
+       mov      eax, r10d
        cmovge   eax, edx
        cmp      eax, dword ptr [r8+0x08]
        jg       SHORT G_M18913_IG10
-						;; size=32 bbWeight=1 PerfScore 8.00
+						;; size=40 bbWeight=1 PerfScore 8.25
 G_M18913_IG03:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0300 {r8 r9}, byref, isz
        mov      dword ptr [r9], eax
        mov      r8, bword ptr [r8]
@@ -109,7 +110,7 @@ G_M18913_IG11:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
        ret      
 						;; size=5 bbWeight=0.50 PerfScore 0.62
 
-; Total bytes of code 142, prolog size 11, PerfScore 34.62, instruction count 44, allocated bytes for code 142 (MethodHash=da43b61e) for method System.Number:TryUInt32ToBinaryStr[char](uint,int,System.Span`1[char],byref):bool (FullOpts)
+; Total bytes of code 150, prolog size 11, PerfScore 34.88, instruction count 45, allocated bytes for code 150 (MethodHash=da43b61e) for method System.Number:TryUInt32ToBinaryStr[char](uint,int,System.Span`1[char],byref):bool (FullOpts)
 ; ============================================================
 
 Unwind Info:
+7 (+5.60%) : 18669.dasm - System.SpanHelpers:g__SimdImpl|99_0[short,System.SpanHelpers+DontNegate`1[short],System.Runtime.Intrinsics.Vector512`1[short]](byref,short,int):int (FullOpts)
@@ -54,9 +54,10 @@ G_M33814_IG06:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
        vpcmpeqw k1, zmm1, zmm0
        kmovd    eax, k1
        lzcnt    rax, rax
-       neg      eax
-       add      eax, 63
-						;; size=20 bbWeight=0.50 PerfScore 2.50
+       mov      r8d, 63
+       sub      r8d, eax
+       mov      eax, r8d
+						;; size=27 bbWeight=0.50 PerfScore 2.62
 G_M33814_IG07:        ; bbWeight=0.50, epilog, nogc, extend
        vzeroupper 
        ret      
@@ -73,7 +74,7 @@ G_M33814_IG09:        ; bbWeight=0.50, epilog, nogc, extend
        ret      
 						;; size=4 bbWeight=0.50 PerfScore 1.00
 
-; Total bytes of code 125, prolog size 0, PerfScore 48.25, instruction count 33, allocated bytes for code 135 (MethodHash=d4aa7be9) for method System.SpanHelpers:<LastIndexOfValueType>g__SimdImpl|99_0[short,System.SpanHelpers+DontNegate`1[short],System.Runtime.Intrinsics.Vector512`1[short]](byref,short,int):int (FullOpts)
+; Total bytes of code 132, prolog size 0, PerfScore 48.38, instruction count 34, allocated bytes for code 142 (MethodHash=d4aa7be9) for method System.SpanHelpers:<LastIndexOfValueType>g__SimdImpl|99_0[short,System.SpanHelpers+DontNegate`1[short],System.Runtime.Intrinsics.Vector512`1[short]](byref,short,int):int (FullOpts)
 ; ============================================================
 
 Unwind Info:
+8 (+5.52%) : 18330.dasm - System.Number:TryUInt64ToBinaryStr[char](ulong,int,System.Span`1[char],byref):bool (FullOpts)
@@ -16,7 +16,7 @@
 ;  V06 loc2         [V06    ] (  2,  1   )   byref  ->  [rsp+0x20]  must-init pinned
 ;  V07 OutArgs      [V07    ] (  1,  1   )  struct (32) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <UNNAMED>
 ;  V08 tmp1         [V08,T10] (  4,  3   )     int  ->  rax         "Inline return value spill temp"
-;  V09 tmp2         [V09,T07] (  3,  6   )     int  ->  rax         "Inlining Arg"
+;  V09 tmp2         [V09,T07] (  3,  6   )     int  ->  r10         "Inlining Arg"
 ;* V10 tmp3         [V10    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[char]>
 ;  V11 tmp4         [V11,T02] (  4, 25   )     int  ->  rdx         "Inlining Arg"
 ;  V12 tmp5         [V12,T03] (  2, 16   )     int  ->  rdx         "dup spill"
@@ -46,13 +46,14 @@ G_M315_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0300 {r8 r9}, byr
        cmovle   edx, eax
        xor      eax, eax
        lzcnt    rax, rcx
-       neg      eax
-       add      eax, 64
-       cmp      edx, eax
+       mov      r10d, 64
+       sub      r10d, eax
+       cmp      edx, r10d
+       mov      eax, r10d
        cmovge   eax, edx
        cmp      eax, dword ptr [r8+0x08]
        jg       SHORT G_M315_IG10
-						;; size=33 bbWeight=1 PerfScore 8.00
+						;; size=41 bbWeight=1 PerfScore 8.25
 G_M315_IG03:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0300 {r8 r9}, byref, isz
        mov      dword ptr [r9], eax
        mov      r8, bword ptr [r8]
@@ -109,7 +110,7 @@ G_M315_IG11:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        ret      
 						;; size=5 bbWeight=0.50 PerfScore 0.62
 
-; Total bytes of code 145, prolog size 11, PerfScore 34.62, instruction count 44, allocated bytes for code 145 (MethodHash=83b5fec4) for method System.Number:TryUInt64ToBinaryStr[char](ulong,int,System.Span`1[char],byref):bool (FullOpts)
+; Total bytes of code 153, prolog size 11, PerfScore 34.88, instruction count 45, allocated bytes for code 153 (MethodHash=83b5fec4) for method System.Number:TryUInt64ToBinaryStr[char](ulong,int,System.Span`1[char],byref):bool (FullOpts)
 ; ============================================================
 
 Unwind Info:
Details

Size improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
aspnet2.run.windows.x64.checked.mch 325 57 73 195 -263 +382
benchmarks.run.windows.x64.checked.mch 168 38 60 70 -152 +279
benchmarks.run_pgo.windows.x64.checked.mch 663 113 302 248 -195 +1,350
benchmarks.run_pgo_optrepeat.windows.x64.checked.mch 168 38 60 70 -152 +283
coreclr_tests.run.windows.x64.checked.mch 1,738 428 453 857 -2,223 +1,412
libraries.crossgen2.windows.x64.checked.mch 420 117 172 131 -495 +670
libraries.pmi.windows.x64.checked.mch 349 78 117 154 -327 +379
libraries_tests.run.windows.x64.Release.mch 6,604 1,140 1,959 3,505 -5,432 +10,649
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch 1,218 404 374 440 -1,251 +3,828
realworld.run.windows.x64.checked.mch 210 20 127 63 -107 +1,290
smoke_tests.nativeaot.windows.x64.checked.mch 248 92 90 66 -314 +307
12,111 2,525 3,787 5,799 -10,911 +20,829

PerfScore improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same PerfScore Improvements (PerfScore) Regressions (PerfScore) PerfScore Overall in FullOpts
aspnet2.run.windows.x64.checked.mch 325 58 138 129 -0.41% +0.43% +0.0011%
benchmarks.run.windows.x64.checked.mch 168 67 75 26 -0.39% +0.26% -0.0001%
benchmarks.run_pgo.windows.x64.checked.mch 663 97 241 325 -0.48% +0.42% +0.0013%
benchmarks.run_pgo_optrepeat.windows.x64.checked.mch 168 67 76 25 -0.39% +0.26% -0.0001%
coreclr_tests.run.windows.x64.checked.mch 1,738 468 591 679 -0.31% +0.39% +0.0004%
libraries.crossgen2.windows.x64.checked.mch 420 151 223 46 -0.87% +1.39% +0.0006%
libraries.pmi.windows.x64.checked.mch 349 127 194 28 -0.76% +0.76% +0.0002%
libraries_tests.run.windows.x64.Release.mch 6,604 1,055 2,432 3,117 -0.25% +0.26% +0.0016%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch 1,218 754 335 129 -0.48% +0.45% -0.0006%
realworld.run.windows.x64.checked.mch 210 48 142 20 -0.33% +0.20% +0.0004%
smoke_tests.nativeaot.windows.x64.checked.mch 248 121 77 50 -0.66% +0.28% -0.0017%

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
aspnet2.run.windows.x64.checked.mch 49,023 16,098 32,925 0 (0.00%) 0 (0.00%)
benchmarks.run.windows.x64.checked.mch 50,244 1,644 48,600 0 (0.00%) 0 (0.00%)
benchmarks.run_pgo.windows.x64.checked.mch 96,617 54,331 42,286 0 (0.00%) 0 (0.00%)
benchmarks.run_pgo_optrepeat.windows.x64.checked.mch 51,572 1,644 49,928 0 (0.00%) 0 (0.00%)
coreclr_tests.run.windows.x64.checked.mch 557,548 340,312 217,236 0 (0.00%) 0 (0.00%)
libraries.crossgen2.windows.x64.checked.mch 280,273 22 280,251 0 (0.00%) 0 (0.00%)
libraries.pmi.windows.x64.checked.mch 246,120 7 246,113 0 (0.00%) 0 (0.00%)
libraries_tests.run.windows.x64.Release.mch 766,369 535,378 230,991 0 (0.00%) 0 (0.00%)
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch 380,613 23,780 356,833 0 (0.00%) 0 (0.00%)
realworld.run.windows.x64.checked.mch 29,522 40 29,482 0 (0.00%) 0 (0.00%)
smoke_tests.nativeaot.windows.x64.checked.mch 34,162 16 34,146 0 (0.00%) 0 (0.00%)
2,542,063 973,272 1,568,791 0 (0.00%) 0 (0.00%)

jit-analyze output

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