Skip to content

Instantly share code, notes, and snippets.

@c272
Created September 7, 2023 16:31
Show Gist options
  • Save c272/944721d2d083660e0ba7ec9fddb24de4 to your computer and use it in GitHub Desktop.
Save c272/944721d2d083660e0ba7ec9fddb24de4 to your computer and use it in GitHub Desktop.
SPMI Diffs for Long Multiply

Diffs are based on 2,658,668 contexts (955,888 MinOpts, 1,702,780 FullOpts).

Overall (-8,572 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.arm64.checked.mch 11,040,056 -308
benchmarks.run_pgo.windows.arm64.checked.mch 32,419,132 -128
benchmarks.run_tiered.windows.arm64.checked.mch 15,047,964 -56
coreclr_tests.run.windows.arm64.checked.mch 488,402,612 -816
libraries.crossgen2.windows.arm64.checked.mch 67,519,920 -468
libraries.pmi.windows.arm64.checked.mch 79,716,068 -848
libraries_tests.pmi.windows.arm64.checked.mch 156,155,168 -580
libraries_tests.run.windows.arm64.Release.mch 306,540,872 -2,656
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch 164,738,952 -804
realworld.run.windows.arm64.checked.mch 13,608,356 -1,808
smoke_tests.nativeaot.windows.arm64.checked.mch 3,839,112 -100
FullOpts (-8,572 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.arm64.checked.mch 10,519,232 -308
benchmarks.run_pgo.windows.arm64.checked.mch 16,610,060 -128
benchmarks.run_tiered.windows.arm64.checked.mch 3,851,984 -56
coreclr_tests.run.windows.arm64.checked.mch 150,251,236 -816
libraries.crossgen2.windows.arm64.checked.mch 67,518,284 -468
libraries.pmi.windows.arm64.checked.mch 77,967,224 -848
libraries_tests.pmi.windows.arm64.checked.mch 147,571,520 -580
libraries_tests.run.windows.arm64.Release.mch 106,192,224 -2,656
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch 148,469,880 -804
realworld.run.windows.arm64.checked.mch 12,610,252 -1,808
smoke_tests.nativeaot.windows.arm64.checked.mch 3,839,004 -100
Example diffs
benchmarks.run.windows.arm64.checked.mch
-8 (-5.26%) : 1320.dasm - System.TimeSpan:.ctor(int,int,int,int,int):this (FullOpts)
@@ -27,13 +27,11 @@ G_M3256_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
             ; byrRegs +[x0]
             movz    w6, #0xD1FFAB1E
             movk    w6, #1 LSL #16
-            smull   x1, w1, w6
-            mov     w6, #0xD1FFAB1E
-            smull   x2, w2, w6
-            add     x1, x1, x2
+            mov     w7, #0xD1FFAB1E
+            smull   x2, w2, w7
+            smaddl  x1, w1, w6, x2
             mov     w2, #60
-            smull   x2, w3, w2
-            add     x1, x1, x2
+            smaddl  x1, w3, w2, x1
             add     x1, x1, w4, SXTW
             mov     x2, #0xD1FFAB1E
             sxtw    x3, w5
@@ -53,7 +51,7 @@ G_M3256_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
             mov     x2, #10
             mul     x1, x1, x2
             str     x1, [x0]
-						;; size=112 bbWeight=1 PerfScore 27.50
+						;; size=104 bbWeight=1 PerfScore 32.50
 G_M3256_IG03:        ; bbWeight=1, epilog, nogc, extend
             ldp     fp, lr, [sp], #0x10
             ret     lr
@@ -68,7 +66,7 @@ G_M3256_IG04:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}
             brk_windows #0
 						;; size=24 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 152, prolog size 8, PerfScore 46.20, instruction count 38, allocated bytes for code 152 (MethodHash=c4dbf347) for method System.TimeSpan:.ctor(int,int,int,int,int):this (FullOpts)
+; Total bytes of code 144, prolog size 8, PerfScore 50.40, instruction count 36, allocated bytes for code 144 (MethodHash=c4dbf347) for method System.TimeSpan:.ctor(int,int,int,int,int):this (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -79,7 +77,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 38 (0x00026) Actual length = 152 (0x000098)
+  Function Length   : 36 (0x00024) Actual length = 144 (0x000090)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-24 (-2.84%) : 8694.dasm - System.Decimal+DecCalc:VarDecMul(byref,byref) (FullOpts)
@@ -19,7 +19,7 @@
 ;  V08 loc6         [V08,T09] (  7,  3.50)    long  ->   x1        
 ;  V09 loc7         [V09,T11] (  3,  1.50)    long  ->   x3        
 ;* V10 loc8         [V10    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op <System.ReadOnlySpan`1[ulong]>
-;  V11 loc9         [V11,T04] ( 17,  8.50)    long  ->   x1        
+;  V11 loc9         [V11,T04] ( 17,  8.50)    long  ->   x0        
 ;  V12 loc10        [V12,T05] ( 14,  7   )     int  ->   x4        
 ;# V13 OutArgs      [V13    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V14 tmp1         [V14    ] (  0,  0   )     int  ->  zero-ref    "impAppendStmt"
@@ -68,7 +68,7 @@
 ;* V57 tmp44        [V57    ] (  0,  0   )     int  ->  zero-ref    "field V35._length (fldOffset=0x8)" P-INDEP
 ;  V58 cse0         [V58,T12] (  3,  1.50)     int  ->   x1         "CSE - moderate"
 ;  V59 cse1         [V59,T13] (  3,  1.50)     int  ->   x1         "CSE - moderate"
-;  V60 cse2         [V60,T14] (  3,  1.50)     int  ->   x1         "CSE - moderate"
+;  V60 cse2         [V60,T14] (  3,  1.50)     int  ->   x0         "CSE - moderate"
 ;  V61 cse3         [V61,T15] (  3,  1.50)     int  ->   x3         "CSE - moderate"
 ;
 ; Lcl frame size = 32
@@ -152,19 +152,18 @@ G_M55226_IG08:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
             str     w0, [fp, #0x18]	// [V05 loc3]
             ldr     w1, [x19, #0x08]
             ldr     w3, [x20, #0x0C]
-            umull   x1, w1, w3
-            add     x0, x1, x0,  LSR #32
+            lsr     x0, x0, #32
+            smaddl  x0, w1, w3, x0
             str     w0, [fp, #0x1C]	// [V05 loc3+0x04]
             lsr     x0, x0, #32
             ldr     w1, [x20, #0x04]
             cbz     w1, G_M55226_IG10
             ldr     w3, [x19, #0x08]
-            umull   x1, w3, w1
-            add     x0, x1, x0
+            smaddl  x0, w3, w1, x0
             mov     x1, #0xD1FFAB1E
             cmp     x0, x1
             bls     G_M55226_IG10
-						;; size=72 bbWeight=0.50 PerfScore 15.75
+						;; size=68 bbWeight=0.50 PerfScore 18.50
 G_M55226_IG09:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
             str     x0, [fp, #0x20]	// [V05 loc3+0x08]
             mov     w1, #3
@@ -186,20 +185,19 @@ G_M55226_IG11:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19
             str     w0, [fp, #0x18]	// [V05 loc3]
             ldr     w1, [x20, #0x08]
             ldr     w3, [x19, #0x0C]
-            umull   x1, w1, w3
-            add     x0, x1, x0,  LSR #32
+            lsr     x0, x0, #32
+            smaddl  x0, w1, w3, x0
             str     w0, [fp, #0x1C]	// [V05 loc3+0x04]
             lsr     x0, x0, #32
             ldr     w1, [x19, #0x04]
             cbz     w1, G_M55226_IG10
             ldr     w3, [x20, #0x08]
-            umull   x1, w3, w1
-            add     x0, x1, x0
+            smaddl  x0, w3, w1, x0
             mov     x1, #0xD1FFAB1E
             cmp     x0, x1
             bls     G_M55226_IG10
             b       G_M55226_IG09
-						;; size=92 bbWeight=0.50 PerfScore 20.00
+						;; size=88 bbWeight=0.50 PerfScore 22.75
 G_M55226_IG12:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
             ldr     w0, [x19, #0x08]
             ldr     w1, [x20, #0x08]
@@ -207,71 +205,67 @@ G_M55226_IG12:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19
             str     w0, [fp, #0x18]	// [V05 loc3]
             ldr     w1, [x19, #0x08]
             ldr     w3, [x20, #0x0C]
-            umull   x1, w1, w3
-            add     x1, x1, x0,  LSR #32
-            ldr     w0, [x19, #0x0C]
+            lsr     x0, x0, #32
+            smaddl  x0, w1, w3, x0
+            ldr     w1, [x19, #0x0C]
             ldr     w3, [x20, #0x08]
-            umull   x0, w0, w3
-            add     x0, x0, x1
-            str     w0, [fp, #0x1C]	// [V05 loc3+0x04]
-            lsr     x3, x0, #32
-            lsr     x4, x0, #32
+            smaddl  x1, w1, w3, x0
+            str     w1, [fp, #0x1C]	// [V05 loc3+0x04]
+            lsr     x3, x1, #32
+            lsr     x4, x1, #32
             orr     x4, x4, #0xD1FFAB1E
-            cmp     x0, x1
-            csel    x1, x3, x4, hs
-            ldr     w0, [x19, #0x0C]
+            cmp     x1, x0
+            csel    x0, x3, x4, hs
+            ldr     w1, [x19, #0x0C]
             ldr     w3, [x20, #0x0C]
-            umull   x0, w0, w3
-            add     x0, x0, x1
+            smaddl  x1, w1, w3, x0
             ldr     w3, [x19, #0x04]
-            ldr     w1, [x20, #0x04]
-            orr     w4, w3, w1
+            ldr     w0, [x20, #0x04]
+            orr     w4, w3, w0
             cbz     w4, G_M55226_IG13
             ldr     w4, [x19, #0x08]
-            umull   x1, w4, w1
-            add     x0, x0, x1
+            umull   x0, w4, w0
+            add     x1, x1, x0
             mov     w4, wzr
             mov     w5, #1
-            cmp     x0, x1
+            cmp     x1, x0
             csel    w4, w4, w5, hs
-            ldr     w1, [x20, #0x08]
-            umull   x1, w3, w1
-            add     x0, x0, x1
-            str     w0, [fp, #0x20]	// [V05 loc3+0x08]
+            ldr     w0, [x20, #0x08]
+            umull   x0, w3, w0
+            add     x1, x1, x0
+            str     w1, [fp, #0x20]	// [V05 loc3+0x08]
             add     w3, w4, #1
-            cmp     x0, x1
+            cmp     x1, x0
             csel    w4, w4, w3, hs
-            mov     w1, w4
-            lsl     x4, x1, #32
-            orr     x1, x4, x0,  LSR #32
-            ldr     w0, [x19, #0x0C]
+            mov     w0, w4
+            lsl     x4, x0, #32
+            orr     x0, x4, x1,  LSR #32
+            ldr     w1, [x19, #0x0C]
             ldr     w3, [x20, #0x04]
-            umull   x0, w0, w3
-            add     x0, x0, x1
+            smaddl  x1, w1, w3, x0
             mov     w4, wzr
-            cmp     x0, x1
+            cmp     x1, x0
             csel    w4, w4, w5, hs
-            ldr     w1, [x19, #0x04]
+            ldr     w0, [x19, #0x04]
             ldr     w3, [x20, #0x0C]
-            umull   x1, w1, w3
-            add     x0, x0, x1
-            str     w0, [fp, #0x24]	// [V05 loc3+0x0c]
+            umull   x0, w0, w3
+            add     x1, x1, x0
+            str     w1, [fp, #0x24]	// [V05 loc3+0x0c]
             add     w3, w4, #1
-            cmp     x0, x1
+            cmp     x1, x0
             csel    w4, w4, w3, hs
-            ldr     w1, [x19, #0x04]
+            ldr     w0, [x19, #0x04]
             ldr     w3, [x20, #0x04]
-            umull   x1, w1, w3
-            mov     w3, w4
-            lsl     x3, x3, #32
-            orr     x0, x3, x0,  LSR #32
-            add     x0, x1, x0
+            mov     w4, w4
+            lsl     x4, x4, #32
+            orr     x1, x4, x1,  LSR #32
+            smaddl  x0, w0, w3, x1
             str     x0, [fp, #0x28]	// [V05 loc3+0x10]
             mov     w1, #5
             b       G_M55226_IG14
-						;; size=272 bbWeight=0.50 PerfScore 49.75
+						;; size=256 bbWeight=0.50 PerfScore 56.25
 G_M55226_IG13:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
-            str     x0, [fp, #0x20]	// [V05 loc3+0x08]
+            str     x1, [fp, #0x20]	// [V05 loc3+0x08]
             mov     w1, #3
 						;; size=8 bbWeight=0.50 PerfScore 0.75
 G_M55226_IG14:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
@@ -338,7 +332,7 @@ G_M55226_IG23:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             brk_windows #0
 						;; size=8 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 844, prolog size 20, PerfScore 267.65, instruction count 211, allocated bytes for code 844 (MethodHash=34b92845) for method System.Decimal+DecCalc:VarDecMul(byref,byref) (FullOpts)
+; Total bytes of code 820, prolog size 20, PerfScore 277.25, instruction count 205, allocated bytes for code 820 (MethodHash=34b92845) for method System.Decimal+DecCalc:VarDecMul(byref,byref) (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -349,7 +343,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 211 (0x000d3) Actual length = 844 (0x00034c)
+  Function Length   : 205 (0x000cd) Actual length = 820 (0x000334)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-4 (-2.38%) : 684.dasm - System.Object:MemberwiseClone():System.Object:this (FullOpts)
@@ -47,9 +47,8 @@ G_M31220_IG02:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
 G_M31220_IG03:        ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
             ldr     w1, [x20, #0x08]
             ldrh    w0, [x0]
-            umull   x0, w1, w0
-            add     x2, x0, x2
-						;; size=16 bbWeight=0.50 PerfScore 4.25
+            smaddl  x2, w1, w0, x2
+						;; size=12 bbWeight=0.50 PerfScore 5.50
 G_M31220_IG04:        ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
             ldrsb   wzr, [x19]
             add     x1, x19, #8
@@ -97,7 +96,7 @@ G_M31220_IG09:        ; bbWeight=1, epilog, nogc, extend
             ret     lr
 						;; size=12 bbWeight=1 PerfScore 3.00
 
-; Total bytes of code 168, prolog size 12, PerfScore 59.30, instruction count 42, allocated bytes for code 168 (MethodHash=8014860b) for method System.Object:MemberwiseClone():System.Object:this (FullOpts)
+; Total bytes of code 164, prolog size 12, PerfScore 60.15, instruction count 41, allocated bytes for code 164 (MethodHash=8014860b) for method System.Object:MemberwiseClone():System.Object:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -108,7 +107,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 42 (0x0002a) Actual length = 168 (0x0000a8)
+  Function Length   : 41 (0x00029) Actual length = 164 (0x0000a4)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+0 (0.00%) : 18896.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeMethodDefTable(System.Reflection.Metadata.BlobBuilder,System.Collections.Immutable.ImmutableArray`1[int],System.Reflection.Metadata.Ecma335.MetadataSizes,int):this (FullOpts)
@@ -598,8 +598,8 @@ G_M60373_IG22:        ; bbWeight=4, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefReg
             cmp     w25, w1
             bhs     G_M60373_IG25
             mov     w1, #20
-            umull   x1, w25, w1
-            add     x1, x1, #16
+            mov     x2, #16
+            smaddl  x1, w25, w1, x2
             add     x0, x0, x1
             ; gcrRegs -[x0]
             ; byrRegs +[x0]
@@ -610,7 +610,7 @@ G_M60373_IG22:        ; bbWeight=4, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefReg
             ldr     w4, [x0, #0x10]
             add     w25, w25, #1
             b       G_M60373_IG03
-						;; size=72 bbWeight=4 PerfScore 128.00
+						;; size=72 bbWeight=4 PerfScore 140.00
 G_M60373_IG23:        ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
             ; gcrRegs -[x19-x21 x23]
             ; byrRegs -[x0]
@@ -637,7 +637,7 @@ G_M60373_IG25:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             brk_windows #0
 						;; size=8 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 1324, prolog size 44, PerfScore 1023.40, instruction count 331, allocated bytes for code 1324 (MethodHash=19c2142a) for method System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeMethodDefTable(System.Reflection.Metadata.BlobBuilder,System.Collections.Immutable.ImmutableArray`1[int],System.Reflection.Metadata.Ecma335.MetadataSizes,int):this (FullOpts)
+; Total bytes of code 1324, prolog size 44, PerfScore 1035.40, instruction count 331, allocated bytes for code 1324 (MethodHash=19c2142a) for method System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeMethodDefTable(System.Reflection.Metadata.BlobBuilder,System.Collections.Immutable.ImmutableArray`1[int],System.Reflection.Metadata.Ecma335.MetadataSizes,int):this (FullOpts)
 ; ============================================================
 
 Unwind Info:
+0 (0.00%) : 18904.dasm - System.Reflection.Internal.EnumerableExtensions+<>c__DisplayClass1_0`1[System.Reflection.Metadata.Ecma335.MetadataBuilder+CustomAttributeRow]:b__0(int,int):int:this (FullOpts)
@@ -73,8 +73,8 @@ G_M49943_IG05:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
             bhs     G_M49943_IG08
             mov     w0, #12
             ; gcrRegs -[x0]
-            umull   x0, w19, w0
-            add     x0, x0, #16
+            mov     x6, #16
+            smaddl  x0, w19, w0, x6
             add     x3, x3, x0
             ; gcrRegs -[x3]
             ; byrRegs +[x3]
@@ -88,8 +88,8 @@ G_M49943_IG05:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
             cmp     w20, w4
             bhs     G_M49943_IG08
             mov     w2, #12
-            umull   x2, w20, w2
-            add     x2, x2, #16
+            mov     x3, #16
+            smaddl  x2, w20, w2, x3
             add     x1, x1, x2
             ; gcrRegs -[x1]
             ; byrRegs +[x1]
@@ -109,7 +109,7 @@ G_M49943_IG05:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
             sub     w1, w19, w20
             cmp     w0, #0
             csel    w0, w0, w1, ne
-						;; size=148 bbWeight=0.50 PerfScore 28.50
+						;; size=148 bbWeight=0.50 PerfScore 31.50
 G_M49943_IG06:        ; bbWeight=0.50, epilog, nogc, extend
             ldp     x19, x20, [sp, #0x30]
             ldp     fp, lr, [sp], #0x40
@@ -128,7 +128,7 @@ G_M49943_IG08:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             brk_windows #0
 						;; size=8 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 236, prolog size 12, PerfScore 60.35, instruction count 59, allocated bytes for code 236 (MethodHash=f5a23ce8) for method System.Reflection.Internal.EnumerableExtensions+<>c__DisplayClass1_0`1[System.Reflection.Metadata.Ecma335.MetadataBuilder+CustomAttributeRow]:<OrderBy>b__0(int,int):int:this (FullOpts)
+; Total bytes of code 236, prolog size 12, PerfScore 63.35, instruction count 59, allocated bytes for code 236 (MethodHash=f5a23ce8) for method System.Reflection.Internal.EnumerableExtensions+<>c__DisplayClass1_0`1[System.Reflection.Metadata.Ecma335.MetadataBuilder+CustomAttributeRow]:<OrderBy>b__0(int,int):int:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
+0 (0.00%) : 19936.dasm - BenchmarksGame.KNucleotide:WriteFrequencies(int,int[],ubyte):ubyte:this (FullOpts)
@@ -222,8 +222,8 @@ G_M59571_IG05:        ; bbWeight=4, gcrefRegs=A00000 {x21 x23}, byrefRegs=0000 {
             cmp     w25, w1
             bhs     G_M59571_IG11
             mov     w1, #24
-            umull   x1, w25, w1
-            add     x1, x1, #16
+            mov     x2, #16
+            smaddl  x1, w25, w1, x2
             add     x0, x0, x1
             ; gcrRegs -[x0]
             ; byrRegs +[x0]
@@ -232,7 +232,7 @@ G_M59571_IG05:        ; bbWeight=4, gcrefRegs=A00000 {x21 x23}, byrefRegs=0000 {
             ldp     w2, w3, [x0, #0x10]
             add     w25, w25, #1
             b       G_M59571_IG03
-						;; size=60 bbWeight=4 PerfScore 96.00
+						;; size=60 bbWeight=4 PerfScore 108.00
 G_M59571_IG06:        ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[x1 x21 x23 x26]
             ; byrRegs -[x0]
@@ -277,7 +277,7 @@ G_M59571_IG11:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
 RWD00  	dq	4059000000000000h	;          100
 
 
-; Total bytes of code 584, prolog size 48, PerfScore 382.65, instruction count 146, allocated bytes for code 584 (MethodHash=9537174c) for method BenchmarksGame.KNucleotide:WriteFrequencies(int,int[],ubyte):ubyte:this (FullOpts)
+; Total bytes of code 584, prolog size 48, PerfScore 394.65, instruction count 146, allocated bytes for code 584 (MethodHash=9537174c) for method BenchmarksGame.KNucleotide:WriteFrequencies(int,int[],ubyte):ubyte:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
benchmarks.run_pgo.windows.arm64.checked.mch
-4 (-6.67%) : 52288.dasm - System.Runtime.CompilerServices.RuntimeHelpers:GetRawObjectDataSize(System.Object):ulong (Tier1)
@@ -31,9 +31,8 @@ G_M15291_IG02:        ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
             beq     G_M15291_IG03
             ldr     w3, [x0, #0x08]
             ldrh    w1, [x1]
-            umull   x1, w3, w1
-            add     x2, x1, x2
-						;; size=40 bbWeight=1 PerfScore 19.50
+            smaddl  x2, w3, w1, x2
+						;; size=36 bbWeight=1 PerfScore 22.00
 G_M15291_IG03:        ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
             mov     x0, x2
             ; gcrRegs -[x0]
@@ -43,7 +42,7 @@ G_M15291_IG04:        ; bbWeight=1, epilog, nogc, extend
             ret     lr
 						;; size=8 bbWeight=1 PerfScore 2.00
 
-; Total bytes of code 60, prolog size 8, PerfScore 29.50, instruction count 15, allocated bytes for code 60 (MethodHash=4cd5c444) for method System.Runtime.CompilerServices.RuntimeHelpers:GetRawObjectDataSize(System.Object):ulong (Tier1)
+; Total bytes of code 56, prolog size 8, PerfScore 31.60, instruction count 14, allocated bytes for code 56 (MethodHash=4cd5c444) for method System.Runtime.CompilerServices.RuntimeHelpers:GetRawObjectDataSize(System.Object):ulong (Tier1)
 ; ============================================================
 
 Unwind Info:
@@ -54,7 +53,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 15 (0x0000f) Actual length = 60 (0x00003c)
+  Function Length   : 14 (0x0000e) Actual length = 56 (0x000038)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-4 (-2.38%) : 52287.dasm - System.Object:MemberwiseClone():System.Object:this (Tier1)
@@ -47,9 +47,8 @@ G_M31220_IG02:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
 G_M31220_IG03:        ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
             ldr     w1, [x20, #0x08]
             ldrh    w0, [x0]
-            umull   x0, w1, w0
-            add     x2, x0, x2
-						;; size=16 bbWeight=0.50 PerfScore 4.25
+            smaddl  x2, w1, w0, x2
+						;; size=12 bbWeight=0.50 PerfScore 5.50
 G_M31220_IG04:        ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
             ldrsb   wzr, [x19]
             add     x1, x19, #8
@@ -97,7 +96,7 @@ G_M31220_IG09:        ; bbWeight=1, epilog, nogc, extend
             ret     lr
 						;; size=12 bbWeight=1 PerfScore 3.00
 
-; Total bytes of code 168, prolog size 12, PerfScore 59.30, instruction count 42, allocated bytes for code 168 (MethodHash=8014860b) for method System.Object:MemberwiseClone():System.Object:this (Tier1)
+; Total bytes of code 164, prolog size 12, PerfScore 60.15, instruction count 41, allocated bytes for code 164 (MethodHash=8014860b) for method System.Object:MemberwiseClone():System.Object:this (Tier1)
 ; ============================================================
 
 Unwind Info:
@@ -108,7 +107,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 42 (0x0002a) Actual length = 168 (0x0000a8)
+  Function Length   : 41 (0x00029) Actual length = 164 (0x0000a4)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-4 (-0.72%) : 74086.dasm - System.Number+BigInteger:Multiply(byref,byref,byref) (Tier1)
@@ -126,8 +126,7 @@ G_M58222_IG11:        ; bbWeight=35.99, gcrefRegs=0000 {}, byrefRegs=980004 {x2
             ; byrRegs +[x10]
             ldr     w10, [x10, w4, SXTW #2]
             ; byrRegs -[x10]
-            umull   x9, w9, w10
-            add     x8, x8, x9
+            smaddl  x8, w9, w10, x8
             add     x8, x8, x6
             lsr     x6, x8, #32
             str     w8, [x19, x7]
@@ -135,7 +134,7 @@ G_M58222_IG11:        ; bbWeight=35.99, gcrefRegs=0000 {}, byrefRegs=980004 {x2
             add     w4, w4, #1
             cmp     w4, w24
             blt     G_M58222_IG11
-						;; size=60 bbWeight=35.99 PerfScore 755.72
+						;; size=56 bbWeight=35.99 PerfScore 845.68
 G_M58222_IG12:        ; bbWeight=1.75, gcrefRegs=0000 {}, byrefRegs=980004 {x2 x19 x20 x23}, byref
             str     w6, [x19, w5, SXTW #2]
 						;; size=4 bbWeight=1.75 PerfScore 1.75
@@ -263,7 +262,7 @@ G_M58222_IG25:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
             b       G_M58222_IG19
 						;; size=48 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 556, prolog size 36, PerfScore 870.28, instruction count 139, allocated bytes for code 556 (MethodHash=50d71c91) for method System.Number+BigInteger:Multiply(byref,byref,byref) (Tier1)
+; Total bytes of code 552, prolog size 36, PerfScore 959.85, instruction count 138, allocated bytes for code 552 (MethodHash=50d71c91) for method System.Number+BigInteger:Multiply(byref,byref,byref) (Tier1)
 ; ============================================================
 
 Unwind Info:
@@ -274,7 +273,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 139 (0x0008b) Actual length = 556 (0x00022c)
+  Function Length   : 138 (0x0008a) Actual length = 552 (0x000228)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+0 (0.00%) : 78032.dasm - System.Reflection.RuntimeCustomAttributeData:GetCustomAttributeRecords(System.Reflection.RuntimeModule,int):System.Reflection.CustomAttributeRecord[] (Tier1)
@@ -110,8 +110,8 @@ G_M39680_IG05:        ; bbWeight=5.11, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
 						;; size=8 bbWeight=5.11 PerfScore 17.90
 G_M39680_IG06:        ; bbWeight=5.87, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             mov     w2, #24
-            umull   x2, w21, w2
-            add     x3, x2, #16
+            mov     x3, #16
+            smaddl  x3, w21, w2, x3
             add     x2, x19, x3
             ; byrRegs +[x2]
             add     x2, x2, #16
@@ -124,7 +124,7 @@ G_M39680_IG06:        ; bbWeight=5.87, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
             add     w21, w21, #1
             cmp     w22, w21
             bgt     G_M39680_IG03
-						;; size=44 bbWeight=5.87 PerfScore 46.93
+						;; size=44 bbWeight=5.87 PerfScore 64.52
 G_M39680_IG07:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             mov     x0, x19
             ; gcrRegs +[x0]
@@ -214,7 +214,7 @@ G_M39680_IG13:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             brk_windows #0
 						;; size=8 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 444, prolog size 60, PerfScore 208.34, instruction count 111, allocated bytes for code 444 (MethodHash=2c5d64ff) for method System.Reflection.RuntimeCustomAttributeData:GetCustomAttributeRecords(System.Reflection.RuntimeModule,int):System.Reflection.CustomAttributeRecord[] (Tier1)
+; Total bytes of code 444, prolog size 60, PerfScore 225.94, instruction count 111, allocated bytes for code 444 (MethodHash=2c5d64ff) for method System.Reflection.RuntimeCustomAttributeData:GetCustomAttributeRecords(System.Reflection.RuntimeModule,int):System.Reflection.CustomAttributeRecord[] (Tier1)
 ; ============================================================
 
 Unwind Info:
+0 (0.00%) : 78976.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[System.Threading.PortableThreadPool+IOCompletionPoller+Event]:TryDequeue(byref):ubyte:this (Tier1)
@@ -53,8 +53,8 @@ G_M30106_IG03:        ; bbWeight=1.00, gcrefRegs=280000 {x19 x21}, byrefRegs=100
             cmp     w2, w3
             bhs     G_M30106_IG14
             mov     w4, #24
-            umull   x2, w2, w4
-            add     x2, x2, #16
+            mov     x5, #16
+            smaddl  x2, w2, w4, x5
             add     x4, x21, x2
             ; byrRegs +[x4]
             ldapr   w4, [x4]
@@ -62,7 +62,7 @@ G_M30106_IG03:        ; bbWeight=1.00, gcrefRegs=280000 {x19 x21}, byrefRegs=100
             add     w5, w1, #1
             sub     w4, w4, w5
             cbnz    w4, G_M30106_IG08
-						;; size=56 bbWeight=1.00 PerfScore 19.54
+						;; size=56 bbWeight=1.00 PerfScore 22.55
 G_M30106_IG04:        ; bbWeight=0.81, gcrefRegs=280000 {x19 x21}, byrefRegs=100001 {x0 x20}, byref, isz
             mov     w4, w1
             casal   w4, w5, [x0]
@@ -156,7 +156,7 @@ G_M30106_IG14:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             brk_windows #0
 						;; size=8 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 292, prolog size 24, PerfScore 78.72, instruction count 73, allocated bytes for code 292 (MethodHash=88538a65) for method System.Collections.Concurrent.ConcurrentQueueSegment`1[System.Threading.PortableThreadPool+IOCompletionPoller+Event]:TryDequeue(byref):ubyte:this (Tier1)
+; Total bytes of code 292, prolog size 24, PerfScore 81.72, instruction count 73, allocated bytes for code 292 (MethodHash=88538a65) for method System.Collections.Concurrent.ConcurrentQueueSegment`1[System.Threading.PortableThreadPool+IOCompletionPoller+Event]:TryDequeue(byref):ubyte:this (Tier1)
 ; ============================================================
 
 Unwind Info:
+0 (0.00%) : 79424.dasm - System.Collections.Hashtable:Insert(System.Object,System.Object,ubyte):this (Tier1)
@@ -161,12 +161,12 @@ G_M9145_IG08:        ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=000
             cmp     w23, w15
             bhs     G_M9145_IG31
             mov     w15, #24
-            umull   x15, w23, w15
-            add     x15, x15, #16
+            mov     x12, #16
+            smaddl  x15, w23, w15, x12
             ldr     x14, [x14, x15]
             cmp     x14, x2
             beq     G_M9145_IG29
-						;; size=44 bbWeight=1 PerfScore 15.50
+						;; size=44 bbWeight=1 PerfScore 18.50
 G_M9145_IG09:        ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[x2 x14]
             ldr     x14, [x19, #0x08]
@@ -175,11 +175,11 @@ G_M9145_IG09:        ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=000
             cmp     w23, w15
             bhs     G_M9145_IG31
             mov     w15, #24
-            umull   x15, w23, w15
-            add     x15, x15, #16
+            mov     x12, #16
+            smaddl  x15, w23, w15, x12
             ldr     x14, [x14, x15]
             cbnz    x14, G_M9145_IG30
-						;; size=36 bbWeight=1 PerfScore 14.50
+						;; size=36 bbWeight=1 PerfScore 17.50
 G_M9145_IG10:        ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[x14]
             cmn     w28, #1
@@ -194,8 +194,8 @@ G_M9145_IG10:        ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=000
             cmp     w23, w15
             bhs     G_M9145_IG31
             mov     w15, #24
-            umull   x15, w23, w15
-            add     x15, x15, #16
+            mov     x12, #16
+            smaddl  x15, w23, w15, x12
             add     x0, x14, x15
             ; byrRegs +[x0]
             add     x14, x0, #8
@@ -227,7 +227,7 @@ G_M9145_IG10:        ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=000
             add     w0, w0, #1
             stlr    w0, [x4]
             stlrb   wzr, [x3]
-						;; size=124 bbWeight=1 PerfScore 33.50
+						;; size=124 bbWeight=1 PerfScore 36.50
 G_M9145_IG11:        ; bbWeight=1, epilog, nogc, extend
             ldp     x27, x28, [sp, #0x50]
             ldp     x25, x26, [sp, #0x40]
@@ -246,8 +246,8 @@ G_M9145_IG12:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=380000
             cmp     w23, w1
             bhs     G_M9145_IG31
             mov     w1, #24
-            umull   x1, w23, w1
-            add     x1, x1, #16
+            mov     x2, #16
+            smaddl  x1, w23, w1, x2
             add     x0, x0, x1
             ; gcrRegs -[x0]
             ; byrRegs +[x0]
@@ -265,8 +265,8 @@ G_M9145_IG12:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=380000
             cmp     w23, w1
             bhs     G_M9145_IG31
             mov     w1, #24
-            umull   x1, w23, w1
-            add     x1, x1, #16
+            mov     x2, #16
+            smaddl  x1, w23, w1, x2
             ldr     x1, [x0, x1]
             ; gcrRegs +[x1]
             mov     x0, x19
@@ -303,8 +303,8 @@ G_M9145_IG12:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=380000
             cmp     w23, w2
             bhs     G_M9145_IG31
             mov     w2, #24
-            umull   x2, w23, w2
-            add     x2, x2, #16
+            mov     x3, #16
+            smaddl  x2, w23, w2, x3
             ldr     x1, [x1, x2]
             mov     x2, x20
             ; gcrRegs +[x2]
@@ -343,8 +343,8 @@ G_M9145_IG13:        ; bbWeight=0, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}
             cmp     w23, w15
             bhs     G_M9145_IG31
             mov     w15, #24
-            umull   x15, w23, w15
-            add     x15, x15, #16
+            mov     x12, #16
+            smaddl  x15, w23, w15, x12
             add     x14, x14, x15
             ; gcrRegs -[x14]
             ; byrRegs +[x14]
@@ -381,8 +381,8 @@ G_M9145_IG15:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=380000
             cmp     w23, w14
             bhs     G_M9145_IG31
             mov     w14, #24
-            umull   x14, w23, w14
-            add     x14, x14, #16
+            mov     x15, #16
+            smaddl  x14, w23, w14, x15
             add     x14, x3, x14
             ; byrRegs +[x14]
             ldr     w14, [x14, #0x10]
@@ -394,8 +394,8 @@ G_M9145_IG15:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=380000
             cmp     w23, w15
             bhs     G_M9145_IG31
             mov     w15, #24
-            umull   x15, w23, w15
-            add     x15, x15, #16
+            mov     x12, #16
+            smaddl  x15, w23, w15, x12
             add     x14, x14, x15
             ; gcrRegs -[x14]
             ; byrRegs +[x14]
@@ -445,8 +445,8 @@ G_M9145_IG17:        ; bbWeight=0, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=000
             cmp     w28, w15
             bhs     G_M9145_IG31
             mov     w15, #24
-            umull   x15, w28, w15
-            add     x15, x15, #16
+            mov     x12, #16
+            smaddl  x15, w28, w15, x12
             add     x14, x14, x15
             ; gcrRegs -[x14]
             ; byrRegs +[x14]
@@ -462,8 +462,8 @@ G_M9145_IG17:        ; bbWeight=0, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=000
             cmp     w28, w15
             bhs     G_M9145_IG31
             mov     w15, #24
-            umull   x15, w28, w15
-            add     x15, x15, #16
+            mov     x12, #16
+            smaddl  x15, w28, w15, x12
             add     x14, x14, x15
             ; gcrRegs -[x14]
             ; byrRegs +[x14]
@@ -478,8 +478,8 @@ G_M9145_IG17:        ; bbWeight=0, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=000
             cmp     w28, w0
             bhs     G_M9145_IG31
             mov     w0, #24
-            umull   x0, w28, w0
-            add     x0, x0, #16
+            mov     x1, #16
+            smaddl  x0, w28, w0, x1
             add     x0, x4, x0
             ; byrRegs +[x0]
             add     x0, x0, #16
@@ -667,8 +667,8 @@ G_M9145_IG29:        ; bbWeight=0, gcrefRegs=380004 {x2 x19 x20 x21}, byrefRegs=
             cmp     w23, w0
             bhs     G_M9145_IG31
             mov     w0, #24
-            umull   x0, w23, w0
-            add     x0, x0, #16
+            mov     x1, #16
+            smaddl  x0, w23, w0, x1
             add     x0, x2, x0
             ; byrRegs +[x0]
             ldr     w0, [x0, #0x10]
@@ -685,8 +685,8 @@ G_M9145_IG30:        ; bbWeight=0, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=000
             cmp     w23, w1
             bhs     G_M9145_IG31
             mov     w1, #24
-            umull   x1, w23, w1
-            add     x1, x1, #16
+            mov     x2, #16
+            smaddl  x1, w23, w1, x2
             ldr     x0, [x0, x1]
             ldr     x1, [x19, #0x08]
             ; gcrRegs +[x1]
@@ -698,8 +698,8 @@ G_M9145_IG30:        ; bbWeight=0, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=000
             cmp     w23, w1
             bhs     G_M9145_IG31
             mov     w1, #24
-            umull   x1, w23, w1
-            add     x1, x1, #16
+            mov     x2, #16
+            smaddl  x1, w23, w1, x2
             add     x0, x0, x1
             ; gcrRegs -[x0]
             ; byrRegs +[x0]
@@ -716,7 +716,7 @@ G_M9145_IG31:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             brk_windows #0
 						;; size=8 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 1708, prolog size 44, PerfScore 328.80, instruction count 427, allocated bytes for code 1708 (MethodHash=3240dc46) for method System.Collections.Hashtable:Insert(System.Object,System.Object,ubyte):this (Tier1)
+; Total bytes of code 1708, prolog size 44, PerfScore 337.80, instruction count 427, allocated bytes for code 1708 (MethodHash=3240dc46) for method System.Collections.Hashtable:Insert(System.Object,System.Object,ubyte):this (Tier1)
 ; ============================================================
 
 Unwind Info:
benchmarks.run_tiered.windows.arm64.checked.mch
-4 (-6.67%) : 7467.dasm - System.Runtime.CompilerServices.RuntimeHelpers:GetRawObjectDataSize(System.Object):ulong (Tier1)
@@ -32,9 +32,8 @@ G_M15291_IG02:        ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
 G_M15291_IG03:        ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
             ldr     w3, [x0, #0x08]
             ldrh    w1, [x1]
-            umull   x1, w3, w1
-            add     x2, x1, x2
-						;; size=16 bbWeight=0.50 PerfScore 4.25
+            smaddl  x2, w3, w1, x2
+						;; size=12 bbWeight=0.50 PerfScore 5.50
 G_M15291_IG04:        ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
             mov     x0, x2
             ; gcrRegs -[x0]
@@ -44,7 +43,7 @@ G_M15291_IG05:        ; bbWeight=1, epilog, nogc, extend
             ret     lr
 						;; size=8 bbWeight=1 PerfScore 2.00
 
-; Total bytes of code 60, prolog size 8, PerfScore 25.25, instruction count 15, allocated bytes for code 60 (MethodHash=4cd5c444) for method System.Runtime.CompilerServices.RuntimeHelpers:GetRawObjectDataSize(System.Object):ulong (Tier1)
+; Total bytes of code 56, prolog size 8, PerfScore 26.10, instruction count 14, allocated bytes for code 56 (MethodHash=4cd5c444) for method System.Runtime.CompilerServices.RuntimeHelpers:GetRawObjectDataSize(System.Object):ulong (Tier1)
 ; ============================================================
 
 Unwind Info:
@@ -55,7 +54,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 15 (0x0000f) Actual length = 60 (0x00003c)
+  Function Length   : 14 (0x0000e) Actual length = 56 (0x000038)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-4 (-2.38%) : 7466.dasm - System.Object:MemberwiseClone():System.Object:this (Tier1)
@@ -47,9 +47,8 @@ G_M31220_IG02:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
 G_M31220_IG03:        ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
             ldr     w1, [x20, #0x08]
             ldrh    w0, [x0]
-            umull   x0, w1, w0
-            add     x2, x0, x2
-						;; size=16 bbWeight=0.50 PerfScore 4.25
+            smaddl  x2, w1, w0, x2
+						;; size=12 bbWeight=0.50 PerfScore 5.50
 G_M31220_IG04:        ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
             ldrsb   wzr, [x19]
             add     x1, x19, #8
@@ -97,7 +96,7 @@ G_M31220_IG09:        ; bbWeight=1, epilog, nogc, extend
             ret     lr
 						;; size=12 bbWeight=1 PerfScore 3.00
 
-; Total bytes of code 168, prolog size 12, PerfScore 59.30, instruction count 42, allocated bytes for code 168 (MethodHash=8014860b) for method System.Object:MemberwiseClone():System.Object:this (Tier1)
+; Total bytes of code 164, prolog size 12, PerfScore 60.15, instruction count 41, allocated bytes for code 164 (MethodHash=8014860b) for method System.Object:MemberwiseClone():System.Object:this (Tier1)
 ; ============================================================
 
 Unwind Info:
@@ -108,7 +107,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 42 (0x0002a) Actual length = 168 (0x0000a8)
+  Function Length   : 41 (0x00029) Actual length = 164 (0x0000a4)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-4 (-0.75%) : 44419.dasm - System.Number+BigInteger:Multiply(byref,byref,byref) (Tier1)
@@ -209,8 +209,7 @@ G_M58222_IG18:        ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=680004 {x2 x19
             ; byrRegs +[x10]
             ldr     w10, [x10, w4, SXTW #2]
             ; byrRegs -[x10]
-            umull   x9, w9, w10
-            add     x8, x8, x9
+            smaddl  x8, w9, w10, x8
             add     x8, x8, x6
             lsr     x6, x8, #32
             str     w8, [x21, x7]
@@ -218,7 +217,7 @@ G_M58222_IG18:        ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=680004 {x2 x19
             add     w4, w4, #1
             cmp     w4, w23
             blt     G_M58222_IG18
-						;; size=60 bbWeight=16 PerfScore 336.00
+						;; size=56 bbWeight=16 PerfScore 376.00
 G_M58222_IG19:        ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=680004 {x2 x19 x21 x22}, byref
             str     w6, [x21, w5, SXTW #2]
 						;; size=4 bbWeight=2 PerfScore 2.00
@@ -249,7 +248,7 @@ G_M58222_IG22:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
             ret     lr
 						;; size=24 bbWeight=0.50 PerfScore 3.50
 
-; Total bytes of code 536, prolog size 28, PerfScore 484.60, instruction count 134, allocated bytes for code 536 (MethodHash=50d71c91) for method System.Number+BigInteger:Multiply(byref,byref,byref) (Tier1)
+; Total bytes of code 532, prolog size 28, PerfScore 524.20, instruction count 133, allocated bytes for code 532 (MethodHash=50d71c91) for method System.Number+BigInteger:Multiply(byref,byref,byref) (Tier1)
 ; ============================================================
 
 Unwind Info:
@@ -260,7 +259,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 134 (0x00086) Actual length = 536 (0x000218)
+  Function Length   : 133 (0x00085) Actual length = 532 (0x000214)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+0 (0.00%) : 39680.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxParser:Reset(byref):this (Tier1)
@@ -89,8 +89,8 @@ G_M64917_IG06:        ; bbWeight=4, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {},
             cmp     w2, w5
             bhs     G_M64917_IG11
             mov     w5, #96
-            umull   x5, w2, w5
-            add     x5, x5, #16
+            mov     x6, #16
+            smaddl  x5, w2, w5, x6
             add     x4, x4, x5
             ; gcrRegs -[x4]
             ; byrRegs +[x4]
@@ -101,7 +101,7 @@ G_M64917_IG06:        ; bbWeight=4, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {},
             add     w2, w2, #1
             cmp     w2, w3
             blt     G_M64917_IG06
-						;; size=52 bbWeight=4 PerfScore 58.00
+						;; size=52 bbWeight=4 PerfScore 70.00
 G_M64917_IG07:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x0 x4 x19]
             b       G_M64917_IG10
@@ -141,7 +141,7 @@ G_M64917_IG11:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
             brk_windows #0
 						;; size=8 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 308, prolog size 24, PerfScore 148.05, instruction count 77, allocated bytes for code 308 (MethodHash=bd96026a) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxParser:Reset(byref):this (Tier1)
+; Total bytes of code 308, prolog size 24, PerfScore 160.05, instruction count 77, allocated bytes for code 308 (MethodHash=bd96026a) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxParser:Reset(byref):this (Tier1)
 ; ============================================================
 
 Unwind Info:
+0 (0.00%) : 39792.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:IsAwaitExpression():ubyte:this (Tier1)
@@ -107,8 +107,8 @@ G_M32406_IG09:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
             cmp     w20, w1
             bhs     G_M32406_IG22
             mov     w1, #96
-            umull   x1, w20, w1
-            add     x1, x1, #16
+            mov     x2, #16
+            smaddl  x1, w20, w1, x2
             add     x0, x0, x1
             ; gcrRegs -[x0]
             ; byrRegs +[x0]
@@ -116,7 +116,7 @@ G_M32406_IG09:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
             ; gcrRegs +[x0]
             ; byrRegs -[x0]
             b       G_M32406_IG11
-						;; size=44 bbWeight=0.50 PerfScore 8.00
+						;; size=44 bbWeight=0.50 PerfScore 9.50
 G_M32406_IG10:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[x0]
             ldr     x0, [x19, #0x18]
@@ -249,7 +249,7 @@ RWD00  	dd	G_M32406_IG16 - G_M32406_IG02
        	dd	G_M32406_IG18 - G_M32406_IG02
 
 
-; Total bytes of code 520, prolog size 12, PerfScore 168.00, instruction count 130, allocated bytes for code 520 (MethodHash=89778169) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:IsAwaitExpression():ubyte:this (Tier1)
+; Total bytes of code 520, prolog size 12, PerfScore 169.50, instruction count 130, allocated bytes for code 520 (MethodHash=89778169) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:IsAwaitExpression():ubyte:this (Tier1)
 ; ============================================================
 
 Unwind Info:
+0 (0.00%) : 39800.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParsePostFixExpression(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax:this (Tier1)
@@ -493,8 +493,8 @@ G_M23459_IG18:        ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
             cmp     w1, w2
             bhs     G_M23459_IG121
             mov     w2, #96
-            umull   x1, w1, w2
-            add     x1, x1, #16
+            mov     x3, #16
+            smaddl  x1, w1, w2, x3
             add     x0, x0, x1
             ; gcrRegs -[x0]
             ; byrRegs +[x0]
@@ -502,7 +502,7 @@ G_M23459_IG18:        ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
             ; gcrRegs +[x0]
             ; byrRegs -[x0]
             b       G_M23459_IG20
-						;; size=48 bbWeight=2 PerfScore 37.00
+						;; size=48 bbWeight=2 PerfScore 43.00
 G_M23459_IG19:        ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[x0]
             ldr     x0, [x19, #0x18]
@@ -1994,7 +1994,7 @@ RWD00  	dd	G_M23459_IG08 - G_M23459_IG02
        	dd	G_M23459_IG57 - G_M23459_IG02
 
 
-; Total bytes of code 4656, prolog size 28, PerfScore 4065.85, instruction count 1164, allocated bytes for code 4656 (MethodHash=7bb2a45c) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParsePostFixExpression(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax:this (Tier1)
+; Total bytes of code 4656, prolog size 28, PerfScore 4071.85, instruction count 1164, allocated bytes for code 4656 (MethodHash=7bb2a45c) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParsePostFixExpression(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax:this (Tier1)
 ; ============================================================
 
 Unwind Info:
coreclr_tests.run.windows.arm64.checked.mch
-4 (-14.29%) : 21924.dasm - SP2:Foo(SP2+S):long (FullOpts)
@@ -20,15 +20,14 @@ G_M46735_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
 						;; size=8 bbWeight=1 PerfScore 1.50
 G_M46735_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             mov     w2, #10
-            smull   x0, w0, w2
-            add     x0, x0, x1
-						;; size=12 bbWeight=1 PerfScore 3.00
+            smaddl  x0, w0, w2, x1
+						;; size=8 bbWeight=1 PerfScore 5.50
 G_M46735_IG03:        ; bbWeight=1, epilog, nogc, extend
             ldp     fp, lr, [sp], #0x10
             ret     lr
 						;; size=8 bbWeight=1 PerfScore 2.00
 
-; Total bytes of code 28, prolog size 8, PerfScore 9.30, instruction count 7, allocated bytes for code 28 (MethodHash=3f4d4970) for method SP2:Foo(SP2+S):long (FullOpts)
+; Total bytes of code 24, prolog size 8, PerfScore 11.40, instruction count 6, allocated bytes for code 24 (MethodHash=3f4d4970) for method SP2:Foo(SP2+S):long (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -39,7 +38,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 7 (0x00007) Actual length = 28 (0x00001c)
+  Function Length   : 6 (0x00006) Actual length = 24 (0x000018)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-4 (-4.00%) : 226273.dasm - TestApp:test_2_12(int):int (FullOpts)
@@ -33,21 +33,20 @@ G_M34283_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             cmp     w0, w3
             bhs     G_M34283_IG04
             mov     w4, #48
-            umull   x0, w0, w4
-            add     x0, x0, #16
+            mov     x5, #16
+            smaddl  x0, w0, w4, x5
             add     x0, x1, x0
             ; byrRegs +[x0]
             ldr     w0, [x0, #0x08]
             ; byrRegs -[x0]
             cmp     w0, w3
             bhs     G_M34283_IG04
-            umull   x0, w0, w4
-            add     x0, x0, #16
+            smaddl  x0, w0, w4, x5
             add     x0, x2, x0
             ; byrRegs +[x0]
             ldr     w0, [x0, #0x08]
             ; byrRegs -[x0]
-						;; size=76 bbWeight=1 PerfScore 23.50
+						;; size=72 bbWeight=1 PerfScore 29.00
 G_M34283_IG03:        ; bbWeight=1, epilog, nogc, extend
             ldp     fp, lr, [sp], #0x10
             ret     lr
@@ -58,7 +57,7 @@ G_M34283_IG04:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
             brk_windows #0
 						;; size=8 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 100, prolog size 8, PerfScore 37.00, instruction count 25, allocated bytes for code 100 (MethodHash=47507a14) for method TestApp:test_2_12(int):int (FullOpts)
+; Total bytes of code 96, prolog size 8, PerfScore 42.10, instruction count 24, allocated bytes for code 96 (MethodHash=47507a14) for method TestApp:test_2_12(int):int (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -69,7 +68,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 25 (0x00019) Actual length = 100 (0x000064)
+  Function Length   : 24 (0x00018) Actual length = 96 (0x000060)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-4 (-4.00%) : 226451.dasm - TestApp:test_2_8(int):int (FullOpts)
@@ -33,21 +33,20 @@ G_M55824_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             cmp     w0, w3
             bhs     G_M55824_IG04
             mov     w4, #56
-            umull   x0, w0, w4
-            add     x0, x0, #16
+            mov     x5, #16
+            smaddl  x0, w0, w4, x5
             add     x0, x1, x0
             ; byrRegs +[x0]
             ldr     w0, [x0, #0x08]
             ; byrRegs -[x0]
             cmp     w0, w3
             bhs     G_M55824_IG04
-            umull   x0, w0, w4
-            add     x0, x0, #16
+            smaddl  x0, w0, w4, x5
             add     x0, x2, x0
             ; byrRegs +[x0]
             ldr     w0, [x0, #0x08]
             ; byrRegs -[x0]
-						;; size=76 bbWeight=1 PerfScore 23.50
+						;; size=72 bbWeight=1 PerfScore 29.00
 G_M55824_IG03:        ; bbWeight=1, epilog, nogc, extend
             ldp     fp, lr, [sp], #0x10
             ret     lr
@@ -58,7 +57,7 @@ G_M55824_IG04:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
             brk_windows #0
 						;; size=8 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 100, prolog size 8, PerfScore 37.00, instruction count 25, allocated bytes for code 100 (MethodHash=c77525ef) for method TestApp:test_2_8(int):int (FullOpts)
+; Total bytes of code 96, prolog size 8, PerfScore 42.10, instruction count 24, allocated bytes for code 96 (MethodHash=c77525ef) for method TestApp:test_2_8(int):int (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -69,7 +68,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 25 (0x00019) Actual length = 100 (0x000064)
+  Function Length   : 24 (0x00018) Actual length = 96 (0x000060)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+0 (0.00%) : 568104.dasm - System.Collections.Generic.Dictionary`2+CollectionsMarshalHelper[System.__Canon,int]:GetValueRefOrAddDefault(System.Collections.Generic.Dictionary`2[System.__Canon,int],System.__Canon,byref):byref (Tier1)
@@ -218,8 +218,8 @@ G_M25670_IG12:        ; bbWeight=1, gcrefRegs=1980000 {x19 x20 x23 x24}, byrefRe
             cmp     w21, w14
             bhs     G_M25670_IG30
             mov     w14, #24
-            umull   x14, w21, w14
-            add     x14, x14, #16
+            mov     x15, #16
+            smaddl  x14, w21, w14, x15
             add     x28, x23, x14
             ; byrRegs +[x28]
             str     w25, [x28, #0x08]
@@ -241,7 +241,7 @@ G_M25670_IG12:        ; bbWeight=1, gcrefRegs=1980000 {x19 x20 x23 x24}, byrefRe
             str     w0, [x19, #0x44]
             cmp     w26, #100
             bhi     G_M25670_IG23
-						;; size=88 bbWeight=1 PerfScore 24.00
+						;; size=88 bbWeight=1 PerfScore 27.00
 G_M25670_IG13:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=10400000 {x22 x28}, byref
             ; gcrRegs -[x19-x20 x23-x24]
             ; byrRegs -[x27]
@@ -282,8 +282,8 @@ G_M25670_IG16:        ; bbWeight=0, gcrefRegs=1980000 {x19 x20 x23 x24}, byrefRe
 						;; size=24 bbWeight=0 PerfScore 0.00
 G_M25670_IG17:        ; bbWeight=0, gcrefRegs=1980000 {x19 x20 x23 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
             mov     w1, #24
-            umull   x1, w28, w1
-            add     x1, x1, #16
+            mov     x0, #16
+            smaddl  x1, w28, w1, x0
             ldr     x1, [x23, x1]
             ; gcrRegs +[x1]
             mov     x0, x24
@@ -298,8 +298,8 @@ G_M25670_IG17:        ; bbWeight=0, gcrefRegs=1980000 {x19 x20 x23 x24}, byrefRe
             mov     w0, #1
             strb    w0, [x22]
             mov     w0, #24
-            umull   x0, w28, w0
-            add     x0, x0, #16
+            mov     x1, #16
+            smaddl  x0, w28, w0, x1
             add     x0, x23, x0
             ; byrRegs +[x0]
             add     x0, x0, #16
@@ -316,8 +316,8 @@ G_M25670_IG18:        ; bbWeight=0, epilog, nogc, extend
 G_M25670_IG19:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=1980000 {x19 x20 x23 x24}, byrefRegs=8400000 {x22 x27}, gcvars, byref, isz
             ; byrRegs -[x0]
             mov     w0, #24
-            umull   x0, w28, w0
-            add     x0, x0, #16
+            mov     x1, #16
+            smaddl  x0, w28, w0, x1
             add     x0, x23, x0
             ; byrRegs +[x0]
             ldr     w28, [x0, #0x0C]
@@ -345,8 +345,8 @@ G_M25670_IG20:        ; bbWeight=0, gcrefRegs=1980000 {x19 x20 x23 x24}, byrefRe
             cmp     w0, w1
             bhs     G_M25670_IG30
             mov     w1, #24
-            umull   x0, w0, w1
-            add     x0, x0, #16
+            mov     x2, #16
+            smaddl  x0, w0, w1, x2
             add     x0, x23, x0
             ; byrRegs +[x0]
             ldr     w0, [x0, #0x0C]
@@ -375,8 +375,8 @@ G_M25670_IG21:        ; bbWeight=0, gcrefRegs=1980000 {x19 x20 x23 x24}, byrefRe
             cmp     w0, w1
             bhs     G_M25670_IG30
             mov     w1, #24
-            umull   x0, w0, w1
-            add     x0, x0, #16
+            mov     x2, #16
+            smaddl  x0, w0, w1, x2
             add     x0, x23, x0
             ; byrRegs +[x0]
             ldr     w0, [x0, #0x0C]
@@ -543,8 +543,8 @@ G_M25670_IG28:        ; bbWeight=0, gcrefRegs=1980000 {x19 x20 x23 x24}, byrefRe
 G_M25670_IG29:        ; bbWeight=0, gcrefRegs=1980000 {x19 x20 x23 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
             ; byrRegs +[x27]
             mov     w0, #24
-            umull   x0, w28, w0
-            add     x0, x0, #16
+            mov     x1, #16
+            smaddl  x0, w28, w0, x1
             add     x0, x23, x0
             ; byrRegs +[x0]
             ldr     w0, [x0, #0x08]
@@ -565,7 +565,7 @@ G_M25670_IG30:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             brk_windows #0
 						;; size=8 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 1372, prolog size 48, PerfScore 306.60, instruction count 343, allocated bytes for code 1372 (MethodHash=d90e9bb9) for method System.Collections.Generic.Dictionary`2+CollectionsMarshalHelper[System.__Canon,int]:GetValueRefOrAddDefault(System.Collections.Generic.Dictionary`2[System.__Canon,int],System.__Canon,byref):byref (Tier1)
+; Total bytes of code 1372, prolog size 48, PerfScore 309.60, instruction count 343, allocated bytes for code 1372 (MethodHash=d90e9bb9) for method System.Collections.Generic.Dictionary`2+CollectionsMarshalHelper[System.__Canon,int]:GetValueRefOrAddDefault(System.Collections.Generic.Dictionary`2[System.__Canon,int],System.__Canon,byref):byref (Tier1)
 ; ============================================================
 
 Unwind Info:
+0 (0.00%) : 576792.dasm - System.Collections.Generic.List`1[XUnitWrapperLibrary.TestSummary+TestResult]:Add(XUnitWrapperLibrary.TestSummary+TestResult):this (Tier1)
@@ -38,8 +38,8 @@ G_M5238_IG03:        ; bbWeight=0.98, gcrefRegs=2001 {x0 x13}, byrefRegs=0002 {x
             add     w12, w14, #1
             str     w12, [x0, #0x10]
             mov     w12, #56
-            umull   x14, w14, w12
-            add     x14, x14, #16
+            mov     x15, #16
+            smaddl  x14, w14, w12, x15
             add     x14, x13, x14
             ; byrRegs +[x14]
             mov     x13, x1
@@ -55,7 +55,7 @@ G_M5238_IG03:        ; bbWeight=0.98, gcrefRegs=2001 {x0 x13}, byrefRegs=0002 {x
             bl      CORINFO_HELP_ASSIGN_BYREF
             ldr     x12, [x13], #0x08
             str     x12, [x14], #0x08
-						;; size=60 bbWeight=0.98 PerfScore 15.21
+						;; size=60 bbWeight=0.98 PerfScore 18.15
 G_M5238_IG04:        ; bbWeight=0.98, epilog, nogc, extend
             ldp     fp, lr, [sp], #0x10
             ret     lr
@@ -74,7 +74,7 @@ G_M5238_IG06:        ; bbWeight=0.02, epilog, nogc, extend
             ; gcr arg pop 0
 						;; size=8 bbWeight=0.02 PerfScore 0.04
 
-; Total bytes of code 132, prolog size 8, PerfScore 46.99, instruction count 33, allocated bytes for code 132 (MethodHash=9acbeb89) for method System.Collections.Generic.List`1[XUnitWrapperLibrary.TestSummary+TestResult]:Add(XUnitWrapperLibrary.TestSummary+TestResult):this (Tier1)
+; Total bytes of code 132, prolog size 8, PerfScore 49.94, instruction count 33, allocated bytes for code 132 (MethodHash=9acbeb89) for method System.Collections.Generic.List`1[XUnitWrapperLibrary.TestSummary+TestResult]:Add(XUnitWrapperLibrary.TestSummary+TestResult):this (Tier1)
 ; ============================================================
 
 Unwind Info:
+0 (0.00%) : 580040.dasm - System.Diagnostics.Process:GetEnvironmentVariablesBlock(System.Collections.Generic.IDictionary`2[System.String,System.String]):System.String (Tier1)
@@ -197,8 +197,8 @@ G_M14230_IG04:        ; bbWeight=0.99, gcrefRegs=1480000 {x19 x22 x24}, byrefReg
 						;; size=16 bbWeight=0.99 PerfScore 5.45
 G_M14230_IG05:        ; bbWeight=99, gcrefRegs=1480000 {x19 x22 x24}, byrefRegs=0000 {}, byref, isz
             mov     w2, #24
-            umull   x2, w25, w2
-            add     x2, x2, #16
+            mov     x1, #16
+            smaddl  x2, w25, w2, x1
             add     x1, x24, x2
             ; byrRegs +[x1]
             ldr     w1, [x1, #0x14]
@@ -216,7 +216,7 @@ G_M14230_IG05:        ; bbWeight=99, gcrefRegs=1480000 {x19 x22 x24}, byrefRegs=
             ; gcrRegs -[x0 x2]
             ; gcr arg pop 0
             mov     w21, w26
-						;; size=56 bbWeight=99 PerfScore 1435.50
+						;; size=56 bbWeight=99 PerfScore 1732.50
 G_M14230_IG06:        ; bbWeight=99, gcrefRegs=1480000 {x19 x22 x24}, byrefRegs=0000 {}, byref, isz
             add     w25, w25, #1
             cmp     w25, w23
@@ -232,8 +232,8 @@ G_M14230_IG08:        ; bbWeight=1.00, gcrefRegs=1480000 {x19 x22 x24}, byrefReg
             cmp     w25, w2
             bhs     G_M14230_IG61
             mov     w2, #24
-            umull   x2, w25, w2
-            add     x2, x2, #16
+            mov     x1, #16
+            smaddl  x2, w25, w2, x1
             add     x1, x24, x2
             ; byrRegs +[x1]
             ldr     w1, [x1, #0x14]
@@ -251,7 +251,7 @@ G_M14230_IG08:        ; bbWeight=1.00, gcrefRegs=1480000 {x19 x22 x24}, byrefReg
             ; gcrRegs -[x0 x2]
             ; gcr arg pop 0
             mov     w21, w26
-						;; size=68 bbWeight=1.00 PerfScore 19.00
+						;; size=68 bbWeight=1.00 PerfScore 22.00
 G_M14230_IG09:        ; bbWeight=1.00, gcrefRegs=1480000 {x19 x22 x24}, byrefRegs=0000 {}, byref, isz
             add     w25, w25, #1
             cmp     w25, w23
@@ -929,7 +929,7 @@ G_M14230_IG61:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             brk_windows #0
 						;; size=8 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 2016, prolog size 32, PerfScore 12723.89, instruction count 504, allocated bytes for code 2016 (MethodHash=7976c869) for method System.Diagnostics.Process:GetEnvironmentVariablesBlock(System.Collections.Generic.IDictionary`2[System.String,System.String]):System.String (Tier1)
+; Total bytes of code 2016, prolog size 32, PerfScore 13023.89, instruction count 504, allocated bytes for code 2016 (MethodHash=7976c869) for method System.Diagnostics.Process:GetEnvironmentVariablesBlock(System.Collections.Generic.IDictionary`2[System.String,System.String]):System.String (Tier1)
 ; ============================================================
 
 Unwind Info:
libraries.crossgen2.windows.arm64.checked.mch
-4 (-7.14%) : 226348.dasm - System.Security.Cryptography.Pkcs.Asn1.Rfc3161Accuracy:get_TotalMicros():long:this (FullOpts)
@@ -28,21 +28,20 @@ G_M22893_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byre
             ldr     w1, [x0, #0x04]
             movz    w2, #0xD1FFAB1E
             movk    w2, #15 LSL #16
-            smull   x1, w1, w2
-            ldr     w2, [x0, #0x0C]
-            mov     w3, #0xD1FFAB1E
-            smull   x2, w2, w3
-            add     x1, x1, x2
+            ldr     w3, [x0, #0x0C]
+            mov     w4, #0xD1FFAB1E
+            smull   x3, w3, w4
+            smaddl  x1, w1, w2, x3
             ldr     w0, [x0, #0x14]
             ; byrRegs -[x0]
             add     x0, x1, w0, SXTW
-						;; size=40 bbWeight=1 PerfScore 16.00
+						;; size=36 bbWeight=1 PerfScore 18.50
 G_M22893_IG03:        ; bbWeight=1, epilog, nogc, extend
             ldp     fp, lr, [sp], #0x10
             ret     lr
 						;; size=8 bbWeight=1 PerfScore 2.00
 
-; Total bytes of code 56, prolog size 8, PerfScore 25.10, instruction count 14, allocated bytes for code 56 (MethodHash=8b78a692) for method System.Security.Cryptography.Pkcs.Asn1.Rfc3161Accuracy:get_TotalMicros():long:this (FullOpts)
+; Total bytes of code 52, prolog size 8, PerfScore 27.20, instruction count 13, allocated bytes for code 52 (MethodHash=8b78a692) for method System.Security.Cryptography.Pkcs.Asn1.Rfc3161Accuracy:get_TotalMicros():long:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -53,7 +52,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 14 (0x0000e) Actual length = 56 (0x000038)
+  Function Length   : 13 (0x0000d) Actual length = 52 (0x000034)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-8 (-5.56%) : 3978.dasm - System.TimeSpan:.ctor(int,int,int,int):this (FullOpts)
@@ -27,13 +27,11 @@ G_M9511_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
             ; byrRegs +[x0]
             movz    w11, #0xD1FFAB1E
             movk    w11, #1 LSL #16
-            smull   x11, w1, w11
-            mov     w1, #0xD1FFAB1E
-            smull   x1, w2, w1
-            add     x11, x11, x1
+            mov     w5, #0xD1FFAB1E
+            smull   x2, w2, w5
+            smaddl  x11, w1, w11, x2
             mov     w1, #60
-            smull   x1, w3, w1
-            add     x11, x11, x1
+            smaddl  x11, w3, w1, x11
             add     x11, x11, w4, SXTW
             movz    x1, #0xD1FFAB1E
             movk    x1, #15 LSL #16
@@ -52,7 +50,7 @@ G_M9511_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
             mov     x1, #10
             mul     x11, x11, x1
             str     x11, [x0]
-						;; size=108 bbWeight=1 PerfScore 22.50
+						;; size=100 bbWeight=1 PerfScore 27.50
 G_M9511_IG03:        ; bbWeight=1, epilog, nogc, extend
             ldp     fp, lr, [sp], #0x10
             ret     lr
@@ -66,7 +64,7 @@ G_M9511_IG04:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}
             brk_windows #0
 						;; size=20 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 144, prolog size 8, PerfScore 40.40, instruction count 36, allocated bytes for code 144 (MethodHash=c383dad8) for method System.TimeSpan:.ctor(int,int,int,int):this (FullOpts)
+; Total bytes of code 136, prolog size 8, PerfScore 44.60, instruction count 34, allocated bytes for code 136 (MethodHash=c383dad8) for method System.TimeSpan:.ctor(int,int,int,int):this (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -77,7 +75,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 36 (0x00024) Actual length = 144 (0x000090)
+  Function Length   : 34 (0x00022) Actual length = 136 (0x000088)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-8 (-5.41%) : 3979.dasm - System.TimeSpan:.ctor(int,int,int,int,int):this (FullOpts)
@@ -28,13 +28,11 @@ G_M3256_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
             ; byrRegs +[x0]
             movz    w11, #0xD1FFAB1E
             movk    w11, #1 LSL #16
-            smull   x11, w1, w11
-            mov     w1, #0xD1FFAB1E
-            smull   x1, w2, w1
-            add     x11, x11, x1
+            mov     w6, #0xD1FFAB1E
+            smull   x2, w2, w6
+            smaddl  x11, w1, w11, x2
             mov     w1, #60
-            smull   x1, w3, w1
-            add     x11, x11, x1
+            smaddl  x11, w3, w1, x11
             add     x11, x11, w4, SXTW
             mov     x1, #0xD1FFAB1E
             sxtw    x2, w5
@@ -54,7 +52,7 @@ G_M3256_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
             mov     x1, #10
             mul     x11, x11, x1
             str     x11, [x0]
-						;; size=112 bbWeight=1 PerfScore 27.50
+						;; size=104 bbWeight=1 PerfScore 32.50
 G_M3256_IG03:        ; bbWeight=1, epilog, nogc, extend
             ldp     fp, lr, [sp], #0x10
             ret     lr
@@ -68,7 +66,7 @@ G_M3256_IG04:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}
             brk_windows #0
 						;; size=20 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 148, prolog size 8, PerfScore 45.80, instruction count 37, allocated bytes for code 148 (MethodHash=c4dbf347) for method System.TimeSpan:.ctor(int,int,int,int,int):this (FullOpts)
+; Total bytes of code 140, prolog size 8, PerfScore 50.00, instruction count 35, allocated bytes for code 140 (MethodHash=c4dbf347) for method System.TimeSpan:.ctor(int,int,int,int,int):this (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -79,7 +77,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 37 (0x00025) Actual length = 148 (0x000094)
+  Function Length   : 35 (0x00023) Actual length = 140 (0x00008c)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+0 (0.00%) : 268744.dasm - System.Data.OleDb.OleDbConnectionInternal:GetSchemaRowsetInformation():System.Data.OleDb.SchemaSupport[]:this (FullOpts)
@@ -208,8 +208,8 @@ G_M44557_IG10:        ; bbWeight=4, gcrefRegs=10B80000 {x19 x20 x21 x23 x28}, by
             mul     w0, w0, w22
             add     x0, x1, w0, SXTW
             mov     w1, #20
-            umull   x1, w22, w1
-            add     x1, x1, #16
+            mov     x11, #16
+            smaddl  x1, w22, w1, x11
             add     x2, x19, x1
             ; byrRegs +[x2]
             str     x2, [fp, #0x28]	// [V18 tmp3]
@@ -231,7 +231,7 @@ G_M44557_IG10:        ; bbWeight=4, gcrefRegs=10B80000 {x19 x20 x21 x23 x28}, by
             ; gcrRegs -[x0]
             cmp     x0, x27
             beq     G_M44557_IG12
-						;; size=76 bbWeight=4 PerfScore 96.00
+						;; size=76 bbWeight=4 PerfScore 108.00
 G_M44557_IG11:        ; bbWeight=1, gcVars=000000000C000005 {V10 V18 V19 V26}, gcrefRegs=10B80004 {x2 x19 x20 x21 x23 x28}, byrefRegs=4000000 {x26}, gcvars, byref
             mov     x0, x27
             mov     x1, x2
@@ -269,8 +269,8 @@ G_M44557_IG13:        ; bbWeight=0.50, gcVars=000000000C000000 {V10 V26}, gcrefR
 						;; size=20 bbWeight=0.50 PerfScore 3.75
 G_M44557_IG14:        ; bbWeight=2, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref
             mov     w1, #20
-            umull   x1, w22, w1
-            add     x1, x1, #16
+            mov     x0, #16
+            smaddl  x1, w22, w1, x0
             add     x1, x19, x1
             ; byrRegs +[x1]
             add     x24, x1, #16
@@ -285,7 +285,7 @@ G_M44557_IG14:        ; bbWeight=2, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefReg
             ; gcr arg pop 0
             str     w0, [x24]
             add     w22, w22, #1
-						;; size=52 bbWeight=2 PerfScore 27.00
+						;; size=52 bbWeight=2 PerfScore 33.00
 G_M44557_IG15:        ; bbWeight=4, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref, isz
             ; byrRegs -[x24]
             cmp     w25, w22
@@ -406,7 +406,7 @@ G_M44557_IG25:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             ret     lr
 						;; size=28 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 872, prolog size 48, PerfScore 351.95, instruction count 218, allocated bytes for code 872 (MethodHash=cf4a51f2) for method System.Data.OleDb.OleDbConnectionInternal:GetSchemaRowsetInformation():System.Data.OleDb.SchemaSupport[]:this (FullOpts)
+; Total bytes of code 872, prolog size 48, PerfScore 369.95, instruction count 218, allocated bytes for code 872 (MethodHash=cf4a51f2) for method System.Data.OleDb.OleDbConnectionInternal:GetSchemaRowsetInformation():System.Data.OleDb.SchemaSupport[]:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
+0 (0.00%) : 269056.dasm - System.Data.OleDb.ColumnBinding:LengthValue():int:this (FullOpts)
@@ -85,8 +85,8 @@ G_M7439_IG04:        ; bbWeight=0.50, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, by
             cmp     w1, w2
             bhs     G_M7439_IG08
             mov     w2, #80
-            umull   x1, w1, w2
-            add     x1, x1, #16
+            mov     x3, #16
+            smaddl  x1, w1, w2, x3
             add     x0, x0, x1
             ; gcrRegs -[x0]
             ; byrRegs +[x0]
@@ -94,7 +94,7 @@ G_M7439_IG04:        ; bbWeight=0.50, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, by
             ; byrRegs -[x0]
             cmp     x0, w0, SXTW
             bne     G_M7439_IG07
-						;; size=92 bbWeight=0.50 PerfScore 18.75
+						;; size=92 bbWeight=0.50 PerfScore 20.25
 G_M7439_IG05:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             cmp     w0, #0
             csel    w0, w0, wzr, ge
@@ -117,7 +117,7 @@ G_M7439_IG08:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             brk_windows #0
 						;; size=20 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 240, prolog size 8, PerfScore 68.25, instruction count 60, allocated bytes for code 240 (MethodHash=8a93e2f0) for method System.Data.OleDb.ColumnBinding:LengthValue():int:this (FullOpts)
+; Total bytes of code 240, prolog size 8, PerfScore 69.75, instruction count 60, allocated bytes for code 240 (MethodHash=8a93e2f0) for method System.Data.OleDb.ColumnBinding:LengthValue():int:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
+0 (0.00%) : 272024.dasm - System.Diagnostics.NtProcessManager:GetProcessInfos(System.Diagnostics.PerformanceCounterLib,int,int,System.ReadOnlySpan`1[ubyte]):System.Diagnostics.ProcessInfo[] (FullOpts)
@@ -321,9 +321,9 @@ G_M61029_IG08:        ; bbWeight=16, gcrefRegs=8C80001 {x0 x19 x22 x23 x27}, byr
             cmp     w3, w11
             bhs     G_M61029_IG34
             mov     w11, #40
+            mov     x4, #16
             str     w3, [fp, #0xF4]	// [V14 loc10]
-            umull   x11, w3, w11
-            add     x11, x11, #16
+            smaddl  x11, w3, w11, x4
             add     x11, x1, x11
             ; byrRegs +[x11]
             ldp     q16, q17, [fp, #0xB0]
@@ -335,7 +335,7 @@ G_M61029_IG08:        ; bbWeight=16, gcrefRegs=8C80001 {x0 x19 x22 x23 x27}, byr
             ldr     w5, [x4, #0x0C]
             cmp     w5, w20
             beq     G_M61029_IG10
-						;; size=96 bbWeight=16 PerfScore 584.00
+						;; size=96 bbWeight=16 PerfScore 632.00
 G_M61029_IG09:        ; bbWeight=8, gcrefRegs=8C80001 {x0 x19 x22 x23 x27}, byrefRegs=1000800 {x11 x24}, byref, isz
             ; gcrRegs -[x1]
             ; byrRegs -[x2 x4]
@@ -915,7 +915,7 @@ G_M61029_IG34:        ; bbWeight=0, gcVars=00000000000000000000000000000000 {},
             brk_windows #0
 						;; size=20 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 2092, prolog size 64, PerfScore 5726.70, instruction count 523, allocated bytes for code 2092 (MethodHash=f3da119a) for method System.Diagnostics.NtProcessManager:GetProcessInfos(System.Diagnostics.PerformanceCounterLib,int,int,System.ReadOnlySpan`1[ubyte]):System.Diagnostics.ProcessInfo[] (FullOpts)
+; Total bytes of code 2092, prolog size 64, PerfScore 5774.70, instruction count 523, allocated bytes for code 2092 (MethodHash=f3da119a) for method System.Diagnostics.NtProcessManager:GetProcessInfos(System.Diagnostics.PerformanceCounterLib,int,int,System.ReadOnlySpan`1[ubyte]):System.Diagnostics.ProcessInfo[] (FullOpts)
 ; ============================================================
 
 Unwind Info:
libraries.pmi.windows.arm64.checked.mch
-4 (-7.14%) : 284280.dasm - System.Security.Cryptography.Pkcs.Asn1.Rfc3161Accuracy:get_TotalMicros():long:this (FullOpts)
@@ -27,21 +27,20 @@ G_M22893_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byre
             ldr     w1, [x0, #0x04]
             movz    w2, #0xD1FFAB1E
             movk    w2, #15 LSL #16
-            smull   x1, w1, w2
-            ldr     w2, [x0, #0x0C]
-            mov     w3, #0xD1FFAB1E
-            smull   x2, w2, w3
-            add     x1, x1, x2
+            ldr     w3, [x0, #0x0C]
+            mov     w4, #0xD1FFAB1E
+            smull   x3, w3, w4
+            smaddl  x1, w1, w2, x3
             ldr     w0, [x0, #0x14]
             ; byrRegs -[x0]
             add     x0, x1, w0, SXTW
-						;; size=40 bbWeight=1 PerfScore 16.00
+						;; size=36 bbWeight=1 PerfScore 18.50
 G_M22893_IG03:        ; bbWeight=1, epilog, nogc, extend
             ldp     fp, lr, [sp], #0x10
             ret     lr
 						;; size=8 bbWeight=1 PerfScore 2.00
 
-; Total bytes of code 56, prolog size 8, PerfScore 25.10, instruction count 14, allocated bytes for code 56 (MethodHash=8b78a692) for method System.Security.Cryptography.Pkcs.Asn1.Rfc3161Accuracy:get_TotalMicros():long:this (FullOpts)
+; Total bytes of code 52, prolog size 8, PerfScore 27.20, instruction count 13, allocated bytes for code 52 (MethodHash=8b78a692) for method System.Security.Cryptography.Pkcs.Asn1.Rfc3161Accuracy:get_TotalMicros():long:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -52,7 +51,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 14 (0x0000e) Actual length = 56 (0x000038)
+  Function Length   : 13 (0x0000d) Actual length = 52 (0x000034)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-12 (-5.66%) : 152362.dasm - Microsoft.VisualBasic.CompilerServices.ConversionResolution+OperatorCaches+FixedList:MoveToFront(int):this (FullOpts)
@@ -49,8 +49,8 @@ G_M2881_IG03:        ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, by
             cmp     w1, w5
             bhs     G_M2881_IG05
             mov     w6, #40
-            umull   x6, w1, w6
-            add     x6, x6, #16
+            mov     x7, #16
+            smaddl  x6, w1, w6, x7
             add     x4, x4, x6
             ; gcrRegs -[x4]
             ; byrRegs +[x4]
@@ -60,8 +60,8 @@ G_M2881_IG03:        ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, by
             cmp     w7, w5
             bhs     G_M2881_IG05
             mov     w9, #40
-            umull   x9, w7, w9
-            add     x9, x9, #16
+            mov     x10, #16
+            smaddl  x9, w7, w9, x10
             add     x8, x8, x9
             ; gcrRegs -[x8]
             ; byrRegs +[x8]
@@ -72,8 +72,7 @@ G_M2881_IG03:        ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, by
             cmp     w6, w5
             bhs     G_M2881_IG05
             mov     w9, #40
-            umull   x6, w6, w9
-            add     x6, x6, #16
+            smaddl  x6, w6, w9, x10
             add     x6, x8, x6
             ; byrRegs +[x6]
             str     w7, [x6, #0x1C]
@@ -83,8 +82,7 @@ G_M2881_IG03:        ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, by
             sxtw    w7, w2
             cmp     w7, w5
             bhs     G_M2881_IG05
-            umull   x7, w7, w9
-            add     x7, x7, #16
+            smaddl  x7, w7, w9, x10
             add     x6, x6, x7
             ; gcrRegs -[x6]
             ; byrRegs +[x6]
@@ -94,15 +92,14 @@ G_M2881_IG03:        ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, by
             sxtw    w7, w6
             cmp     w7, w5
             bhs     G_M2881_IG05
-            umull   x5, w7, w9
-            add     x5, x5, #16
+            smaddl  x5, w7, w9, x10
             add     x3, x3, x5
             ; gcrRegs -[x3]
             ; byrRegs +[x3]
             str     w1, [x3, #0x18]
             stp     w2, w6, [x4, #0x18]
             str     w1, [x0, #0x14]
-						;; size=176 bbWeight=0.50 PerfScore 22.50
+						;; size=164 bbWeight=0.50 PerfScore 29.25
 G_M2881_IG04:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
             ; gcrRegs -[x0 x8]
             ; byrRegs -[x3-x4]
@@ -114,7 +111,7 @@ G_M2881_IG05:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}
             brk_windows #0
 						;; size=8 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 212, prolog size 8, PerfScore 51.70, instruction count 53, allocated bytes for code 212 (MethodHash=9897f4be) for method Microsoft.VisualBasic.CompilerServices.ConversionResolution+OperatorCaches+FixedList:MoveToFront(int):this (FullOpts)
+; Total bytes of code 200, prolog size 8, PerfScore 57.25, instruction count 50, allocated bytes for code 200 (MethodHash=9897f4be) for method Microsoft.VisualBasic.CompilerServices.ConversionResolution+OperatorCaches+FixedList:MoveToFront(int):this (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -125,7 +122,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 53 (0x00035) Actual length = 212 (0x0000d4)
+  Function Length   : 50 (0x00032) Actual length = 200 (0x0000c8)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-4 (-4.35%) : 284113.dasm - System.Security.Cryptography.Pkcs.Rfc3161TimestampTokenInfo:get_AccuracyInMicroseconds():System.Nullable`1[long]:this (FullOpts)
@@ -61,19 +61,18 @@ G_M15821_IG05:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
             ; byrRegs -[x0]
             movz    w3, #0xD1FFAB1E
             movk    w3, #15 LSL #16
-            smull   x1, w1, w3
-            mov     w3, #0xD1FFAB1E
-            smull   x2, w2, w3
-            add     x1, x1, x2
+            mov     w4, #0xD1FFAB1E
+            smull   x2, w2, w4
+            smaddl  x1, w1, w3, x2
             add     x1, x1, w0, SXTW
             mov     w0, #1
-						;; size=48 bbWeight=0.50 PerfScore 8.50
+						;; size=44 bbWeight=0.50 PerfScore 9.75
 G_M15821_IG06:        ; bbWeight=0.50, epilog, nogc, extend
             ldp     fp, lr, [sp], #0x10
             ret     lr
 						;; size=8 bbWeight=0.50 PerfScore 1.00
 
-; Total bytes of code 92, prolog size 8, PerfScore 26.20, instruction count 23, allocated bytes for code 92 (MethodHash=2cf3c232) for method System.Security.Cryptography.Pkcs.Rfc3161TimestampTokenInfo:get_AccuracyInMicroseconds():System.Nullable`1[long]:this (FullOpts)
+; Total bytes of code 88, prolog size 8, PerfScore 27.05, instruction count 22, allocated bytes for code 88 (MethodHash=2cf3c232) for method System.Security.Cryptography.Pkcs.Rfc3161TimestampTokenInfo:get_AccuracyInMicroseconds():System.Nullable`1[long]:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -84,7 +83,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 23 (0x00017) Actual length = 92 (0x00005c)
+  Function Length   : 22 (0x00016) Actual length = 88 (0x000058)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+0 (0.00%) : 293816.dasm - System.Threading.Tasks.Dataflow.BatchBlock`1+BatchBlockTargetCore[System.__Canon]:ConsumeReservedMessagesNonGreedy():this (FullOpts)
@@ -160,8 +160,8 @@ G_M57869_IG03:        ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
             cmp     w20, w13
             bhs     G_M57869_IG36
             mov     w13, #24
-            umull   x13, w20, w13
-            add     x21, x13, #16
+            mov     x12, #16
+            smaddl  x21, w20, w13, x12
             add     x14, x14, x21
             ; gcrRegs -[x14]
             ; byrRegs +[x14]
@@ -185,7 +185,7 @@ G_M57869_IG03:        ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
             ldr     x1, [x1]
             ldr     x11, [x1, #0x10]
             cbz     x11, G_M57869_IG05
-						;; size=120 bbWeight=4 PerfScore 200.00
+						;; size=120 bbWeight=4 PerfScore 212.00
 G_M57869_IG04:        ; bbWeight=3.20, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x0]
             ; byrRegs -[x13-x14]
@@ -278,8 +278,8 @@ G_M57869_IG09:        ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
             cmp     w2, w13
             bhs     G_M57869_IG36
             mov     w13, #24
-            umull   x13, w2, w13
-            add     x13, x13, #16
+            mov     x12, #16
+            smaddl  x13, w2, w13, x12
             add     x14, x14, x13
             ; gcrRegs -[x14]
             ; byrRegs +[x14]
@@ -296,7 +296,7 @@ G_M57869_IG09:        ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
             cmp     w2, w20
             bge     G_M57869_IG34
             b       G_M57869_IG09
-						;; size=96 bbWeight=4 PerfScore 114.00
+						;; size=96 bbWeight=4 PerfScore 126.00
 G_M57869_IG10:        ; bbWeight=1, gcVars=00000000000000000800000000080000 {V00 V11}, gcrefRegs=84000 {x14 x19}, byrefRegs=0000 {}, gcvars, byref, isz
             ; gcrRegs +[x14]
             ; byrRegs -[x13-x14]
@@ -635,7 +635,7 @@ G_M57869_IG44:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             ret     lr
 						;; size=20 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 1260, prolog size 56, PerfScore 884.40, instruction count 315, allocated bytes for code 1260 (MethodHash=7e691df2) for method System.Threading.Tasks.Dataflow.BatchBlock`1+BatchBlockTargetCore[System.__Canon]:ConsumeReservedMessagesNonGreedy():this (FullOpts)
+; Total bytes of code 1260, prolog size 56, PerfScore 908.40, instruction count 315, allocated bytes for code 1260 (MethodHash=7e691df2) for method System.Threading.Tasks.Dataflow.BatchBlock`1+BatchBlockTargetCore[System.__Canon]:ConsumeReservedMessagesNonGreedy():this (FullOpts)
 ; ============================================================
 
 Unwind Info:
+0 (0.00%) : 293840.dasm - System.Threading.Tasks.Dataflow.BatchBlock`1+BatchBlockTargetCore[ubyte]:RetrievePostponedItemsGreedyBounded(ubyte):this (FullOpts)
@@ -291,8 +291,8 @@ G_M10151_IG14:        ; bbWeight=3.96, gcrefRegs=10380000 {x19 x20 x21 x28}, byr
             add     w14, w2, #1
             str     w14, [x21, #0x10]
             mov     w14, #24
-            umull   x14, w2, w14
-            add     x14, x14, #16
+            mov     x13, #16
+            smaddl  x14, w2, w14, x13
             add     x14, x28, x14
             ; byrRegs +[x14]
             add     x13, fp, #80	// [V39 tmp16]
@@ -302,7 +302,7 @@ G_M10151_IG14:        ; bbWeight=3.96, gcrefRegs=10380000 {x19 x20 x21 x28}, byr
             ldp     x12, x15, [x13], #0x10
             stp     x12, x15, [x14], #0x10
             b       G_M10151_IG16
-						;; size=44 bbWeight=3.96 PerfScore 49.50
+						;; size=44 bbWeight=3.96 PerfScore 61.38
 G_M10151_IG15:        ; bbWeight=3.96, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
             ; byrRegs -[x13-x14]
             add     x1, fp, #80	// [V39 tmp16]
@@ -352,8 +352,8 @@ G_M10151_IG19:        ; bbWeight=0.04, gcrefRegs=10380000 {x19 x20 x21 x28}, byr
             add     w14, w2, #1
             str     w14, [x21, #0x10]
             mov     w14, #24
-            umull   x14, w2, w14
-            add     x14, x14, #16
+            mov     x13, #16
+            smaddl  x14, w2, w14, x13
             add     x14, x28, x14
             ; byrRegs +[x14]
             add     x13, fp, #80	// [V39 tmp16]
@@ -363,7 +363,7 @@ G_M10151_IG19:        ; bbWeight=0.04, gcrefRegs=10380000 {x19 x20 x21 x28}, byr
             ldp     x12, x15, [x13], #0x10
             stp     x12, x15, [x14], #0x10
             b       G_M10151_IG21
-						;; size=44 bbWeight=0.04 PerfScore 0.50
+						;; size=44 bbWeight=0.04 PerfScore 0.62
 G_M10151_IG20:        ; bbWeight=0.04, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
             ; byrRegs -[x13-x14]
             add     x1, fp, #80	// [V39 tmp16]
@@ -513,8 +513,8 @@ G_M10151_IG34:        ; bbWeight=4, gcrefRegs=284000 {x14 x19 x21}, byrefRegs=00
             add     w12, w13, #1
             str     w12, [x21, #0x10]
             mov     w12, #24
-            umull   x13, w13, w12
-            add     x13, x13, #16
+            mov     x15, #16
+            smaddl  x13, w13, w12, x15
             add     x14, x14, x13
             ; gcrRegs -[x14]
             ; byrRegs +[x14]
@@ -524,7 +524,7 @@ G_M10151_IG34:        ; bbWeight=4, gcrefRegs=284000 {x14 x19 x21}, byrefRegs=00
             ldp     x12, x15, [x13], #0x10
             stp     x12, x15, [x14], #0x10
             b       G_M10151_IG36
-						;; size=44 bbWeight=4 PerfScore 50.00
+						;; size=44 bbWeight=4 PerfScore 62.00
 G_M10151_IG35:        ; bbWeight=4, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
             ; byrRegs -[x13-x14]
             add     x1, fp, #56	// [V48 tmp25]
@@ -797,7 +797,7 @@ G_M10151_IG59:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             ret     lr
 						;; size=28 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 1712, prolog size 64, PerfScore 1425.06, instruction count 428, allocated bytes for code 1712 (MethodHash=5104d858) for method System.Threading.Tasks.Dataflow.BatchBlock`1+BatchBlockTargetCore[ubyte]:RetrievePostponedItemsGreedyBounded(ubyte):this (FullOpts)
+; Total bytes of code 1712, prolog size 64, PerfScore 1449.06, instruction count 428, allocated bytes for code 1712 (MethodHash=5104d858) for method System.Threading.Tasks.Dataflow.BatchBlock`1+BatchBlockTargetCore[ubyte]:RetrievePostponedItemsGreedyBounded(ubyte):this (FullOpts)
 ; ============================================================
 
 Unwind Info:
+20 (+0.48%) : 29573.dasm - Microsoft.CodeAnalysis.CSharp.DecisionDagBuilder:MakeDecisionDag(byref,System.Collections.Generic.Dictionary`2[Microsoft.CodeAnalysis.CSharp.DecisionDagBuilder+DagState,Microsoft.CodeAnalysis.CSharp.DecisionDagBuilder+DagState]):Microsoft.CodeAnalysis.CSharp.DecisionDagBuilder+DecisionDag:this (FullOpts)
@@ -271,24 +271,24 @@
 ;  V260 tmp231      [V260,T198] (  2,  3   )     ref  ->  [fp+0x50]  spill-single-def "V06.[192..200)"
 ;  V261 tmp232      [V261,T203] (  2,  3   )     int  ->  x28         single-def "V06.[200..204)"
 ;  V262 tmp233      [V262,T199] (  2,  3   )     ref  ->  [fp+0x48]  spill-single-def "V06.[208..216)"
-;  V263 tmp234      [V263,T106] (  2,  6   )     ref  ->  x25         "V06.[216..224)"
+;  V263 tmp234      [V263,T106] (  2,  6   )     ref  ->  x24         "V06.[216..224)"
 ;  V264 tmp235      [V264,T107] (  2,  6   )     ref  ->  x26         "V06.[224..232)"
-;  V265 tmp236      [V265,T108] (  2,  6   )     ref  ->   x2         "V06.[232..240)"
+;  V265 tmp236      [V265,T108] (  2,  6   )     ref  ->  x25         "V06.[232..240)"
 ;  V266 tmp237      [V266,T109] (  2,  6   )     ref  ->   x3         "V06.[240..248)"
 ;  V267 tmp238      [V267,T111] (  2,  6   )     int  ->   x4         "V06.[248..252)"
-;  V268 tmp239      [V268,T110] (  2,  6   )     ref  ->  x24         "V06.[256..264)"
-;  V269 tmp240      [V269,T122] (  3,  6   )     ref  ->  x25         "V07.[000..008)"
+;  V268 tmp239      [V268,T110] (  2,  6   )     ref  ->   x2         "V06.[256..264)"
+;  V269 tmp240      [V269,T122] (  3,  6   )     ref  ->  x24         "V07.[000..008)"
 ;  V270 tmp241      [V270,T76] (  5, 10   )     ref  ->  x26         "V07.[008..016)"
-;  V271 tmp242      [V271,T123] (  3,  6   )     ref  ->  [fp+0x40]  spill-single-def "V07.[016..024)"
-;  V272 tmp243      [V272,T124] (  3,  6   )     ref  ->  [fp+0x38]  spill-single-def "V07.[024..032)"
+;  V271 tmp242      [V271,T123] (  3,  6   )     ref  ->  x25         "V07.[016..024)"
+;  V272 tmp243      [V272,T124] (  3,  6   )     ref  ->  [fp+0x40]  spill-single-def "V07.[024..032)"
 ;  V273 tmp244      [V273,T143] (  3,  6   )     int  ->  [fp+0x100]  spill-single-def "V07.[032..036)"
-;  V274 tmp245      [V274,T125] (  3,  6   )     ref  ->  x24         "V07.[040..048)"
-;  V275 tmp246      [V275,T166] (  2,  4   )     ref  ->  x25         "V08.[000..008)"
+;  V274 tmp245      [V274,T125] (  3,  6   )     ref  ->  [fp+0x38]  spill-single-def "V07.[040..048)"
+;  V275 tmp246      [V275,T166] (  2,  4   )     ref  ->  x24         "V08.[000..008)"
 ;  V276 tmp247      [V276,T50] (  5,  9   )     ref  ->  x27         "V08.[008..016)"
 ;  V277 tmp248      [V277,T52] (  5, 10   )     ref  ->  [fp+0x30]  "V08.[016..024)"
-;  V278 tmp249      [V278,T167] (  2,  4   )     ref  ->   x2         "V08.[024..032)"
-;  V279 tmp250      [V279,T175] (  2,  4   )     int  ->   x3         "V08.[032..036)"
-;  V280 tmp251      [V280,T168] (  2,  4   )     ref  ->  x24         "V08.[040..048)"
+;  V278 tmp249      [V278,T167] (  2,  4   )     ref  ->  x26         "V08.[024..032)"
+;  V279 tmp250      [V279,T175] (  2,  4   )     int  ->   x2         "V08.[032..036)"
+;  V280 tmp251      [V280,T168] (  2,  4   )     ref  ->   x3         "V08.[040..048)"
 ;  V281 tmp252      [V281,T126] (  2,  4   )     ref  ->   x1         "V10.[008..016)"
 ;  V282 tmp253      [V282,T84] (  4,  8   )     ref  ->   x0         "V10.[016..024)"
 ;* V283 tmp254      [V283    ] (  0,  0   )     int  ->  zero-ref    "V55.[000..004)"
@@ -330,32 +330,32 @@
 ;* V319 tmp290      [V319    ] (  0,  0   )     ref  ->  zero-ref    "V59.[024..032)"
 ;* V320 tmp291      [V320    ] (  0,  0   )     int  ->  zero-ref    "V59.[032..036)"
 ;* V321 tmp292      [V321    ] (  0,  0   )     ref  ->  zero-ref    "V59.[040..048)"
-;  V322 tmp293      [V322,T127] (  3,  6   )     ref  ->  x25         "V57.[000..008)"
+;  V322 tmp293      [V322,T127] (  3,  6   )     ref  ->  x24         "V57.[000..008)"
 ;  V323 tmp294      [V323,T128] (  3,  6   )     ref  ->  x27         "V57.[008..016)"
-;  V324 tmp295      [V324,T129] (  3,  6   )     ref  ->  x26         "V57.[016..024)"
-;  V325 tmp296      [V325,T130] (  3,  6   )     ref  ->   x2         "V57.[024..032)"
-;  V326 tmp297      [V326,T144] (  3,  6   )     int  ->   x3         "V57.[032..036)"
-;  V327 tmp298      [V327,T131] (  3,  6   )     ref  ->  x24         "V57.[040..048)"
-;  V328 tmp299      [V328,T169] (  2,  4   )     ref  ->  x25         "V67.[000..008)"
+;  V324 tmp295      [V324,T129] (  3,  6   )     ref  ->  x25         "V57.[016..024)"
+;  V325 tmp296      [V325,T130] (  3,  6   )     ref  ->  x26         "V57.[024..032)"
+;  V326 tmp297      [V326,T144] (  3,  6   )     int  ->   x2         "V57.[032..036)"
+;  V327 tmp298      [V327,T131] (  3,  6   )     ref  ->   x3         "V57.[040..048)"
+;  V328 tmp299      [V328,T169] (  2,  4   )     ref  ->  x24         "V67.[000..008)"
 ;* V329 tmp300      [V329,T238] (  0,  0   )     ref  ->  zero-ref    "V67.[008..016)"
 ;* V330 tmp301      [V330,T239] (  0,  0   )     ref  ->  zero-ref    "V67.[016..024)"
-;  V331 tmp302      [V331,T170] (  2,  4   )     ref  ->  [fp+0x18]  spill-single-def "V67.[024..032)"
+;  V331 tmp302      [V331,T170] (  2,  4   )     ref  ->  x26         "V67.[024..032)"
 ;  V332 tmp303      [V332,T176] (  2,  4   )     int  ->  [fp+0xF8]  spill-single-def "V67.[032..036)"
-;  V333 tmp304      [V333,T171] (  2,  4   )     ref  ->  x24         "V67.[040..048)"
-;  V334 tmp305      [V334,T89] (  3,  8   )     ref  ->  x25         "V85.[000..008)"
+;  V333 tmp304      [V333,T171] (  2,  4   )     ref  ->  [fp+0x18]  spill-single-def "V67.[040..048)"
+;  V334 tmp305      [V334,T89] (  3,  8   )     ref  ->  x24         "V85.[000..008)"
 ;  V335 tmp306      [V335,T90] (  3,  8   )     ref  ->  x26         "V85.[008..016)"
-;  V336 tmp307      [V336,T91] (  3,  8   )     ref  ->  registers   "V85.[016..024)"
+;  V336 tmp307      [V336,T91] (  3,  8   )     ref  ->  x25         "V85.[016..024)"
 ;  V337 tmp308      [V337,T92] (  3,  8   )     ref  ->  registers   "V85.[024..032)"
 ;  V338 tmp309      [V338,T94] (  3,  8   )     int  ->  registers   "V85.[032..036)"
 ;  V339 tmp310      [V339,T93] (  3,  8   )     ref  ->  registers   "V85.[040..048)"
-;  V340 tmp311      [V340,T77] (  5, 10   )     ref  ->  x25         "V87.[000..008)"
+;  V340 tmp311      [V340,T77] (  5, 10   )     ref  ->  registers   "V87.[000..008)"
 ;  V341 tmp312      [V341,T78] (  5, 10   )     ref  ->  registers   "V87.[008..016)"
 ;  V342 tmp313      [V342,T79] (  5, 10   )     ref  ->  registers   "V87.[016..024)"
 ;  V343 tmp314      [V343,T80] (  5, 10   )     ref  ->  registers   "V87.[024..032)"
 ;  V344 tmp315      [V344,T82] (  5, 10   )     int  ->  registers   "V87.[032..036)"
 ;  V345 tmp316      [V345,T81] (  5, 10   )     ref  ->  registers   "V87.[040..048)"
 ;  V346 tmp317      [V346,T33] (  7, 28   )   byref  ->   x0         "Spilling address for field-by-field copy"
-;  V347 tmp318      [V347,T34] (  7, 28   )   byref  ->  x24         "Spilling address for field-by-field copy"
+;  V347 tmp318      [V347,T34] (  7, 28   )   byref  ->   x2         "Spilling address for field-by-field copy"
 ;  V348 tmp319      [V348,T61] (  3, 12   )   byref  ->   x0         "Spilling address for field-by-field copy"
 ;  V349 tmp320      [V349,T62] (  3, 12   )     ref  ->  x14         "arr expr"
 ;  V350 tmp321      [V350,T69] (  3, 12   )     int  ->  x15         "index expr"
@@ -555,9 +555,11 @@ G_M31383_IG08:        ; bbWeight=1, gcrefRegs=500000 {x20 x22}, byrefRegs=80000
 G_M31383_IG09:        ; bbWeight=2, gcVars=00000000000000FFFFF000000000000000000000000000000000000000000000 {V239 V240 V241 V242 V244 V245 V246 V247 V248 V250 V251 V252 V253 V254 V256 V257 V258 V259 V260 V262}, gcrefRegs=F71800F {x0 x1 x2 x3 x15 xip0 x20 x21 x22 x24 x25 x26 x27}, byrefRegs=0000 {}, gcvars, byref, isz
             ; gcrRegs -[x4-x6 x8-x13]
             ; GC ptr vars -{V307 V309}
-            stp     x3, x2, [fp, #0x38]	// [V272 tmp243], [V271 tmp242]
-            ; GC ptr vars +{V271 V272}
+            str     x3, [fp, #0x40]	// [V272 tmp243]
+            ; GC ptr vars +{V272}
             str     w4, [fp, #0xD1FFAB1E]	// [V273 tmp244]
+            str     x2, [fp, #0x38]	// [V274 tmp245]
+            ; GC ptr vars +{V274}
             mov     x0, x26
             ldr     x27, [x26]
             ; gcrRegs -[x27]
@@ -577,14 +579,15 @@ G_M31383_IG09:        ; bbWeight=2, gcVars=00000000000000FFFFF000000000000000000
             ; gcrRegs -[x0-x1]
             ; gcr arg pop 0
             cbnz    w0, G_M31383_IG20
-            ldp     x2, x26, [fp, #0x38]	// [V272 tmp243], [V271 tmp242]
-            ; gcrRegs +[x2]
-            ldr     w3, [fp, #0xD1FFAB1E]	// [V273 tmp244]
+            ldr     x26, [fp, #0x40]	// [V272 tmp243]
+            ldr     w2, [fp, #0xD1FFAB1E]	// [V273 tmp244]
+            ldr     x3, [fp, #0x38]	// [V274 tmp245]
+            ; gcrRegs +[x3]
             b       G_M31383_IG21
-						;; size=68 bbWeight=2 PerfScore 61.00
+						;; size=76 bbWeight=2 PerfScore 65.00
 G_M31383_IG10:        ; bbWeight=0, gcVars=0000000000000000000000000000000000000000000000000000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
-            ; gcrRegs -[x2 x20-x22 x24-x27]
-            ; GC ptr vars -{V239 V240 V241 V242 V244 V245 V246 V247 V248 V250 V251 V252 V253 V254 V256 V257 V258 V259 V260 V262 V271 V272}
+            ; gcrRegs -[x3 x20-x22 x24-x27]
+            ; GC ptr vars -{V239 V240 V241 V242 V244 V245 V246 V247 V248 V250 V251 V252 V253 V254 V256 V257 V258 V259 V260 V262 V272 V274}
             movz    x0, #0xD1FFAB1E      // code for Microsoft.CodeAnalysis.Shared.Collections.TemporaryArray`1[Microsoft.CodeAnalysis.CSharp.DecisionDagBuilder+StateForCase]:ThrowIndexOutOfRangeException()
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
@@ -708,20 +711,21 @@ G_M31383_IG19:        ; bbWeight=0, gcVars=0000000000000000000000000000000000000
             bl      CORINFO_HELP_RNGCHKFAIL
             ; gcr arg pop 0
 						;; size=4 bbWeight=0 PerfScore 0.00
-G_M31383_IG20:        ; bbWeight=2, gcVars=00000000000000FFFFF000000000000018000000000000000000000000000000 {V239 V240 V241 V242 V244 V245 V246 V247 V248 V250 V251 V252 V253 V254 V256 V257 V258 V259 V260 V262 V271 V272}, gcrefRegs=7700000 {x20 x21 x22 x24 x25 x26}, byrefRegs=0000 {}, gcvars, byref
+G_M31383_IG20:        ; bbWeight=2, gcVars=00000000000000FFFFF000000000000030000000000000000000000000000000 {V239 V240 V241 V242 V244 V245 V246 V247 V248 V250 V251 V252 V253 V254 V256 V257 V258 V259 V260 V262 V272 V274}, gcrefRegs=7700000 {x20 x21 x22 x24 x25 x26}, byrefRegs=0000 {}, gcvars, byref
             ; gcrRegs +[x20-x22 x24-x26]
-            ; GC ptr vars +{V123 V180 V182 V183 V184 V185 V186 V187 V188 V189 V190 V191 V192 V193 V199 V239 V240 V241 V242 V244 V245 V246 V247 V248 V250 V251 V252 V253 V254 V256 V257 V258 V259 V260 V262 V271 V272}
+            ; GC ptr vars +{V180 V182 V183 V184 V185 V186 V187 V188 V189 V190 V191 V192 V193 V199 V239 V240 V241 V242 V244 V245 V246 V247 V248 V250 V251 V252 V253 V254 V256 V257 V258 V259 V260 V262 V272 V274}
             mov     x27, x26
             ; gcrRegs +[x27]
-            ldp     x2, x26, [fp, #0x38]	// [V272 tmp243], [V271 tmp242]
-            ; gcrRegs +[x2]
-            ldr     w3, [fp, #0xD1FFAB1E]	// [V273 tmp244]
-						;; size=12 bbWeight=2 PerfScore 11.00
-G_M31383_IG21:        ; bbWeight=2, gcVars=00000000000000FFFFF000000000000000000000000000000000000000000000 {V239 V240 V241 V242 V244 V245 V246 V247 V248 V250 V251 V252 V253 V254 V256 V257 V258 V259 V260 V262}, gcrefRegs=F700004 {x2 x20 x21 x22 x24 x25 x26 x27}, byrefRegs=0000 {}, gcvars, byref, isz
-            ; GC ptr vars -{V123 V180 V182 V183 V184 V185 V186 V187 V188 V189 V190 V191 V192 V193 V199 V271 V272}
+            ldr     x26, [fp, #0x40]	// [V272 tmp243]
+            ldr     w2, [fp, #0xD1FFAB1E]	// [V273 tmp244]
+            ldr     x3, [fp, #0x38]	// [V274 tmp245]
+            ; gcrRegs +[x3]
+						;; size=16 bbWeight=2 PerfScore 13.00
+G_M31383_IG21:        ; bbWeight=2, gcVars=00000000000000FFFFF000000000000000000000000000000000000000000000 {V239 V240 V241 V242 V244 V245 V246 V247 V248 V250 V251 V252 V253 V254 V256 V257 V258 V259 V260 V262}, gcrefRegs=F700008 {x3 x20 x21 x22 x24 x25 x26 x27}, byrefRegs=0000 {}, gcvars, byref, isz
+            ; GC ptr vars -{V180 V182 V183 V184 V185 V186 V187 V188 V189 V190 V191 V192 V193 V199 V272 V274}
             cbz     x27, G_M31383_IG23
 						;; size=4 bbWeight=2 PerfScore 2.00
-G_M31383_IG22:        ; bbWeight=1, gcrefRegs=F700004 {x2 x20 x21 x22 x24 x25 x26 x27}, byrefRegs=0000 {}, byref, isz
+G_M31383_IG22:        ; bbWeight=1, gcrefRegs=F700008 {x3 x20 x21 x22 x24 x25 x26 x27}, byrefRegs=0000 {}, byref, isz
             ldr     x0, [x27]
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
@@ -729,10 +733,10 @@ G_M31383_IG22:        ; bbWeight=1, gcrefRegs=F700004 {x2 x20 x21 x22 x24 x25 x2
             cmp     x0, x1
             beq     G_M31383_IG30
 						;; size=24 bbWeight=1 PerfScore 6.00
-G_M31383_IG23:        ; bbWeight=2, gcrefRegs=F700004 {x2 x20 x21 x22 x24 x25 x26 x27}, byrefRegs=0000 {}, byref, isz
-            str     x2, [fp, #0x18]	// [V331 tmp302]
-            ; GC ptr vars +{V331}
-            str     w3, [fp, #0xF8]	// [V332 tmp303]
+G_M31383_IG23:        ; bbWeight=2, gcrefRegs=F700008 {x3 x20 x21 x22 x24 x25 x26 x27}, byrefRegs=0000 {}, byref, isz
+            str     w2, [fp, #0xF8]	// [V332 tmp303]
+            str     x3, [fp, #0x18]	// [V333 tmp304]
+            ; GC ptr vars +{V333}
             ldr     x4, [x22, #0x08]
             ; gcrRegs +[x4]
             str     x4, [fp, #0xF0]	// [V68 tmp39]
@@ -744,7 +748,7 @@ G_M31383_IG23:        ; bbWeight=2, gcrefRegs=F700004 {x2 x20 x21 x22 x24 x25 x2
             ; gcrRegs +[x0]
             ldr     w1, [x0, #0x08]
             cmp     w1, w5
-            ldr     x2, [fp, #0x18]	// [V331 tmp302]
+            ldr     x3, [fp, #0x18]	// [V333 tmp304]
             bge     G_M31383_IG25
             ldr     w0, [x0, #0x08]
             ; gcrRegs -[x0]
@@ -752,8 +756,8 @@ G_M31383_IG23:        ; bbWeight=2, gcrefRegs=F700004 {x2 x20 x21 x22 x24 x25 x2
             cmp     w1, w5
             blt     G_M31383_IG31
 						;; size=64 bbWeight=2 PerfScore 51.00
-G_M31383_IG24:        ; bbWeight=2, gcVars=00000000000000FFFFF004000000000000000000000000000000000080000000 {V68 V239 V240 V241 V242 V244 V245 V246 V247 V248 V250 V251 V252 V253 V254 V256 V257 V258 V259 V260 V262 V331}, gcrefRegs=F700010 {x4 x20 x21 x22 x24 x25 x26 x27}, byrefRegs=0000 {}, gcvars, byref
-            ; gcrRegs -[x2]
+G_M31383_IG24:        ; bbWeight=2, gcVars=00000000000000FFFFF008000000000000000000000000000000000080000000 {V68 V239 V240 V241 V242 V244 V245 V246 V247 V248 V250 V251 V252 V253 V254 V256 V257 V258 V259 V260 V262 V333}, gcrefRegs=F700010 {x4 x20 x21 x22 x24 x25 x26 x27}, byrefRegs=0000 {}, gcvars, byref
+            ; gcrRegs -[x3]
             add     x0, x4, #8
             ; byrRegs +[x0]
             movz    x6, #0xD1FFAB1E      // code for System.Array:Resize[Microsoft.CodeAnalysis.CSharp.DecisionDagBuilder+StateForCase](byref,int)
@@ -764,13 +768,13 @@ G_M31383_IG24:        ; bbWeight=2, gcVars=00000000000000FFFFF004000000000000000
             ; gcrRegs -[x4]
             ; byrRegs -[x0]
             ; gcr arg pop 0
-            ldr     x2, [fp, #0x18]	// [V331 tmp302]
-            ; gcrRegs +[x2]
+            ldr     x3, [fp, #0x18]	// [V333 tmp304]
+            ; gcrRegs +[x3]
             ldr     x4, [fp, #0xF0]	// [V68 tmp39]
             ; gcrRegs +[x4]
             ldr     w5, [fp, #0xD1FFAB1E]	// [V69 tmp40]
 						;; size=36 bbWeight=2 PerfScore 24.00
-G_M31383_IG25:        ; bbWeight=2, gcrefRegs=F700014 {x2 x4 x20 x21 x22 x24 x25 x26 x27}, byrefRegs=0000 {}, byref, isz
+G_M31383_IG25:        ; bbWeight=2, gcrefRegs=F700018 {x3 x4 x20 x21 x22 x24 x25 x26 x27}, byrefRegs=0000 {}, byref, isz
             ldr     x14, [x4, #0x08]
             ; gcrRegs +[x14]
             ldr     w15, [x4, #0x10]
@@ -778,17 +782,17 @@ G_M31383_IG25:        ; bbWeight=2, gcrefRegs=F700014 {x2 x4 x20 x21 x22 x24 x25
             cmp     w15, w12
             bhs     G_M31383_IG19
             mov     w12, #48
-            umull   x15, w15, w12
-            add     x15, x15, #16
+            mov     xip0, #16
+            smaddl  x15, w15, w12, xip0
             add     x0, x14, x15
             ; byrRegs +[x0]
             mov     x14, x0
             ; gcrRegs -[x14]
             ; byrRegs +[x14]
-            mov     x15, x25
+            mov     x15, x24
             ; gcrRegs +[x15]
             bl      CORINFO_HELP_CHECKED_ASSIGN_REF
-            ; gcrRegs -[x15 x25]
+            ; gcrRegs -[x15 x24]
             ; byrRegs -[x14]
             add     x14, x0, #8
             ; byrRegs +[x14]
@@ -799,30 +803,30 @@ G_M31383_IG25:        ; bbWeight=2, gcrefRegs=F700014 {x2 x4 x20 x21 x22 x24 x25
             ; byrRegs -[x14]
             add     x14, x0, #16
             ; byrRegs +[x14]
-            mov     x15, x26
+            mov     x15, x25
             ; gcrRegs +[x15]
             bl      CORINFO_HELP_CHECKED_ASSIGN_REF
             ; gcrRegs -[x15]
             ; byrRegs -[x14]
             add     x14, x0, #24
             ; byrRegs +[x14]
-            mov     x15, x2
+            mov     x15, x26
             ; gcrRegs +[x15]
-            ; GC ptr vars -{V331}
             bl      CORINFO_HELP_CHECKED_ASSIGN_REF
-            ; gcrRegs -[x2 x15]
+            ; gcrRegs -[x15 x26]
             ; byrRegs -[x14]
-            ldr     w3, [fp, #0xF8]	// [V332 tmp303]
-            str     w3, [x0, #0x20]
+            ldr     w2, [fp, #0xF8]	// [V332 tmp303]
+            str     w2, [x0, #0x20]
             add     x14, x0, #40
             ; byrRegs +[x14]
-            mov     x15, x24
+            mov     x15, x3
...
libraries_tests.pmi.windows.arm64.checked.mch
-4 (-6.67%) : 285714.dasm - NuGet.Packaging.Signing.Accuracy:GetTotalMicroseconds():System.Nullable`1[long]:this (FullOpts)
@@ -12,11 +12,11 @@
 ;* V01 loc0         [V01    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op <System.Nullable`1[int]>
 ;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V03 tmp1         [V03,T02] (  2,  4   )    long  ->   x2         "impAppendStmt"
-;  V04 tmp2         [V04,T03] (  2,  4   )    long  ->   x1         "impAppendStmt"
+;  V04 tmp2         [V04,T03] (  2,  4   )    long  ->   x2         "impAppendStmt"
 ;* V05 tmp3         [V05    ] (  0,  0   )  struct (16) zero-ref    multireg-ret ld-addr-op "NewObj constructor temp" <System.Nullable`1[long]>
 ;* V06 tmp4         [V06    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V07 tmp5         [V07    ] (  0,  0   )   ubyte  ->  zero-ref    "field V01.hasValue (fldOffset=0x0)" P-INDEP
-;  V08 tmp6         [V08,T01] (  6,  6   )     int  ->  registers   "field V01.value (fldOffset=0x4)" P-INDEP
+;  V08 tmp6         [V08,T01] (  6,  6   )     int  ->   x1         "field V01.value (fldOffset=0x4)" P-INDEP
 ;  V09 tmp7         [V09,T04] (  2,  2   )   ubyte  ->   x0         single-def "field V05.hasValue (fldOffset=0x0)" P-INDEP
 ;  V10 tmp8         [V10,T05] (  2,  2   )    long  ->   x1         single-def "field V05.value (fldOffset=0x8)" P-INDEP
 ;
@@ -34,19 +34,18 @@ G_M62911_IG02:        ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
             smull   x2, w1, w2
             ldr     w1, [x0, #0x14]
             mov     w3, #0xD1FFAB1E
-            smull   x1, w1, w3
-            add     x1, x2, x1
-            ldr     w0, [x0, #0x1C]
-            ; gcrRegs -[x0]
-            add     x1, x1, w0, SXTW
+            smaddl  x2, w1, w3, x2
+            ldr     w1, [x0, #0x1C]
+            add     x1, x2, w1, SXTW
             mov     w0, #1
-						;; size=44 bbWeight=1 PerfScore 16.50
+            ; gcrRegs -[x0]
+						;; size=40 bbWeight=1 PerfScore 19.00
 G_M62911_IG03:        ; bbWeight=1, epilog, nogc, extend
             ldp     fp, lr, [sp], #0x10
             ret     lr
 						;; size=8 bbWeight=1 PerfScore 2.00
 
-; Total bytes of code 60, prolog size 8, PerfScore 26.00, instruction count 15, allocated bytes for code 60 (MethodHash=e4d60a40) for method NuGet.Packaging.Signing.Accuracy:GetTotalMicroseconds():System.Nullable`1[long]:this (FullOpts)
+; Total bytes of code 56, prolog size 8, PerfScore 28.10, instruction count 14, allocated bytes for code 56 (MethodHash=e4d60a40) for method NuGet.Packaging.Signing.Accuracy:GetTotalMicroseconds():System.Nullable`1[long]:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -57,7 +56,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 15 (0x0000f) Actual length = 60 (0x00003c)
+  Function Length   : 14 (0x0000e) Actual length = 56 (0x000038)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-4 (-5.88%) : 277668.dasm - Microsoft.Diagnostics.Runtime.Utilities.MINIDUMP_MODULE:get_Timestamp():System.DateTime:this (FullOpts)
@@ -22,24 +22,23 @@ G_M54842_IG02:        ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
             ; gcrRegs -[x0]
             movz    w1, #0xD1FFAB1E
             movk    w1, #152 LSL #16
-            umull   x0, w0, w1
-            movz    x1, #0xD1FFAB1E
-            movk    x1, #0xD1FFAB1E LSL #16
-            movk    x1, #0xD1FFAB1E LSL #32
-            movk    x1, #0xD1FFAB1E LSL #48
-            add     x0, x0, x1
+            movz    x2, #0xD1FFAB1E
+            movk    x2, #0xD1FFAB1E LSL #16
+            movk    x2, #0xD1FFAB1E LSL #32
+            movk    x2, #0xD1FFAB1E LSL #48
+            smaddl  x0, w0, w1, x2
             movz    x1, #0xD1FFAB1E      // code for System.DateTime:FromFileTimeUtc(long):System.DateTime
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
             ldr     x1, [x1]
-						;; size=52 bbWeight=1 PerfScore 13.00
+						;; size=48 bbWeight=1 PerfScore 15.50
 G_M54842_IG03:        ; bbWeight=1, epilog, nogc, extend
             ldp     fp, lr, [sp], #0x10
             br      x1
             ; gcr arg pop 0
 						;; size=8 bbWeight=1 PerfScore 2.00
 
-; Total bytes of code 68, prolog size 8, PerfScore 23.30, instruction count 17, allocated bytes for code 68 (MethodHash=2f5a29c5) for method Microsoft.Diagnostics.Runtime.Utilities.MINIDUMP_MODULE:get_Timestamp():System.DateTime:this (FullOpts)
+; Total bytes of code 64, prolog size 8, PerfScore 25.40, instruction count 16, allocated bytes for code 64 (MethodHash=2f5a29c5) for method Microsoft.Diagnostics.Runtime.Utilities.MINIDUMP_MODULE:get_Timestamp():System.DateTime:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -50,7 +49,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 17 (0x00011) Actual length = 68 (0x000044)
+  Function Length   : 16 (0x00010) Actual length = 64 (0x000040)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-4 (-2.38%) : 142046.dasm - System.Tests.DateTimeTests+<>c__DisplayClass32_0:b__0():System.Object:this (FullOpts)
@@ -59,11 +59,10 @@ G_M37749_IG02:        ; bbWeight=1.00, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b
 						;; size=12 bbWeight=1.00 PerfScore 4.51
 G_M37749_IG03:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
             mov     w1, #10
-            smull   x0, w0, w1
-            movz    x1, #0xD1FFAB1E
-            movk    x1, #0xD1FFAB1E LSL #16
-            movk    x1, #8 LSL #32
-            add     x19, x0, x1
+            movz    x2, #0xD1FFAB1E
+            movk    x2, #0xD1FFAB1E LSL #16
+            movk    x2, #8 LSL #32
+            smaddl  x19, w0, w1, x2
             mov     x0, x19
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
@@ -71,7 +70,7 @@ G_M37749_IG03:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             movk    x1, #0xD1FFAB1E LSL #48
             cmp     x0, x1
             bls     G_M37749_IG05
-						;; size=52 bbWeight=1 PerfScore 8.50
+						;; size=48 bbWeight=1 PerfScore 11.00
 G_M37749_IG04:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             movz    x1, #8
             movk    x1, #0xD1FFAB1E LSL #16
@@ -108,7 +107,7 @@ G_M37749_IG07:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
             brk_windows #0
 						;; size=24 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 168, prolog size 12, PerfScore 43.57, instruction count 42, allocated bytes for code 168 (MethodHash=fc7b6c8a) for method System.Tests.DateTimeTests+<>c__DisplayClass32_0:<Ctor_InvalidMicrosecond_ThrowsArgumentOutOfRangeException>b__0():System.Object:this (FullOpts)
+; Total bytes of code 164, prolog size 12, PerfScore 45.67, instruction count 41, allocated bytes for code 164 (MethodHash=fc7b6c8a) for method System.Tests.DateTimeTests+<>c__DisplayClass32_0:<Ctor_InvalidMicrosecond_ThrowsArgumentOutOfRangeException>b__0():System.Object:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -119,7 +118,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 42 (0x0002a) Actual length = 168 (0x0000a8)
+  Function Length   : 41 (0x00029) Actual length = 164 (0x0000a4)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+0 (0.00%) : 349104.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2+Enumerator[ubyte,System.Nullable`1[int]]:MoveNext():ubyte:this (FullOpts)
@@ -117,15 +117,15 @@ G_M27082_IG06:        ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {
             cmp     w0, w2
             bhs     G_M27082_IG10
             mov     w2, #20
-            umull   x0, w0, w2
-            add     x0, x0, #16
+            mov     x3, #16
+            smaddl  x0, w0, w2, x3
             add     x0, x1, x0
             ; byrRegs +[x0]
             ldr     w1, [x0, #0x04]
             ; gcrRegs -[x1]
             cmn     w1, #1
             blt     G_M27082_IG03
-						;; size=136 bbWeight=2 PerfScore 92.00
+						;; size=136 bbWeight=2 PerfScore 98.00
 G_M27082_IG07:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80001 {x0 x19}, byref
             ; gcrRegs -[x21]
             ldrb    w1, [x0, #0x08]
@@ -161,7 +161,7 @@ G_M27082_IG10:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             brk_windows #0
 						;; size=8 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 320, prolog size 20, PerfScore 239.00, instruction count 80, allocated bytes for code 320 (MethodHash=4b419635) for method Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2+Enumerator[ubyte,System.Nullable`1[int]]:MoveNext():ubyte:this (FullOpts)
+; Total bytes of code 320, prolog size 20, PerfScore 245.00, instruction count 80, allocated bytes for code 320 (MethodHash=4b419635) for method Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2+Enumerator[ubyte,System.Nullable`1[int]]:MoveNext():ubyte:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
+0 (0.00%) : 349168.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2+ValueCollection[ubyte,System.Nullable`1[int]]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
@@ -217,15 +217,15 @@ G_M18410_IG09:        ; bbWeight=8, gcrefRegs=100000 {x20}, byrefRegs=400000 {x2
             cmp     w0, w2
             bhs     G_M18410_IG08
             mov     w2, #20
-            umull   x0, w0, w2
-            add     x0, x0, #16
+            mov     x3, #16
+            smaddl  x0, w0, w2, x3
             add     x1, x1, x0
             ; gcrRegs -[x1]
             ; byrRegs +[x1]
             ldr     w0, [x1, #0x04]
             cmn     w0, #1
             blt     G_M18410_IG11
-						;; size=68 bbWeight=8 PerfScore 192.00
+						;; size=68 bbWeight=8 PerfScore 216.00
 G_M18410_IG10:        ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=400002 {x1 x22}, byref
             add     w0, w19, #1
             sxtw    w26, w0
@@ -351,7 +351,7 @@ G_M18410_IG22:        ; bbWeight=0, funclet epilog, nogc, extend
             ret     lr
 						;; size=24 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 792, prolog size 44, PerfScore 422.70, instruction count 198, allocated bytes for code 792 (MethodHash=52eeb815) for method Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2+ValueCollection[ubyte,System.Nullable`1[int]]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
+; Total bytes of code 792, prolog size 44, PerfScore 446.70, instruction count 198, allocated bytes for code 792 (MethodHash=52eeb815) for method Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2+ValueCollection[ubyte,System.Nullable`1[int]]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
 ; ============================================================
 
 Unwind Info:
+0 (0.00%) : 358528.dasm - Microsoft.Extensions.Logging.Test.EventSourceLoggerTest+TestEventListener:OnEventWritten(System.Diagnostics.Tracing.EventWrittenEventArgs):this (FullOpts)
@@ -613,8 +613,8 @@ G_M61051_IG20:        ; bbWeight=2, isz, extend
             add     w12, w13, #1
             str     w12, [x0, #0x10]
             mov     w12, #24
-            umull   x13, w13, w12
-            add     x13, x13, #16
+            mov     x15, #16
+            smaddl  x13, w13, w12, x15
             add     x14, x14, x13
             ; gcrRegs -[x14]
             ; byrRegs +[x14]
@@ -625,7 +625,7 @@ G_M61051_IG20:        ; bbWeight=2, isz, extend
             ldp     x12, x15, [x13], #0x10
             stp     x12, x15, [x14], #0x10
             b       G_M61051_IG22
-						;; size=76 bbWeight=2 PerfScore 55.00
+						;; size=76 bbWeight=2 PerfScore 61.00
 G_M61051_IG21:        ; bbWeight=2, gcrefRegs=4780001 {x0 x19 x20 x21 x22 x26}, byrefRegs=1000000 {x24}, byref
             ; gcrRegs +[x0]
             ; byrRegs -[x13-x14]
@@ -965,7 +965,7 @@ G_M61051_IG36:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             ret     lr
 						;; size=28 bbWeight=1 PerfScore 7.00
 
-; Total bytes of code 2360, prolog size 36, PerfScore 2341.28, instruction count 590, allocated bytes for code 2360 (MethodHash=c3721184) for method Microsoft.Extensions.Logging.Test.EventSourceLoggerTest+TestEventListener:OnEventWritten(System.Diagnostics.Tracing.EventWrittenEventArgs):this (FullOpts)
+; Total bytes of code 2360, prolog size 36, PerfScore 2347.28, instruction count 590, allocated bytes for code 2360 (MethodHash=c3721184) for method Microsoft.Extensions.Logging.Test.EventSourceLoggerTest+TestEventListener:OnEventWritten(System.Diagnostics.Tracing.EventWrittenEventArgs):this (FullOpts)
 ; ============================================================
 
 Unwind Info:
libraries_tests.run.windows.arm64.Release.mch
-8 (-5.41%) : 239903.dasm - System.TimeSpan:.ctor(int,int,int,int):this (Instrumented Tier1)
@@ -26,13 +26,11 @@ G_M9511_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
             ; byrRegs +[x0]
             movz    w5, #0xD1FFAB1E
             movk    w5, #1 LSL #16
-            smull   x1, w1, w5
-            mov     w5, #0xD1FFAB1E
-            smull   x2, w2, w5
-            add     x1, x1, x2
+            mov     w6, #0xD1FFAB1E
+            smull   x2, w2, w6
+            smaddl  x1, w1, w5, x2
             mov     w2, #60
-            smull   x2, w3, w2
-            add     x1, x1, x2
+            smaddl  x1, w3, w2, x1
             add     x1, x1, w4, SXTW
             movz    x2, #0xD1FFAB1E
             movk    x2, #15 LSL #16
@@ -51,7 +49,7 @@ G_M9511_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
             mov     x2, #10
             mul     x1, x1, x2
             str     x1, [x0]
-						;; size=108 bbWeight=1 PerfScore 22.50
+						;; size=100 bbWeight=1 PerfScore 27.50
 G_M9511_IG03:        ; bbWeight=1, epilog, nogc, extend
             ldp     fp, lr, [sp], #0x10
             ret     lr
@@ -66,7 +64,7 @@ G_M9511_IG04:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}
             brk_windows #0
 						;; size=24 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 148, prolog size 8, PerfScore 40.80, instruction count 37, allocated bytes for code 148 (MethodHash=c383dad8) for method System.TimeSpan:.ctor(int,int,int,int):this (Instrumented Tier1)
+; Total bytes of code 140, prolog size 8, PerfScore 45.00, instruction count 35, allocated bytes for code 140 (MethodHash=c383dad8) for method System.TimeSpan:.ctor(int,int,int,int):this (Instrumented Tier1)
 ; ============================================================
 
 Unwind Info:
@@ -77,7 +75,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 37 (0x00025) Actual length = 148 (0x000094)
+  Function Length   : 35 (0x00023) Actual length = 140 (0x00008c)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-8 (-5.41%) : 241943.dasm - System.TimeSpan:.ctor(int,int,int,int):this (Tier1)
@@ -26,13 +26,11 @@ G_M9511_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
             ; byrRegs +[x0]
             movz    w5, #0xD1FFAB1E
             movk    w5, #1 LSL #16
-            smull   x1, w1, w5
-            mov     w5, #0xD1FFAB1E
-            smull   x2, w2, w5
-            add     x1, x1, x2
+            mov     w6, #0xD1FFAB1E
+            smull   x2, w2, w6
+            smaddl  x1, w1, w5, x2
             mov     w2, #60
-            smull   x2, w3, w2
-            add     x1, x1, x2
+            smaddl  x1, w3, w2, x1
             add     x1, x1, w4, SXTW
             movz    x2, #0xD1FFAB1E
             movk    x2, #15 LSL #16
@@ -51,7 +49,7 @@ G_M9511_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
             mov     x2, #10
             mul     x1, x1, x2
             str     x1, [x0]
-						;; size=108 bbWeight=1 PerfScore 22.50
+						;; size=100 bbWeight=1 PerfScore 27.50
 G_M9511_IG03:        ; bbWeight=1, epilog, nogc, extend
             ldp     fp, lr, [sp], #0x10
             ret     lr
@@ -66,7 +64,7 @@ G_M9511_IG04:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}
             brk_windows #0
 						;; size=24 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 148, prolog size 8, PerfScore 40.80, instruction count 37, allocated bytes for code 148 (MethodHash=c383dad8) for method System.TimeSpan:.ctor(int,int,int,int):this (Tier1)
+; Total bytes of code 140, prolog size 8, PerfScore 45.00, instruction count 35, allocated bytes for code 140 (MethodHash=c383dad8) for method System.TimeSpan:.ctor(int,int,int,int):this (Tier1)
 ; ============================================================
 
 Unwind Info:
@@ -77,7 +75,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 37 (0x00025) Actual length = 148 (0x000094)
+  Function Length   : 35 (0x00023) Actual length = 140 (0x00008c)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-8 (-5.26%) : 399875.dasm - System.TimeSpan:.ctor(int,int,int,int,int):this (Tier1)
@@ -27,13 +27,11 @@ G_M3256_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
             ; byrRegs +[x0]
             movz    w6, #0xD1FFAB1E
             movk    w6, #1 LSL #16
-            smull   x1, w1, w6
-            mov     w6, #0xD1FFAB1E
-            smull   x2, w2, w6
-            add     x1, x1, x2
+            mov     w7, #0xD1FFAB1E
+            smull   x2, w2, w7
+            smaddl  x1, w1, w6, x2
             mov     w2, #60
-            smull   x2, w3, w2
-            add     x1, x1, x2
+            smaddl  x1, w3, w2, x1
             add     x1, x1, w4, SXTW
             mov     x2, #0xD1FFAB1E
             sxtw    x3, w5
@@ -53,7 +51,7 @@ G_M3256_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
             mov     x2, #10
             mul     x1, x1, x2
             str     x1, [x0]
-						;; size=112 bbWeight=1 PerfScore 27.50
+						;; size=104 bbWeight=1 PerfScore 32.50
 G_M3256_IG03:        ; bbWeight=1, epilog, nogc, extend
             ldp     fp, lr, [sp], #0x10
             ret     lr
@@ -68,7 +66,7 @@ G_M3256_IG04:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}
             brk_windows #0
 						;; size=24 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 152, prolog size 8, PerfScore 46.20, instruction count 38, allocated bytes for code 152 (MethodHash=c4dbf347) for method System.TimeSpan:.ctor(int,int,int,int,int):this (Tier1)
+; Total bytes of code 144, prolog size 8, PerfScore 50.40, instruction count 36, allocated bytes for code 144 (MethodHash=c4dbf347) for method System.TimeSpan:.ctor(int,int,int,int,int):this (Tier1)
 ; ============================================================
 
 Unwind Info:
@@ -79,7 +77,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 38 (0x00026) Actual length = 152 (0x000098)
+  Function Length   : 36 (0x00024) Actual length = 144 (0x000090)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+12 (+0.22%) : 567583.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:ObjectCreationOverloadResolution(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol],Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol],byref):this (Tier1)
@@ -100,10 +100,10 @@
 ;  V88 tmp82        [V88,T85] (  6,  0   )     ref  ->  registers   class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
 ;* V89 tmp83        [V89    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "dup spill" <<unknown class>>
 ;  V90 tmp84        [V90,T84] (  8,  0   )     ref  ->  registers  
-;  V91 tmp85        [V91,T48] (  6,  2.55)     ref  ->  xip0         class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
+;  V91 tmp85        [V91,T48] (  6,  2.55)     ref  ->  x12         class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
 ;* V92 tmp86        [V92    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "dup spill" <<unknown class>>
-;  V93 tmp87        [V93,T20] ( 12,  5.11)     ref  ->  x12        
-;  V94 tmp88        [V94,T50] (  6,  2.55)     ref  ->  xip0         "guarded devirt return temp"
+;  V93 tmp87        [V93,T20] ( 12,  5.11)     ref  ->  x14        
+;  V94 tmp88        [V94,T50] (  6,  2.55)     ref  ->  x12         "guarded devirt return temp"
 ;* V95 tmp89        [V95    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations+NonLazyType>
 ;* V96 tmp90        [V96    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
 ;* V97 tmp91        [V97    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterDiagnosticInfo]>
@@ -139,8 +139,8 @@
 ;  V127 tmp121      [V127,T68] (  2,  1.40)   ubyte  ->   x0         "field V42._rawValue (fldOffset=0x0)" P-INDEP
 ;  V128 tmp122      [V128,T32] (  9,  3.95)     ref  ->  x27         "field V48.ParameterTypes (fldOffset=0x0)" P-INDEP
 ;  V129 tmp123      [V129,T39] (  7,  3.42)     ref  ->  [fp+0x20]  spill-single-def "field V48.ParameterRefKinds (fldOffset=0x8)" P-INDEP
-;  V130 tmp124      [V130,T49] ( 10,  2.55)     ref  ->  x14         "field V62.DefaultType (fldOffset=0x0)" P-INDEP
-;  V131 tmp125      [V131,T47] (  8,  2.56)     ref  ->  x12         "field V62._extensions (fldOffset=0x8)" P-INDEP
+;  V130 tmp124      [V130,T49] ( 10,  2.55)     ref  ->  registers   "field V62.DefaultType (fldOffset=0x0)" P-INDEP
+;  V131 tmp125      [V131,T47] (  8,  2.56)     ref  ->  x14         "field V62._extensions (fldOffset=0x8)" P-INDEP
 ;* V132 tmp126      [V132    ] (  0,  0   )   ubyte  ->  zero-ref    "field V62.DefaultNullableAnnotation (fldOffset=0x10)" P-INDEP
 ;  V133 tmp127      [V133,T65] ( 13,  1.49)     ref  ->  [fp+0x18]  "field V63._uncommonData (fldOffset=0x0)" P-INDEP
 ;  V134 tmp128      [V134,T31] ( 17,  3.98)   ubyte  ->  [fp+0xEC]  "field V63._kind (fldOffset=0x8)" P-INDEP
@@ -977,32 +977,32 @@ G_M10209_IG65:        ; bbWeight=1.27, gcVars=0000000000000000001000B000000000 {
             ; gcrRegs +[x15 x27]
             ; GC ptr vars +{V37 V39 V51 V52 V120 V129}
             mov     w2, #24
+            mov     x5, #16
             str     w13, [fp, #0xD1FFAB1E]	// [V53 tmp47]
-            umull   x2, w13, w2
-            add     x2, x2, #16
-            add     x2, x27, x2
-            ; byrRegs +[x2]
-            ldp     x14, x12, [x2]
-            ; gcrRegs +[x12 x14]
-            cbz     x12, G_M10209_IG81
-						;; size=28 bbWeight=1.27 PerfScore 12.04
-G_M10209_IG66:        ; bbWeight=1.26, gcrefRegs=DD8D000 {x12 x14 x15 x19 x20 x22 x23 x24 x26 x27}, byrefRegs=200000 {x21}, byref, isz
-            ; byrRegs -[x2]
-            ldr     xip0, [x12]
-            movz    x2, #0xD1FFAB1E
-            movk    x2, #0xD1FFAB1E LSL #16
-            movk    x2, #0xD1FFAB1E LSL #32
-            cmp     xip0, x2
+            smaddl  x2, w13, w2, x5
+            add     x5, x27, x2
+            ; byrRegs +[x5]
+            ldp     x2, x14, [x5]
+            ; gcrRegs +[x2 x14]
+            cbz     x14, G_M10209_IG81
+						;; size=28 bbWeight=1.27 PerfScore 15.84
+G_M10209_IG66:        ; bbWeight=1.26, gcrefRegs=DD8C004 {x2 x14 x15 x19 x20 x22 x23 x24 x26 x27}, byrefRegs=200000 {x21}, byref, isz
+            ; byrRegs -[x5]
+            ldr     x12, [x14]
+            movz    x5, #0xD1FFAB1E
+            movk    x5, #0xD1FFAB1E LSL #16
+            movk    x5, #0xD1FFAB1E LSL #32
+            cmp     x12, x5
             bne     G_M10209_IG151
-            ldrsb   wzr, [x12]
-            mov     xip0, x14
-            ; gcrRegs +[xip0]
+            ldrsb   wzr, [x14]
+            mov     x12, x2
+            ; gcrRegs +[x12]
 						;; size=32 bbWeight=1.26 PerfScore 11.98
-G_M10209_IG67:        ; bbWeight=1.26, gcrefRegs=DD98000 {x15 xip0 x19 x20 x22 x23 x24 x26 x27}, byrefRegs=200000 {x21}, byref
-            ; gcrRegs -[x12 x14]
+G_M10209_IG67:        ; bbWeight=1.26, gcrefRegs=DD89000 {x12 x15 x19 x20 x22 x23 x24 x26 x27}, byrefRegs=200000 {x21}, byref
+            ; gcrRegs -[x2 x14]
             str     w4, [fp, #0xD1FFAB1E]	// [V57 tmp51]
 						;; size=4 bbWeight=1.26 PerfScore 1.26
-G_M10209_IG68:        ; bbWeight=1.26, gcrefRegs=DD98000 {x15 xip0 x19 x20 x22 x23 x24 x26 x27}, byrefRegs=200000 {x21}, byref, isz
+G_M10209_IG68:        ; bbWeight=1.26, gcrefRegs=DD89000 {x12 x15 x19 x20 x22 x23 x24 x26 x27}, byrefRegs=200000 {x21}, byref, isz
             str     w1, [fp, #0xD1FFAB1E]	// [V58 tmp52]
             str     w1, [sp]	// [V06 OutArgs]
             str     w0, [sp, #0x08]	// [V06 OutArgs+0x08]
@@ -1013,7 +1013,7 @@ G_M10209_IG68:        ; bbWeight=1.26, gcrefRegs=DD98000 {x15 xip0 x19 x20 x22 x
             mov     x2, x15
             ; gcrRegs +[x2]
             mov     w3, w7
-            mov     x4, xip0
+            mov     x4, x12
             ; gcrRegs +[x4]
             ldr     w5, [fp, #0xD1FFAB1E]	// [V57 tmp51]
             mov     x7, x21
@@ -1024,7 +1024,7 @@ G_M10209_IG68:        ; bbWeight=1.26, gcrefRegs=DD98000 {x15 xip0 x19 x20 x22 x
             movk    x14, #0xD1FFAB1E LSL #32
             ldr     x14, [x14]
             blr     x14
-            ; gcrRegs -[x1-x2 x4 x15-xip0]
+            ; gcrRegs -[x1-x2 x4 x12 x15]
             ; byrRegs -[x7]
             mov     x2, x0
             ; gcrRegs +[x2]
@@ -1188,13 +1188,13 @@ G_M10209_IG80:        ; bbWeight=0.05, gcVars=00000000000000020010000000000000 {
 G_M10209_IG81:        ; bbWeight=0.00, gcVars=0000000000000000001000B000000000 {V51 V52 V120 V129}, gcrefRegs=DD88000 {x15 x19 x20 x22 x23 x24 x26 x27}, byrefRegs=200000 {x21}, gcvars, byref
             ; gcrRegs +[x15 x27]
             ; GC ptr vars -{V133} +{V37 V39 V51 V52 V129}
-            mov     xip0, xzr
-            ; gcrRegs +[xip0]
+            mov     x12, xzr
+            ; gcrRegs +[x12]
             str     w4, [fp, #0xD1FFAB1E]	// [V57 tmp51]
             b       G_M10209_IG68
 						;; size=12 bbWeight=0.00 PerfScore 0.01
 G_M10209_IG82:        ; bbWeight=0.09, gcVars=00000000000000000010003000000000 {V51 V52 V120}, gcrefRegs=5D80000 {x19 x20 x22 x23 x24 x26}, byrefRegs=200000 {x21}, gcvars, byref
-            ; gcrRegs -[x15-xip0 x27]
+            ; gcrRegs -[x12 x15 x27]
             ; GC ptr vars -{V37 V39 V129}
             ldr     x4, [fp, #0x60]	// [V51 tmp45]
             ; gcrRegs +[x4]
@@ -1531,32 +1531,35 @@ G_M10209_IG107:        ; bbWeight=0.01, gcVars=0000000000000000001000B000080000
             cmp     w13, w0
             bhs     G_M10209_IG156
             mov     w0, #24
+            mov     x7, #16
             str     w13, [fp, #0xD1FFAB1E]	// [V53 tmp47]
-            umull   x0, w13, w0
-            add     x0, x0, #16
+            smaddl  x0, w13, w0, x7
             add     x0, x27, x0
             ; byrRegs +[x0]
-            ldp     x14, x12, [x0]
-            ; gcrRegs +[x12 x14]
-            cbz     x12, G_M10209_IG121
-						;; size=44 bbWeight=0.01 PerfScore 0.20
+            ldr     x7, [x0]
+            ; gcrRegs +[x7]
+            mov     x12, x7
+            ; gcrRegs +[x12]
+            ldr     x14, [x0, #0x08]
+            ; gcrRegs +[x14]
+            cbz     x14, G_M10209_IG121
+						;; size=52 bbWeight=0.01 PerfScore 0.28
 G_M10209_IG108:        ; bbWeight=0.01, gcrefRegs=DD85100 {x8 x12 x14 x19 x20 x22 x23 x24 x26 x27}, byrefRegs=200000 {x21}, byref, isz
+            ; gcrRegs -[x7]
             ; byrRegs -[x0]
-            ldr     xip0, [x12]
-            movz    x0, #0xD1FFAB1E
-            movk    x0, #0xD1FFAB1E LSL #16
-            movk    x0, #0xD1FFAB1E LSL #32
-            cmp     xip0, x0
+            ldr     x0, [x14]
+            movz    x7, #0xD1FFAB1E
+            movk    x7, #0xD1FFAB1E LSL #16
+            movk    x7, #0xD1FFAB1E LSL #32
+            cmp     x0, x7
             bne     G_M10209_IG128
-            ldrsb   wzr, [x12]
-            mov     xip0, x14
-            ; gcrRegs +[xip0]
-						;; size=32 bbWeight=0.01 PerfScore 0.12
-G_M10209_IG109:        ; bbWeight=0.01, gcrefRegs=DD90100 {x8 xip0 x19 x20 x22 x23 x24 x26 x27}, byrefRegs=200000 {x21}, byref
-            ; gcrRegs -[x12 x14]
+            ldrsb   wzr, [x14]
+						;; size=28 bbWeight=0.01 PerfScore 0.11
+G_M10209_IG109:        ; bbWeight=0.01, gcrefRegs=DD81100 {x8 x12 x19 x20 x22 x23 x24 x26 x27}, byrefRegs=200000 {x21}, byref
+            ; gcrRegs -[x14]
             str     w9, [fp, #0xD1FFAB1E]	// [V50 tmp44]
 						;; size=4 bbWeight=0.01 PerfScore 0.01
-G_M10209_IG110:        ; bbWeight=0.01, gcrefRegs=DD90000 {xip0 x19 x20 x22 x23 x24 x26 x27}, byrefRegs=200000 {x21}, byref, isz
+G_M10209_IG110:        ; bbWeight=0.01, gcrefRegs=DD81000 {x12 x19 x20 x22 x23 x24 x26 x27}, byrefRegs=200000 {x21}, byref, isz
             ; gcrRegs -[x8]
             ldr     w6, [fp, #0xD1FFAB1E]	// [V58 tmp52]
             str     w6, [sp]	// [V06 OutArgs]
@@ -1569,7 +1572,7 @@ G_M10209_IG110:        ; bbWeight=0.01, gcrefRegs=DD90000 {xip0 x19 x20 x22 x23
             ldr     x2, [fp, #0x50]	// [V54 tmp48]
             ; gcrRegs +[x2]
             mov     w3, w4
-            mov     x4, xip0
+            mov     x4, x12
             ; gcrRegs +[x4]
             mov     x7, x21
             ; byrRegs +[x7]
@@ -1580,7 +1583,7 @@ G_M10209_IG110:        ; bbWeight=0.01, gcrefRegs=DD90000 {xip0 x19 x20 x22 x23
             ldr     x14, [x14]
             ; GC ptr vars -{V19 V54}
             blr     x14
-            ; gcrRegs -[x1-x2 x4 xip0]
+            ; gcrRegs -[x1-x2 x4 x12]
             ; byrRegs -[x7]
             mov     x2, x0
             ; gcrRegs +[x2]
@@ -1722,13 +1725,13 @@ G_M10209_IG120:        ; bbWeight=0.00, gcVars=00000000000000020010000000000000
 G_M10209_IG121:        ; bbWeight=0.00, gcVars=0000000000000000001000B000080000 {V51 V52 V54 V120 V129}, gcrefRegs=DD80100 {x8 x19 x20 x22 x23 x24 x26 x27}, byrefRegs=200000 {x21}, gcvars, byref
             ; gcrRegs +[x8 x27]
             ; GC ptr vars -{V133} +{V19 V37 V39 V51 V52 V54 V129}
-            mov     xip0, xzr
-            ; gcrRegs +[xip0]
+            mov     x12, xzr
+            ; gcrRegs +[x12]
             str     w9, [fp, #0xD1FFAB1E]	// [V50 tmp44]
             b       G_M10209_IG110
 						;; size=12 bbWeight=0.00 PerfScore 0.00
 G_M10209_IG122:        ; bbWeight=0.00, gcVars=0000000000000000001000B000000000 {V51 V52 V120 V129}, gcrefRegs=DD80102 {x1 x8 x19 x20 x22 x23 x24 x26 x27}, byrefRegs=200000 {x21}, gcvars, byref, isz
-            ; gcrRegs -[xip0] +[x1]
+            ; gcrRegs -[x12] +[x1]
             ; GC ptr vars -{V19 V37 V39 V54}
             cmp     w5, #1
             str     x1, [fp, #0x50]	// [V54 tmp48]
@@ -1742,36 +1745,39 @@ G_M10209_IG123:        ; bbWeight=0, gcVars=0000000000000000001000B000080000 {V5
             cmp     w13, w0
             bhs     G_M10209_IG156
             mov     w0, #24
+            mov     x7, #16
             str     w13, [fp, #0xD1FFAB1E]	// [V53 tmp47]
-            umull   x0, w13, w0
-            add     x0, x0, #16
+            smaddl  x0, w13, w0, x7
             add     x0, x27, x0
             ; byrRegs +[x0]
-            ldp     x14, x12, [x0]
-            ; gcrRegs +[x12 x14]
-            mov     x0, x12
+            ldr     x7, [x0]
+            ; gcrRegs +[x7]
+            mov     x12, x7
+            ; gcrRegs +[x12]
+            ldr     x14, [x0, #0x08]
+            ; gcrRegs +[x14]
+            mov     x0, x14
             ; gcrRegs +[x0]
             ; byrRegs -[x0]
             cbnz    x0, G_M10209_IG124
             mov     x7, xzr
-            ; gcrRegs +[x7]
             str     w9, [fp, #0xD1FFAB1E]	// [V50 tmp44]
             str     w5, [fp, #0xD1FFAB1E]	// [V57 tmp51]
             str     w4, [fp, #0xD1FFAB1E]	// [V55 tmp49]
             b       G_M10209_IG125
-						;; size=68 bbWeight=0 PerfScore 0.00
-G_M10209_IG124:        ; bbWeight=0, gcrefRegs=DD84101 {x0 x8 x14 x19 x20 x22 x23 x24 x26 x27}, byrefRegs=200000 {x21}, byref
-            ; gcrRegs -[x7 x12]
+						;; size=76 bbWeight=0 PerfScore 0.00
+G_M10209_IG124:        ; bbWeight=0, gcrefRegs=DD81101 {x0 x8 x12 x19 x20 x22 x23 x24 x26 x27}, byrefRegs=200000 {x21}, byref
+            ; gcrRegs -[x7 x14]
             str     w9, [fp, #0xD1FFAB1E]	// [V50 tmp44]
             str     w5, [fp, #0xD1FFAB1E]	// [V57 tmp51]
             str     w4, [fp, #0xD1FFAB1E]	// [V55 tmp49]
-            mov     x1, x14
+            mov     x1, x12
             ; gcrRegs +[x1]
             ldr     x7, [x0]
             ldr     x7, [x7, #0x48]
             ldr     x7, [x7, #0x28]
             blr     x7
-            ; gcrRegs -[x1 x8 x14]
...
+12 (+0.38%) : 585721.dasm - Microsoft.CodeAnalysis.CSharp.DecisionDagBuilder:MakeDecisionDag(byref,System.Collections.Generic.Dictionary`2[Microsoft.CodeAnalysis.CSharp.DecisionDagBuilder+DagState,Microsoft.CodeAnalysis.CSharp.DecisionDagBuilder+DagState]):Microsoft.CodeAnalysis.CSharp.DecisionDagBuilder+DecisionDag:this (Tier1)
@@ -257,7 +257,7 @@
 ;  V245 tmp216      [V245,T99] (  2,  3.06)     int  ->  [fp+0x128]  spill-single-def "V73.[032..036)"
 ;  V246 tmp217      [V246,T96] (  2,  3.06)     ref  ->  [fp+0x28]  spill-single-def "V73.[040..048)"
 ;  V247 tmp218      [V247,T63] (  3,  4.15)     ref  ->  registers   "V89.[000..008)"
-;  V248 tmp219      [V248,T64] (  3,  4.15)     ref  ->   x1         "V89.[008..016)"
+;  V248 tmp219      [V248,T64] (  3,  4.15)     ref  ->  registers   "V89.[008..016)"
 ;  V249 tmp220      [V249,T65] (  3,  4.15)     ref  ->  registers   "V89.[016..024)"
 ;  V250 tmp221      [V250,T66] (  3,  4.15)     ref  ->  registers   "V89.[024..032)"
 ;  V251 tmp222      [V251,T68] (  3,  4.15)     int  ->  x10         "V89.[032..036)"
@@ -284,6 +284,7 @@
 ;  V272 cse1        [V272,T17] (  4, 15.12)     ref  ->   x0         "CSE - moderate"
 ;  V273 cse2        [V273,T09] (  5, 20.67)     ref  ->   x0         "CSE - aggressive"
 ;  V274 cse3        [V274,T39] (  3,  8.19)    long  ->   x1         "CSE - moderate"
+;  TEMP_01                                     int  ->  [fp+0x14]
 ;
 ; Lcl frame size = 432
 
@@ -938,8 +939,8 @@ G_M31383_IG56:        ; bbWeight=1.53, gcVars=00000003E7DF080000000001C000000000
             cmp     w15, w12
             bhs     G_M31383_IG88
             mov     w12, #48
-            umull   x15, w15, w12
-            add     x15, x15, #16
+            mov     xip0, #16
+            smaddl  x15, w15, w12, xip0
             add     x1, x14, x15
             ; byrRegs +[x1]
             mov     x14, x1
@@ -988,7 +989,7 @@ G_M31383_IG56:        ; bbWeight=1.53, gcVars=00000003E7DF080000000001C000000000
             str     x3, [fp, #0x50]	// [V189 tmp160]
             ; GC ptr vars +{V189}
             cbz     x0, G_M31383_IG61
-						;; size=116 bbWeight=1.53 PerfScore 44.36
+						;; size=116 bbWeight=1.53 PerfScore 48.95
 G_M31383_IG57:        ; bbWeight=0.76, gcVars=00000003E7DF080000000000000000000000404000000000 {V81 V156 V157 V158 V159 V160 V162 V163 V164 V165 V166 V168 V169 V170 V171 V172 V174 V189}, gcrefRegs=FB00000 {x20 x21 x23 x24 x25 x26 x27}, byrefRegs=0000 {}, gcvars, byref, isz
             ; gcrRegs -[x0 x3 x7]
             ; GC ptr vars -{V74 V188}
@@ -1367,16 +1368,18 @@ G_M31383_IG83:        ; bbWeight=0.04, gcVars=00000003E7DF0800000000000000000000
             cmp     wip0, w0
             bhs     G_M31383_IG88
             mov     w0, #48
-            umull   x0, wip0, w0
-            add     x0, x0, #16
-            ldr     xip0, [fp, #0x18]	// [V265 tmp236]
-            ; gcrRegs +[xip0]
-            add     x0, xip0, x0
+            str     w0, [fp, #0x14]	// [TEMP_01]
+            mov     x0, #16
+            ldr     w1, [fp, #0x14]	// [TEMP_01]
+            smaddl  x0, wip0, w1, x0
+            ldr     x1, [fp, #0x18]	// [V265 tmp236]
+            ; gcrRegs +[x1]
+            add     x0, x1, x0
             ; byrRegs +[x0]
             str     x0, [fp, #0x20]	// [V260 tmp231]
             ; GC ptr vars +{V260}
-            ldp     xip0, x1, [x0]
-            ; gcrRegs +[x1]
+            ldp     x1, xip0, [x0]
+            ; gcrRegs +[xip0]
             ldp     x2, x0, [x0, #0x10]
             ; gcrRegs +[x0]
             ; byrRegs -[x0]
@@ -1391,11 +1394,12 @@ G_M31383_IG83:        ; bbWeight=0.04, gcVars=00000003E7DF0800000000000000000000
             ; byrRegs -[x11]
             mov     x3, x0
             ; gcrRegs +[x3]
-            mov     x0, xip0
+            mov     x0, x1
+            mov     x1, xip0
             mov     xip0, x2
             mov     x2, x3
             b       G_M31383_IG67
-						;; size=112 bbWeight=0.04 PerfScore 1.77
+						;; size=124 bbWeight=0.04 PerfScore 2.02
 G_M31383_IG84:        ; bbWeight=0.01, gcVars=000000000000000000000000000000000000000000000000 {}, gcrefRegs=100001 {x0 x20}, byrefRegs=80000 {x19}, gcvars, byref
             ; gcrRegs -[x1-x3 x11 xip0 x21 x23-x27]
             ; byrRegs +[x19]
@@ -1770,7 +1774,7 @@ RWD24  	dd	G_M31383_IG77 - G_M31383_IG02
        	dd	G_M31383_IG81 - G_M31383_IG02
 
 
-; Total bytes of code 3200, prolog size 72, PerfScore 1314.12, instruction count 800, allocated bytes for code 3200 (MethodHash=47648568) for method Microsoft.CodeAnalysis.CSharp.DecisionDagBuilder:MakeDecisionDag(byref,System.Collections.Generic.Dictionary`2[Microsoft.CodeAnalysis.CSharp.DecisionDagBuilder+DagState,Microsoft.CodeAnalysis.CSharp.DecisionDagBuilder+DagState]):Microsoft.CodeAnalysis.CSharp.DecisionDagBuilder+DecisionDag:this (Tier1)
+; Total bytes of code 3212, prolog size 72, PerfScore 1320.15, instruction count 803, allocated bytes for code 3212 (MethodHash=47648568) for method Microsoft.CodeAnalysis.CSharp.DecisionDagBuilder:MakeDecisionDag(byref,System.Collections.Generic.Dictionary`2[Microsoft.CodeAnalysis.CSharp.DecisionDagBuilder+DagState,Microsoft.CodeAnalysis.CSharp.DecisionDagBuilder+DagState]):Microsoft.CodeAnalysis.CSharp.DecisionDagBuilder+DecisionDag:this (Tier1)
 ; ============================================================
 
 Unwind Info:
@@ -1781,7 +1785,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 774 (0x00306) Actual length = 3096 (0x000c18)
+  Function Length   : 777 (0x00309) Actual length = 3108 (0x000c24)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+20 (+0.69%) : 581975.dasm - Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer:MergeOrRemoveCandidates(System.Collections.Generic.Dictionary`2[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],System.Collections.Generic.HashSet`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],System.Predicate`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],Microsoft.CodeAnalysis.CSharp.ConversionsBase,short,byref) (Tier1)
@@ -68,7 +68,7 @@
 ;* V56 tmp38        [V56    ] (  0,  0   )  struct (24) zero-ref    ld-addr-op "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
 ;* V57 tmp39        [V57    ] (  0,  0   )  struct (24) zero-ref    ld-addr-op "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
 ;  V58 tmp40        [V58,T00] (  6, 54.10)     ref  ->  [fp+0x68]  class-hnd "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
-;  V59 tmp41        [V59,T01] (  4, 52.12)     ref  ->   x3         class-hnd "spilling ret_expr" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
+;  V59 tmp41        [V59,T01] (  4, 52.12)     ref  ->   x8         class-hnd "spilling ret_expr" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
 ;  V60 tmp42        [V60,T03] (  4, 26.06)     int  ->   x0         "guarded devirt return temp"
 ;  V61 tmp43        [V61,T55] (  3,  1.10)     ref  ->   x1         class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol+PENamedTypeSymbolNonGeneric>
 ;* V62 tmp44        [V62    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations+Extensions>
@@ -76,10 +76,10 @@
 ;  V64 tmp46        [V64,T67] (  2,  0.76)     ref  ->   x1         "guarded devirt return temp"
 ;* V65 tmp47        [V65    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations+NonLazyType>
 ;* V66 tmp48        [V66    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
-;  V67 tmp49        [V67,T04] (  3, 24.74)     ref  ->   x3         class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
+;  V67 tmp49        [V67,T04] (  3, 24.74)     ref  ->   x8         class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
 ;* V68 tmp50        [V68    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations+Extensions>
 ;* V69 tmp51        [V69,T76] (  0,  0   )     ref  ->  zero-ref   
-;  V70 tmp52        [V70,T66] (  3,  0.76)     ref  ->   x3         "guarded devirt return temp"
+;  V70 tmp52        [V70,T66] (  3,  0.76)     ref  ->   x8         "guarded devirt return temp"
 ;* V71 tmp53        [V71    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations+NonLazyType>
 ;* V72 tmp54        [V72    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
 ;* V73 tmp55        [V73    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.Symbols.NativeIntegerTypeSymbol>
@@ -128,7 +128,7 @@
 ;  V116 tmp98       [V116,T98] (  4,  0   )     ref  ->   x0        
 ;  V117 tmp99       [V117,T112] (  3,  0   )   ubyte  ->   x1         "Inline return value spill temp"
 ;* V118 tmp100      [V118    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations+Extensions>
-;  V119 tmp101      [V119,T99] (  4,  0   )     ref  ->   x6        
+;  V119 tmp101      [V119,T99] (  4,  0   )     ref  ->   x5        
 ;  V120 tmp102      [V120,T118] (  2,  0   )     ref  ->   x0         class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations+Extensions>
 ;  V121 tmp103      [V121,T100] (  4,  0   )     ref  ->   x0        
 ;* V122 tmp104      [V122    ] (  0,  0   )  struct (24) zero-ref    "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
@@ -216,7 +216,7 @@
 ;* V204 tmp186      [V204,T129] (  0,  0   )     ref  ->  zero-ref    "argument with side effect"
 ;  V205 cse0        [V205,T72] (  5,  0.44)    long  ->  [fp+0x78]  spill-single-def "CSE - conservative"
 ;  V206 cse1        [V206,T21] (  2,  3.99)     int  ->   x0         "CSE - aggressive"
-;  V207 cse2        [V207,T34] (  3,  3.55)    long  ->   x9         "CSE - moderate"
+;  V207 cse2        [V207,T34] (  3,  3.55)    long  ->   x8         "CSE - moderate"
 ;  V208 cse3        [V208,T115] (  3,  0   )    long  ->  x13         "CSE - conservative"
 ;
 ; Lcl frame size = 272
@@ -342,66 +342,66 @@ G_M34990_IG12:        ; bbWeight=1.00, gcrefRegs=8780000 {x19 x20 x21 x22 x27},
             cmp     w0, w2
             bhs     G_M34990_IG111
             mov     w2, #24
-            umull   x0, w0, w2
-            add     x0, x0, #16
+            mov     x3, #16
+            smaddl  x0, w0, w2, x3
             add     x0, x1, x0
             ; byrRegs +[x0]
-            ldr     x5, [x0]
-            ; gcrRegs +[x5]
-            str     x5, [fp, #0x40]	// [V136 tmp118]
+            ldr     x3, [x0]
+            ; gcrRegs +[x3]
+            str     x3, [fp, #0x40]	// [V136 tmp118]
             ; GC ptr vars +{V136}
-            ldr     x6, [x0, #0x08]
-            ; gcrRegs +[x6]
-            str     x6, [fp, #0x38]	// [V137 tmp119]
+            ldr     x5, [x0, #0x08]
+            ; gcrRegs +[x5]
+            str     x5, [fp, #0x38]	// [V137 tmp119]
             ; GC ptr vars +{V137}
-            ldrb    w7, [x0, #0x10]
-            strb    w7, [fp, #0xBC]	// [V138 tmp120]
-            mov     x0, x5
+            ldrb    w6, [x0, #0x10]
+            strb    w6, [fp, #0xBC]	// [V138 tmp120]
+            mov     x0, x3
             ; gcrRegs +[x0]
             ; byrRegs -[x0]
-            uxtb    w8, w7
-            strb    w8, [fp, #0xB0]	// [V162 tmp144]
-            uxtb    w1, w8
+            uxtb    w7, w6
+            strb    w7, [fp, #0xB0]	// [V162 tmp144]
+            uxtb    w1, w7
             ; gcrRegs -[x1]
             ldr     x2, [fp, #0xD1FFAB1E]	// [V131 tmp113]
             ; gcrRegs +[x2]
             cmp     x2, x0
             bne     G_M34990_IG40
-						;; size=104 bbWeight=1.00 PerfScore 37.06
-G_M34990_IG13:        ; bbWeight=0.63, gcVars=000000000000000000000000000000000000000000008040 {V136 V137}, gcrefRegs=8780060 {x5 x6 x19 x20 x21 x22 x27}, byrefRegs=1000000 {x24}, gcvars, byref, isz
+						;; size=104 bbWeight=1.00 PerfScore 40.06
+G_M34990_IG13:        ; bbWeight=0.63, gcVars=000000000000000000000000000000000000000000008040 {V136 V137}, gcrefRegs=8780028 {x3 x5 x19 x20 x21 x22 x27}, byrefRegs=1000000 {x24}, gcvars, byref, isz
             ; gcrRegs -[x0 x2]
             ldrb    w0, [fp, #0xD1FFAB1E]	// [V133 tmp115]
             uxtb    w1, w1
             cmp     w0, w1
             bne     G_M34990_IG40
 						;; size=16 bbWeight=0.63 PerfScore 2.52
-G_M34990_IG14:        ; bbWeight=0.56, gcrefRegs=8780060 {x5 x6 x19 x20 x21 x22 x27}, byrefRegs=1000000 {x24}, byref, isz
+G_M34990_IG14:        ; bbWeight=0.56, gcrefRegs=8780028 {x3 x5 x19 x20 x21 x22 x27}, byrefRegs=1000000 {x24}, byref, isz
             ldr     x0, [fp, #0xD1FFAB1E]	// [V132 tmp114]
             ; gcrRegs +[x0]
-            cmp     x0, x6
+            cmp     x0, x5
             bne     G_M34990_IG40
 						;; size=12 bbWeight=0.56 PerfScore 1.95
 G_M34990_IG15:        ; bbWeight=1.00, gcVars=000000000000000000000000000000000000000000000000 {}, gcrefRegs=8780000 {x19 x20 x21 x22 x27}, byrefRegs=1000000 {x24}, gcvars, byref, isz
-            ; gcrRegs -[x0 x5-x6]
+            ; gcrRegs -[x0 x3 x5]
             ; GC ptr vars -{V136 V137}
             add     w4, w4, #1
-            ldr     x5, [x19, #0x08]
-            ; gcrRegs +[x5]
-            ldr     w6, [x5, #0x10]
+            ldr     x3, [x19, #0x08]
+            ; gcrRegs +[x3]
+            ldr     w5, [x3, #0x10]
             str     w4, [fp, #0xC0]	// [V135 tmp117]
-            cmp     w4, w6
+            cmp     w4, w5
             ldr     w4, [fp, #0xC0]	// [V135 tmp117]
             blt     G_M34990_IG12
             b       G_M34990_IG03
 						;; size=32 bbWeight=1.00 PerfScore 12.02
 G_M34990_IG16:        ; bbWeight=0.00, gcrefRegs=8780000 {x19 x20 x21 x22 x27}, byrefRegs=1000000 {x24}, byref
-            ; gcrRegs -[x5]
+            ; gcrRegs -[x3]
             mov     x3, xzr
             ; gcrRegs +[x3]
             b       G_M34990_IG09
 						;; size=8 bbWeight=0.00 PerfScore 0.00
-G_M34990_IG17:        ; bbWeight=24.36, gcVars=000000000000000000000000000000000000000000008040 {V136 V137}, gcrefRegs=878000A {x1 x3 x19 x20 x21 x22 x27}, byrefRegs=1000000 {x24}, gcvars, byref, isz
-            ; gcrRegs +[x1]
+G_M34990_IG17:        ; bbWeight=24.36, gcVars=000000000000000000000000000000000000000000008040 {V136 V137}, gcrefRegs=8780102 {x1 x8 x19 x20 x21 x22 x27}, byrefRegs=1000000 {x24}, gcvars, byref, isz
+            ; gcrRegs -[x3] +[x1 x8]
             ; GC ptr vars +{V06 V15 V136 V137}
             ldr     x0, [x1]
             movz    x2, #0xD1FFAB1E
@@ -410,12 +410,12 @@ G_M34990_IG17:        ; bbWeight=24.36, gcVars=000000000000000000000000000000000
             cmp     x0, x2
             bne     G_M34990_IG53
 						;; size=24 bbWeight=24.36 PerfScore 146.14
-G_M34990_IG18:        ; bbWeight=0.37, gcrefRegs=878000A {x1 x3 x19 x20 x21 x22 x27}, byrefRegs=1000000 {x24}, byref, isz
-            mov     x0, x3
+G_M34990_IG18:        ; bbWeight=0.37, gcrefRegs=8780102 {x1 x8 x19 x20 x21 x22 x27}, byrefRegs=1000000 {x24}, byref, isz
+            mov     x0, x8
             ; gcrRegs +[x0]
             cbz     x0, G_M34990_IG35
 						;; size=8 bbWeight=0.37 PerfScore 0.55
-G_M34990_IG19:        ; bbWeight=0.18, gcrefRegs=878000B {x0 x1 x3 x19 x20 x21 x22 x27}, byrefRegs=1000000 {x24}, byref, isz
+G_M34990_IG19:        ; bbWeight=0.18, gcrefRegs=8780103 {x0 x1 x8 x19 x20 x21 x22 x27}, byrefRegs=1000000 {x24}, byref, isz
             ldr     x2, [x0]
             movz    x9, #0xD1FFAB1E
             movk    x9, #0xD1FFAB1E LSL #16
@@ -424,18 +424,18 @@ G_M34990_IG19:        ; bbWeight=0.18, gcrefRegs=878000B {x0 x1 x3 x19 x20 x21 x
             str     w4, [fp, #0xC0]	// [V135 tmp117]
             beq     G_M34990_IG54
 						;; size=28 bbWeight=0.18 PerfScore 1.28
-G_M34990_IG20:        ; bbWeight=0.37, gcrefRegs=878000A {x1 x3 x19 x20 x21 x22 x27}, byrefRegs=1000000 {x24}, byref
+G_M34990_IG20:        ; bbWeight=0.37, gcrefRegs=8780102 {x1 x8 x19 x20 x21 x22 x27}, byrefRegs=1000000 {x24}, byref
             ; gcrRegs -[x0]
             mov     x0, x1
             ; gcrRegs +[x0]
-            mov     x1, x3
+            mov     x1, x8
             mov     w2, w25
-            movz    x3, #0xD1FFAB1E      // code for <unknown method>
-            ; gcrRegs -[x3]
-            movk    x3, #0xD1FFAB1E LSL #16
-            movk    x3, #0xD1FFAB1E LSL #32
-            ldr     x3, [x3]
-            blr     x3
+            movz    x8, #0xD1FFAB1E      // code for <unknown method>
+            ; gcrRegs -[x8]
+            movk    x8, #0xD1FFAB1E LSL #16
+            movk    x8, #0xD1FFAB1E LSL #32
+            ldr     x8, [x8]
+            blr     x8
             ; gcrRegs -[x0-x1]
             ; gcr arg pop 0
 						;; size=32 bbWeight=0.37 PerfScore 2.56
@@ -526,30 +526,34 @@ G_M34990_IG32:        ; bbWeight=0.00, gcrefRegs=8780001 {x0 x19 x20 x21 x22 x27
 						;; size=4 bbWeight=0.00 PerfScore 0.00
 G_M34990_IG33:        ; bbWeight=0.03, gcrefRegs=8780000 {x19 x20 x21 x22 x27}, byrefRegs=1000000 {x24}, byref
             ; gcrRegs -[x0]
+            ldr     x3, [fp, #0x40]	// [V136 tmp118]
+            ; gcrRegs +[x3]
             ldr     w4, [fp, #0xC0]	// [V135 tmp117]
-            ldp     x6, x5, [fp, #0x38]	// [V137 tmp119], [V136 tmp118]
-            ; gcrRegs +[x5-x6]
+            ldr     x5, [fp, #0x38]	// [V137 tmp119]
+            ; gcrRegs +[x5]
             b       G_M34990_IG73
-						;; size=12 bbWeight=0.03 PerfScore 0.16
+						;; size=16 bbWeight=0.03 PerfScore 0.18
 G_M34990_IG34:        ; bbWeight=0.21, gcrefRegs=8780000 {x19 x20 x21 x22 x27}, byrefRegs=1000000 {x24}, byref
-            ; gcrRegs -[x5-x6]
+            ; gcrRegs -[x3 x5]
+            ldr     x3, [fp, #0x40]	// [V136 tmp118]
+            ; gcrRegs +[x3]
             ldr     w4, [fp, #0xC0]	// [V135 tmp117]
-            ldp     x6, x5, [fp, #0x38]	// [V137 tmp119], [V136 tmp118]
-            ; gcrRegs +[x5-x6]
+            ldr     x5, [fp, #0x38]	// [V137 tmp119]
+            ; gcrRegs +[x5]
             b       G_M34990_IG73
-						;; size=12 bbWeight=0.21 PerfScore 1.27
-G_M34990_IG35:        ; bbWeight=0.18, gcrefRegs=878000A {x1 x3 x19 x20 x21 x22 x27}, byrefRegs=1000000 {x24}, byref
-            ; gcrRegs -[x5-x6] +[x1 x3]
+						;; size=16 bbWeight=0.21 PerfScore 1.48
+G_M34990_IG35:        ; bbWeight=0.18, gcrefRegs=8780102 {x1 x8 x19 x20 x21 x22 x27}, byrefRegs=1000000 {x24}, byref
+            ; gcrRegs -[x3 x5] +[x1 x8]
             str     w4, [fp, #0xC0]	// [V135 tmp117]
             b       G_M34990_IG20
 						;; size=8 bbWeight=0.18 PerfScore 0.37
 G_M34990_IG36:        ; bbWeight=0.00, gcrefRegs=8780000 {x19 x20 x21 x22 x27}, byrefRegs=1000000 {x24}, byref
-            ; gcrRegs -[x1 x3]
+            ; gcrRegs -[x1 x8]
             mov     w1, wzr
             b       G_M34990_IG31
 						;; size=8 bbWeight=0.00 PerfScore 0.00
-G_M34990_IG37:        ; bbWeight=2.71, gcrefRegs=8780061 {x0 x5 x6 x19 x20 x21 x22 x27}, byrefRegs=1000000 {x24}, byref
-            ; gcrRegs +[x0 x5-x6]
+G_M34990_IG37:        ; bbWeight=2.71, gcrefRegs=8780029 {x0 x3 x5 x19 x20 x21 x22 x27}, byrefRegs=1000000 {x24}, byref
+            ; gcrRegs +[x0 x3 x5]
             str     w4, [fp, #0xC0]	// [V135 tmp117]
 						;; size=4 bbWeight=2.71 PerfScore 2.71
 G_M34990_IG38:        ; bbWeight=2.71, nogc, extend
@@ -559,67 +563,68 @@ G_M34990_IG38:        ; bbWeight=2.71, nogc, extend
             str     x1, [fp, #0xA8]
 						;; size=16 bbWeight=2.71 PerfScore 18.94
 G_M34990_IG39:        ; bbWeight=2.71, extend
-            stp     x5, x6, [fp, #0x80]	// [V199 tmp181], [V199 tmp181+0x08]
-            ldrb    w7, [fp, #0xBC]	// [V138 tmp120]
-            strb    w7, [fp, #0x90]	// [V199 tmp181+0x10]
+            stp     x3, x5, [fp, #0x80]	// [V199 tmp181], [V199 tmp181+0x08]
+            ldrb    w6, [fp, #0xBC]	// [V138 tmp120]
+            strb    w6, [fp, #0x90]	// [V199 tmp181+0x10]
             add     x1, fp, #152	// [V195 tmp177]
             add     x2, fp, #128	// [V199 tmp181]
             mov     w3, w25
-            ldr     x9, [x9, #0x58]
-            ldr     x9, [x9, #0x20]
-            blr     x9
-            ; gcrRegs -[x0 x5-x6]
+            ; gcrRegs -[x3]
+            ldr     x8, [x8, #0x58]
+            ldr     x8, [x8, #0x20]
+            blr     x8
+            ; gcrRegs -[x0 x5]
             ; gcr arg pop 0
             b       G_M34990_IG21
 						;; size=40 bbWeight=2.71 PerfScore 36.53
-G_M34990_IG40:        ; bbWeight=1.00, gcrefRegs=8780060 {x5 x6 x19 x20 x21 x22 x27}, byrefRegs=1000000 {x24}, byref, isz
-            ; gcrRegs +[x5-x6]
...
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch
-12 (-5.66%) : 60794.dasm - Microsoft.VisualBasic.CompilerServices.ConversionResolution+OperatorCaches+FixedList:MoveToFront(int):this (FullOpts)
@@ -49,8 +49,8 @@ G_M2881_IG03:        ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, by
             cmp     w1, w5
             bhs     G_M2881_IG05
             mov     w6, #40
-            umull   x6, w1, w6
-            add     x6, x6, #16
+            mov     x7, #16
+            smaddl  x6, w1, w6, x7
             add     x4, x4, x6
             ; gcrRegs -[x4]
             ; byrRegs +[x4]
@@ -60,8 +60,8 @@ G_M2881_IG03:        ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, by
             cmp     w7, w5
             bhs     G_M2881_IG05
             mov     w9, #40
-            umull   x9, w7, w9
-            add     x9, x9, #16
+            mov     x10, #16
+            smaddl  x9, w7, w9, x10
             add     x8, x8, x9
             ; gcrRegs -[x8]
             ; byrRegs +[x8]
@@ -72,8 +72,7 @@ G_M2881_IG03:        ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, by
             cmp     w6, w5
             bhs     G_M2881_IG05
             mov     w9, #40
-            umull   x6, w6, w9
-            add     x6, x6, #16
+            smaddl  x6, w6, w9, x10
             add     x6, x8, x6
             ; byrRegs +[x6]
             str     w7, [x6, #0x1C]
@@ -83,8 +82,7 @@ G_M2881_IG03:        ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, by
             sxtw    w7, w2
             cmp     w7, w5
             bhs     G_M2881_IG05
-            umull   x7, w7, w9
-            add     x7, x7, #16
+            smaddl  x7, w7, w9, x10
             add     x6, x6, x7
             ; gcrRegs -[x6]
             ; byrRegs +[x6]
@@ -94,15 +92,14 @@ G_M2881_IG03:        ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, by
             sxtw    w7, w6
             cmp     w7, w5
             bhs     G_M2881_IG05
-            umull   x5, w7, w9
-            add     x5, x5, #16
+            smaddl  x5, w7, w9, x10
             add     x3, x3, x5
             ; gcrRegs -[x3]
             ; byrRegs +[x3]
             str     w1, [x3, #0x18]
             stp     w2, w6, [x4, #0x18]
             str     w1, [x0, #0x14]
-						;; size=176 bbWeight=0.50 PerfScore 22.50
+						;; size=164 bbWeight=0.50 PerfScore 29.25
 G_M2881_IG04:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
             ; gcrRegs -[x0 x8]
             ; byrRegs -[x3-x4]
@@ -114,7 +111,7 @@ G_M2881_IG05:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}
             brk_windows #0
 						;; size=8 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 212, prolog size 8, PerfScore 51.70, instruction count 53, allocated bytes for code 212 (MethodHash=9897f4be) for method Microsoft.VisualBasic.CompilerServices.ConversionResolution+OperatorCaches+FixedList:MoveToFront(int):this (FullOpts)
+; Total bytes of code 200, prolog size 8, PerfScore 57.25, instruction count 50, allocated bytes for code 200 (MethodHash=9897f4be) for method Microsoft.VisualBasic.CompilerServices.ConversionResolution+OperatorCaches+FixedList:MoveToFront(int):this (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -125,7 +122,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 53 (0x00035) Actual length = 212 (0x0000d4)
+  Function Length   : 50 (0x00032) Actual length = 200 (0x0000c8)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-4 (-4.35%) : 20518.dasm - System.Security.Cryptography.Pkcs.Rfc3161TimestampTokenInfo:get_AccuracyInMicroseconds():System.Nullable`1[long]:this (FullOpts)
@@ -61,19 +61,18 @@ G_M15821_IG05:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
             ; byrRegs -[x0]
             movz    w3, #0xD1FFAB1E
             movk    w3, #15 LSL #16
-            smull   x1, w1, w3
-            mov     w3, #0xD1FFAB1E
-            smull   x2, w2, w3
-            add     x1, x1, x2
+            mov     w4, #0xD1FFAB1E
+            smull   x2, w2, w4
+            smaddl  x1, w1, w3, x2
             add     x1, x1, w0, SXTW
             mov     w0, #1
-						;; size=48 bbWeight=0.50 PerfScore 8.50
+						;; size=44 bbWeight=0.50 PerfScore 9.75
 G_M15821_IG06:        ; bbWeight=0.50, epilog, nogc, extend
             ldp     fp, lr, [sp], #0x10
             ret     lr
 						;; size=8 bbWeight=0.50 PerfScore 1.00
 
-; Total bytes of code 92, prolog size 8, PerfScore 26.20, instruction count 23, allocated bytes for code 92 (MethodHash=2cf3c232) for method System.Security.Cryptography.Pkcs.Rfc3161TimestampTokenInfo:get_AccuracyInMicroseconds():System.Nullable`1[long]:this (FullOpts)
+; Total bytes of code 88, prolog size 8, PerfScore 27.05, instruction count 22, allocated bytes for code 88 (MethodHash=2cf3c232) for method System.Security.Cryptography.Pkcs.Rfc3161TimestampTokenInfo:get_AccuracyInMicroseconds():System.Nullable`1[long]:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -84,7 +83,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 23 (0x00017) Actual length = 92 (0x00005c)
+  Function Length   : 22 (0x00016) Actual length = 88 (0x000058)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-4 (-4.35%) : 227632.dasm - System.Security.Cryptography.Pkcs.Rfc3161TimestampTokenInfo:get_AccuracyInMicroseconds():System.Nullable`1[long]:this (FullOpts)
@@ -61,19 +61,18 @@ G_M15821_IG05:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
             ; byrRegs -[x0]
             movz    w3, #0xD1FFAB1E
             movk    w3, #15 LSL #16
-            smull   x1, w1, w3
-            mov     w3, #0xD1FFAB1E
-            smull   x2, w2, w3
-            add     x1, x1, x2
+            mov     w4, #0xD1FFAB1E
+            smull   x2, w2, w4
+            smaddl  x1, w1, w3, x2
             add     x1, x1, w0, SXTW
             mov     w0, #1
-						;; size=48 bbWeight=0.50 PerfScore 8.50
+						;; size=44 bbWeight=0.50 PerfScore 9.75
 G_M15821_IG06:        ; bbWeight=0.50, epilog, nogc, extend
             ldp     fp, lr, [sp], #0x10
             ret     lr
 						;; size=8 bbWeight=0.50 PerfScore 1.00
 
-; Total bytes of code 92, prolog size 8, PerfScore 26.20, instruction count 23, allocated bytes for code 92 (MethodHash=2cf3c232) for method System.Security.Cryptography.Pkcs.Rfc3161TimestampTokenInfo:get_AccuracyInMicroseconds():System.Nullable`1[long]:this (FullOpts)
+; Total bytes of code 88, prolog size 8, PerfScore 27.05, instruction count 22, allocated bytes for code 88 (MethodHash=2cf3c232) for method System.Security.Cryptography.Pkcs.Rfc3161TimestampTokenInfo:get_AccuracyInMicroseconds():System.Nullable`1[long]:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -84,7 +83,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 23 (0x00017) Actual length = 92 (0x00005c)
+  Function Length   : 22 (0x00016) Actual length = 88 (0x000058)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+12 (+0.27%) : 45178.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:IsApplicable(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.OverloadResolution+EffectiveParameters,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,System.Collections.Immutable.ImmutableArray`1[int],ubyte,ubyte,ubyte,ubyte,byref):Microsoft.CodeAnalysis.CSharp.MemberAnalysisResult:this (FullOpts)
@@ -17,20 +17,20 @@
 ;  V06 arg5         [V06,T67] (  3,  3   )   ubyte  ->   x6         single-def
 ;  V07 arg6         [V07,T69] (  3,  2.50)   ubyte  ->  x26         single-def
 ;  V08 arg7         [V08,T89] (  2,  2   )   ubyte  ->  x28         single-def
-;  V09 arg8         [V09,T90] (  2,  2   )   ubyte  ->  [fp+0x1C0]  single-def
+;  V09 arg8         [V09,T90] (  2,  2   )   ubyte  ->  [fp+0x1D0]  single-def
 ;  V10 arg9         [V10,T84] (  2,  2   )   byref  ->  x27         single-def
-;  V11 loc0         [V11,T17] ( 15, 17   )     int  ->  [fp+0x164] 
-;  V12 loc1         [V12,T10] ( 15, 30   )     ref  ->  [fp+0x78]  class-hnd <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Conversion]>
-;  V13 loc2         [V13,T16] ( 17, 18   )     ref  ->  [fp+0x70]  class-hnd <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[int]>
-;  V14 loc3         [V14,T105] (  3,  1.50)  struct (40) [fp+0x138]  do-not-enreg[S] must-init <Microsoft.CodeAnalysis.CSharp.MemberAnalysisResult>
+;  V11 loc0         [V11,T17] ( 15, 17   )     int  ->  [fp+0x174] 
+;  V12 loc1         [V12,T10] ( 15, 30   )     ref  ->  [fp+0x88]  class-hnd <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Conversion]>
+;  V13 loc2         [V13,T16] ( 17, 18   )     ref  ->  [fp+0x80]  class-hnd <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[int]>
+;  V14 loc3         [V14,T105] (  3,  1.50)  struct (40) [fp+0x148]  do-not-enreg[S] must-init <Microsoft.CodeAnalysis.CSharp.MemberAnalysisResult>
 ;* V15 loc4         [V15    ] (  0,  0   )  struct ( 8) zero-ref    <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion]>
 ;* V16 loc5         [V16    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]>
-;  V17 loc6         [V17,T04] ( 38, 61.54)     int  ->  [fp+0x134] 
-;  V18 loc7         [V18,T49] (  6,  8   )     ref  ->  [fp+0x68]  class-hnd <Microsoft.CodeAnalysis.CSharp.BoundExpression>
+;  V17 loc6         [V17,T04] ( 38, 61.54)     int  ->  [fp+0x144] 
+;  V18 loc7         [V18,T49] (  6,  8   )     ref  ->  [fp+0x78]  class-hnd <Microsoft.CodeAnalysis.CSharp.BoundExpression>
 ;* V19 loc8         [V19    ] (  0,  0   )  struct (16) zero-ref    multireg-arg multireg-ret ld-addr-op <Microsoft.CodeAnalysis.CSharp.Conversion>
-;  V20 loc9         [V20,T54] (  6,  6   )   ubyte  ->  [fp+0x130] 
-;  V21 loc10        [V21,T47] (  8,  8   )   ubyte  ->  [fp+0x12C] 
-;  V22 loc11        [V22,T55] (  6,  6   )   ubyte  ->  [fp+0x128] 
+;  V20 loc9         [V20,T54] (  6,  6   )   ubyte  ->  [fp+0x140] 
+;  V21 loc10        [V21,T47] (  8,  8   )   ubyte  ->  [fp+0x13C] 
+;  V22 loc11        [V22,T55] (  6,  6   )   ubyte  ->  [fp+0x138] 
 ;* V23 loc12        [V23    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op <System.Collections.Immutable.ImmutableArray`1[ubyte]>
 ;* V24 loc13        [V24    ] (  0,  0   )  struct (24) zero-ref    ld-addr-op <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
 ;* V25 loc14        [V25    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion]>
@@ -54,8 +54,8 @@
 ;* V43 tmp17        [V43    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <<unknown class>>
 ;  V44 tmp18        [V44,T14] (  6, 24   )     ref  ->   x7         class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]>
 ;* V45 tmp19        [V45    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.Conversion>
-;  V46 tmp20        [V46,T11] ( 15, 28.04)     ref  ->  [fp+0x60]  class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[int]>
-;  V47 tmp21        [V47,T40] ( 10,  8.46)     int  ->  [fp+0x124]  "Inline stloc first use temp"
+;  V46 tmp20        [V46,T11] ( 15, 28.04)     ref  ->  [fp+0x70]  class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[int]>
+;  V47 tmp21        [V47,T40] ( 10,  8.46)     int  ->  [fp+0x134]  "Inline stloc first use temp"
 ;* V48 tmp22        [V48    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;  V49 tmp23        [V49,T71] (  6,  4   )     int  ->  x10         "Inline return value spill temp"
 ;  V50 tmp24        [V50,T35] (  6, 11.08)     int  ->   x9         "Inlining Arg"
@@ -68,59 +68,59 @@
 ;  V57 tmp31        [V57,T48] (  8,  8   )   ubyte  ->  registers   "Inline return value spill temp"
 ;  V58 tmp32        [V58,T53] (  6,  6   )     ref  ->  x11         class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
 ;* V59 tmp33        [V59    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "dup spill" <<unknown class>>
-;  V60 tmp34        [V60,T46] (  8,  8   )     ref  ->   x0        
+;  V60 tmp34        [V60,T46] (  8,  8   )     ref  ->  registers  
 ;* V61 tmp35        [V61    ] (  0,  0   )  struct ( 8) zero-ref    "Inline return value spill temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion]>
 ;  V62 tmp36        [V62,T81] (  3,  3   )     ref  ->  x26         class-hnd exact single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Conversion[]>
 ;* V63 tmp37        [V63    ] (  0,  0   )  struct (16) zero-ref    "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Conversion>
 ;* V64 tmp38        [V64    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Conversion[]>
 ;* V65 tmp39        [V65    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion]>
 ;* V66 tmp40        [V66    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterDiagnosticInfo]>
-;  V67 tmp41        [V67,T93] (  2,  2   )  struct (40) [fp+0xF8]  do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.MemberAnalysisResult>
+;  V67 tmp41        [V67,T93] (  2,  2   )  struct (40) [fp+0x108]  do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.MemberAnalysisResult>
 ;* V68 tmp42        [V68    ] (  0,  0   )  struct ( 8) zero-ref    "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterDiagnosticInfo]>
-;  V69 tmp43        [V69,T12] ( 15, 28.04)     ref  ->  [fp+0x58]  class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[int]>
-;  V70 tmp44        [V70,T41] ( 10,  8.46)     int  ->  [fp+0xF4]  "Inline stloc first use temp"
+;  V69 tmp43        [V69,T12] ( 15, 28.04)     ref  ->  [fp+0x68]  class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[int]>
+;  V70 tmp44        [V70,T41] ( 10,  8.46)     int  ->  [fp+0x104]  "Inline stloc first use temp"
 ;* V71 tmp45        [V71    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;  V72 tmp46        [V72,T72] (  6,  4   )     int  ->   x1         "Inline return value spill temp"
 ;  V73 tmp47        [V73,T36] (  6, 11.08)     int  ->   x1         "Inlining Arg"
 ;* V74 tmp48        [V74    ] (  0,  0   )  struct (16) zero-ref    "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Conversion>
-;  V75 tmp49        [V75,T13] ( 15, 28.04)     ref  ->  [fp+0x50]  class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[Microsoft.CodeAnalysis.CSharp.Conversion]>
-;  V76 tmp50        [V76,T42] ( 10,  8.46)     int  ->  [fp+0xF0]  "Inline stloc first use temp"
+;  V75 tmp49        [V75,T13] ( 15, 28.04)     ref  ->  [fp+0x60]  class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[Microsoft.CodeAnalysis.CSharp.Conversion]>
+;  V76 tmp50        [V76,T42] ( 10,  8.46)     int  ->  [fp+0x100]  "Inline stloc first use temp"
 ;* V77 tmp51        [V77    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;  V78 tmp52        [V78,T73] (  6,  4   )     int  ->  registers   "Inline return value spill temp"
 ;  V79 tmp53        [V79,T37] (  6, 11.08)     int  ->  registers   "Inlining Arg"
-;  V80 tmp54        [V80,T22] (  6, 12   )     ref  ->  [fp+0x48]  class-hnd exact "dup spill" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Conversion]>
+;  V80 tmp54        [V80,T22] (  6, 12   )     ref  ->  [fp+0x58]  class-hnd exact "dup spill" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Conversion]>
 ;* V81 tmp55        [V81    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[Microsoft.CodeAnalysis.CSharp.Conversion]>
 ;* V82 tmp56        [V82    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.Conversion>
-;  V83 tmp57        [V83,T06] (  8, 50   )     int  ->  [fp+0xEC]  "Inline stloc first use temp"
-;  V84 tmp58        [V84,T00] ( 17,224.16)     ref  ->  [fp+0x40]  class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[Microsoft.CodeAnalysis.CSharp.Conversion]>
-;  V85 tmp59        [V85,T05] ( 10, 57.84)     int  ->  [fp+0xE8]  "Inline stloc first use temp"
+;  V83 tmp57        [V83,T06] (  8, 50   )     int  ->  [fp+0xFC]  "Inline stloc first use temp"
+;  V84 tmp58        [V84,T00] ( 17,224.16)     ref  ->  [fp+0x50]  class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[Microsoft.CodeAnalysis.CSharp.Conversion]>
+;  V85 tmp59        [V85,T05] ( 10, 57.84)     int  ->  [fp+0xF8]  "Inline stloc first use temp"
 ;* V86 tmp60        [V86    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;  V87 tmp61        [V87,T19] (  6, 16   )     int  ->   x1         "Inline return value spill temp"
 ;  V88 tmp62        [V88,T07] (  6, 44.31)     int  ->   x1         "Inlining Arg"
 ;* V89 tmp63        [V89    ] (  0,  0   )  struct (16) zero-ref    "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Conversion>
-;  V90 tmp64        [V90,T09] ( 16, 32   )     ref  ->  [fp+0x38]  class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[Microsoft.CodeAnalysis.CSharp.Conversion]>
-;  V91 tmp65        [V91,T43] ( 10,  8.46)     int  ->  [fp+0xE4]  "Inline stloc first use temp"
+;  V90 tmp64        [V90,T09] ( 16, 32   )     ref  ->  [fp+0x48]  class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[Microsoft.CodeAnalysis.CSharp.Conversion]>
+;  V91 tmp65        [V91,T43] ( 10,  8.46)     int  ->  [fp+0xF4]  "Inline stloc first use temp"
 ;* V92 tmp66        [V92    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;  V93 tmp67        [V93,T74] (  6,  4   )     int  ->   x1         "Inline return value spill temp"
 ;  V94 tmp68        [V94,T38] (  6, 11.08)     int  ->   x1         "Inlining Arg"
 ;* V95 tmp69        [V95    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterDiagnosticInfo]>
-;  V96 tmp70        [V96,T94] (  2,  2   )  struct (40) [fp+0xB8]  do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.MemberAnalysisResult>
+;  V96 tmp70        [V96,T94] (  2,  2   )  struct (40) [fp+0xC8]  do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.MemberAnalysisResult>
 ;* V97 tmp71        [V97    ] (  0,  0   )  struct ( 8) zero-ref    "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterDiagnosticInfo]>
 ;* V98 tmp72        [V98    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.Collections.Immutable.ImmutableArray`1[int]>
 ;* V99 tmp73        [V99    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterDiagnosticInfo]>
 ;* V100 tmp74       [V100    ] (  0,  0   )  struct ( 8) zero-ref    "impAppendStmt" <System.Collections.Immutable.ImmutableArray`1[int]>
-;  V101 tmp75       [V101,T95] (  2,  2   )  struct (40) [fp+0x90]  do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.MemberAnalysisResult>
+;  V101 tmp75       [V101,T95] (  2,  2   )  struct (40) [fp+0xA0]  do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.MemberAnalysisResult>
 ;* V102 tmp76       [V102    ] (  0,  0   )  struct ( 8) zero-ref    "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterDiagnosticInfo]>
 ;  V103 tmp77       [V103,T52] (  6,  5.02)     ref  ->  x22         single-def "field V03.ParameterTypes (fldOffset=0x0)" P-INDEP
 ;  V104 tmp78       [V104,T51] (  7,  5.04)     ref  ->  x21         single-def "field V03.ParameterRefKinds (fldOffset=0x8)" P-INDEP
 ;  V105 tmp79       [V105,T68] (  4,  2.50)     ref  ->  x25         single-def "field V05.array (fldOffset=0x0)" P-INDEP
 ;  V106 tmp80       [V106,T100] (  3,  1.50)     ref  ->  x19         single-def "field V15.array (fldOffset=0x0)" P-INDEP
 ;* V107 tmp81       [V107    ] (  0,  0   )     ref  ->  zero-ref    "field V16.array (fldOffset=0x0)" P-INDEP
-;  V108 tmp82       [V108,T21] ( 13, 12.50)     ref  ->  [fp+0x30]  "field V19._uncommonData (fldOffset=0x0)" P-INDEP
-;  V109 tmp83       [V109,T18] ( 17, 16.50)   ubyte  ->  [fp+0x8C]  "field V19._kind (fldOffset=0x8)" P-INDEP
+;  V108 tmp82       [V108,T21] ( 13, 12.50)     ref  ->  [fp+0x40]  "field V19._uncommonData (fldOffset=0x0)" P-INDEP
+;  V109 tmp83       [V109,T18] ( 17, 16.50)   ubyte  ->  [fp+0x9C]  "field V19._kind (fldOffset=0x8)" P-INDEP
 ;* V110 tmp84       [V110    ] (  0,  0   )     ref  ->  zero-ref    "field V23.array (fldOffset=0x0)" P-INDEP
-;  V111 tmp85       [V111,T75] (  4,  4   )     ref  ->  registers   "field V24.DefaultType (fldOffset=0x0)" P-INDEP
-;  V112 tmp86       [V112,T76] (  4,  4   )     ref  ->   x0         "field V24._extensions (fldOffset=0x8)" P-INDEP
+;  V111 tmp85       [V111,T75] (  4,  4   )     ref  ->  [fp+0x38]  "field V24.DefaultType (fldOffset=0x0)" P-INDEP
+;  V112 tmp86       [V112,T76] (  4,  4   )     ref  ->  registers   "field V24._extensions (fldOffset=0x8)" P-INDEP
 ;* V113 tmp87       [V113    ] (  0,  0   )   ubyte  ->  zero-ref    "field V24.NullableAnnotation (fldOffset=0x10)" P-INDEP
 ;* V114 tmp88       [V114    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V25.array (fldOffset=0x0)" P-INDEP
 ;* V115 tmp89       [V115    ] (  0,  0   )     ref  ->  zero-ref    "field V31._uncommonData (fldOffset=0x0)" P-DEP
@@ -141,12 +141,12 @@
 ;* V130 tmp104      [V130    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V65.array (fldOffset=0x0)" P-INDEP
 ;* V131 tmp105      [V131    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V66.array (fldOffset=0x0)" P-INDEP
 ;* V132 tmp106      [V132,T112] (  0,  0   )     ref  ->  zero-ref    single-def "field V68.array (fldOffset=0x0)" P-INDEP
-;  V133 tmp107      [V133,T77] (  4,  4   )     ref  ->  [fp+0x28]  "field V74._uncommonData (fldOffset=0x0)" P-INDEP
-;  V134 tmp108      [V134,T79] (  4,  4   )   ubyte  ->  [fp+0x88]  "field V74._kind (fldOffset=0x8)" P-INDEP
+;  V133 tmp107      [V133,T77] (  4,  4   )     ref  ->  [fp+0x30]  "field V74._uncommonData (fldOffset=0x0)" P-INDEP
+;  V134 tmp108      [V134,T79] (  4,  4   )   ubyte  ->  [fp+0x98]  "field V74._kind (fldOffset=0x8)" P-INDEP
 ;* V135 tmp109      [V135,T88] (  0,  0   )     ref  ->  zero-ref    "field V82._uncommonData (fldOffset=0x0)" P-INDEP
 ;* V136 tmp110      [V136,T99] (  0,  0   )   ubyte  ->  zero-ref    "field V82._kind (fldOffset=0x8)" P-INDEP
-;  V137 tmp111      [V137,T78] (  4,  4   )     ref  ->  [fp+0x20]  "field V89._uncommonData (fldOffset=0x0)" P-INDEP
-;  V138 tmp112      [V138,T80] (  4,  4   )   ubyte  ->  [fp+0x84]  "field V89._kind (fldOffset=0x8)" P-INDEP
+;  V137 tmp111      [V137,T78] (  4,  4   )     ref  ->  [fp+0x28]  "field V89._uncommonData (fldOffset=0x0)" P-INDEP
+;  V138 tmp112      [V138,T80] (  4,  4   )   ubyte  ->  [fp+0x94]  "field V89._kind (fldOffset=0x8)" P-INDEP
 ;* V139 tmp113      [V139    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V95.array (fldOffset=0x0)" P-INDEP
 ;* V140 tmp114      [V140,T113] (  0,  0   )     ref  ->  zero-ref    single-def "field V97.array (fldOffset=0x0)" P-INDEP
 ;* V141 tmp115      [V141    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V98.array (fldOffset=0x0)" P-INDEP
@@ -181,19 +181,19 @@
 ;  V170 tmp144      [V170,T23] (  6, 12   )     ref  ->   x9         "arr expr"
 ;  V171 tmp145      [V171,T31] (  6, 12   )     int  ->  x10         "index expr"
 ;  V172 tmp146      [V172,T24] (  6, 12   )     ref  ->  x15         "arr expr"
-;  V173 tmp147      [V173,T25] (  6, 12   )   byref  ->   x0         "BlockOp address local"
+;  V173 tmp147      [V173,T25] (  6, 12   )   byref  ->  registers   "BlockOp address local"
 ;  V174 tmp148      [V174,T82] (  3,  3   )   byref  ->   x0         single-def "BlockOp address local"
 ;  V175 tmp149      [V175,T26] (  6, 12   )     ref  ->   x7         "arr expr"
 ;  V176 tmp150      [V176,T32] (  6, 12   )     int  ->   x8         "index expr"
 ;  V177 tmp151      [V177,T27] (  6, 12   )     ref  ->  registers   "arr expr"
 ;  V178 tmp152      [V178,T33] (  6, 12   )     int  ->  registers   "index expr"
-;  V179 tmp153      [V179,T28] (  6, 12   )   byref  ->  [fp+0x18]  "BlockOp address local"
+;  V179 tmp153      [V179,T28] (  6, 12   )   byref  ->  [fp+0x20]  "BlockOp address local"
 ;  V180 tmp154      [V180,T01] (  6, 96   )     ref  ->  registers   "arr expr"
 ;  V181 tmp155      [V181,T03] (  6, 96   )     int  ->   x9         "index expr"
 ;  V182 tmp156      [V182,T02] (  6, 96   )   byref  ->  x10         "BlockOp address local"
 ;  V183 tmp157      [V183,T29] (  6, 12   )     ref  ->   x1         "arr expr"
 ;  V184 tmp158      [V184,T34] (  6, 12   )     int  ->  registers   "index expr"
-;  V185 tmp159      [V185,T30] (  6, 12   )   byref  ->  [fp+0x10]  "BlockOp address local"
+;  V185 tmp159      [V185,T30] (  6, 12   )   byref  ->  [fp+0x18]  "BlockOp address local"
 ;  V186 cse0        [V186,T66] (  3,  5.94)     int  ->   x0         "CSE - moderate"
 ;  V187 cse1        [V187,T83] (  3,  3   )     int  ->   x0         "CSE - conservative"
 ;  V188 cse2        [V188,T121] (  3,  0.06)     int  ->   x0         "CSE - conservative"
@@ -210,9 +210,9 @@
 ;  V199 cse13       [V199,T118] (  3,  0.06)     ref  ->   x0         "CSE - conservative"
 ;  V200 cse14       [V200,T119] (  3,  0.06)     ref  ->   x0         "CSE - conservative"
 ;  V201 cse15       [V201,T120] (  3,  0.06)     ref  ->   x0         "CSE - conservative"
-;  V202 cse16       [V202,T59] (  4,  6   )     int  ->  [fp+0x80]  spill-single-def "CSE - moderate"
+;  V202 cse16       [V202,T59] (  4,  6   )     int  ->  [fp+0x90]  spill-single-def "CSE - moderate"
 ;
-; Lcl frame size = 352
+; Lcl frame size = 368
 
 G_M55718_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
             sub     sp, sp, #0xD1FFAB1E
@@ -224,7 +224,7 @@ G_M55718_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             stp     x27, x28, [sp, #0xD1FFAB1E]
             add     fp, sp, #8
             movi    v16.16b, #0
-            add     x9, fp, #112
+            add     x9, fp, #128
             mov     x10, #144
             stp     q16, q16, [x9, #0x20]
             stp     q16, q16, [x9, #0x40]!
@@ -253,7 +253,7 @@ G_M55718_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
 G_M55718_IG02:        ; bbWeight=1, gcrefRegs=3E80000 {x19 x21 x22 x23 x24 x25}, byrefRegs=8100000 {x20 x27}, byref, isz
             ldr     w0, [x22, #0x08]
             uxtb    w2, w6
-            str     w2, [fp, #0x80]	// [V202 cse16]
+            str     w2, [fp, #0x90]	// [V202 cse16]
             cmp     w2, #0
             cset    x3, ne
             add     w3, w0, w3
@@ -264,7 +264,7 @@ G_M55718_IG02:        ; bbWeight=1, gcrefRegs=3E80000 {x19 x21 x22 x23 x24 x25},
             ; gcrRegs -[x0]
             cmp     w0, w3
             csel    w3, w3, w0, ge
-            str     xzr, [fp, #0x78]	// [V12 loc1]
+            str     xzr, [fp, #0x88]	// [V12 loc1]
             ; GC ptr vars +{V12}
             mov     x5, xzr
             ; gcrRegs +[x5]
@@ -341,7 +341,7 @@ G_M55718_IG06:        ; bbWeight=1.98, gcrefRegs=3E80020 {x5 x19 x21 x22 x23 x24
 						;; size=44 bbWeight=1.98 PerfScore 22.77
 G_M55718_IG07:        ; bbWeight=1.98, gcrefRegs=3E80020 {x5 x19 x21 x22 x23 x24 x25}, byrefRegs=8100000 {x20 x27}, byref, isz
             ; gcrRegs -[x0]
-            str     x5, [fp, #0x70]	// [V13 loc2]
+            str     x5, [fp, #0x80]	// [V13 loc2]
             ; GC ptr vars +{V13}
             ldr     x7, [x5, #0x08]
             ; gcrRegs +[x7]
@@ -364,7 +364,7 @@ G_M55718_IG08:        ; bbWeight=1.52, gcVars=00000000000000000000000000010400 {
             str     w8, [fp, #0xD1FFAB1E]	// [V47 tmp21]
 						;; size=8 bbWeight=1.52 PerfScore 2.29
 G_M55718_IG09:        ; bbWeight=1.98, gcrefRegs=3E80080 {x7 x19 x21 x22 x23 x24 x25}, byrefRegs=8100000 {x20 x27}, byref
-            str     x7, [fp, #0x60]	// [V46 tmp20]
+            str     x7, [fp, #0x70]	// [V46 tmp20]
             ; GC ptr vars +{V46}
             add     x0, x7, #8
             ; byrRegs +[x0]
@@ -377,7 +377,7 @@ G_M55718_IG09:        ; bbWeight=1.98, gcrefRegs=3E80080 {x7 x19 x21 x22 x23 x24
             ; gcrRegs -[x7]
             ; byrRegs -[x0]
             ; gcr arg pop 0
-            ldr     x7, [fp, #0x60]	// [V46 tmp20]
+            ldr     x7, [fp, #0x70]	// [V46 tmp20]
             ; gcrRegs +[x7]
             ldr     w8, [fp, #0xD1FFAB1E]	// [V47 tmp21]
 						;; size=40 bbWeight=1.98 PerfScore 22.77
@@ -404,7 +404,7 @@ G_M55718_IG10:        ; bbWeight=1.98, gcVars=00000000000000000000000000010400 {
             ; gcrRegs +[x10]
             mov     w11, w13
             ; gcrRegs -[x11]
-            ldr     x5, [fp, #0x70]	// [V13 loc2]
+            ldr     x5, [fp, #0x80]	// [V13 loc2]
             ; gcrRegs +[x5]
             b       G_M55718_IG26
 						;; size=68 bbWeight=1.98 PerfScore 42.57
@@ -468,48 +468,55 @@ G_M55718_IG16:        ; bbWeight=1.98, gcrefRegs=3E80220 {x5 x9 x19 x21 x22 x23
 						;; size=32 bbWeight=1.98 PerfScore 18.81
 G_M55718_IG17:        ; bbWeight=1.98, gcrefRegs=3E80220 {x5 x9 x19 x21 x22 x23 x24 x25}, byrefRegs=8100000 {x20 x27}, byref, isz
             mov     w0, #24
+            mov     x8, #16
             str     w6, [fp, #0xD1FFAB1E]	// [V17 loc6]
-            umull   x0, w6, w0
-            add     x0, x0, #16
-            add     x0, x22, x0
-            ; byrRegs +[x0]
-            ldp     x8, x0, [x0]
-            ; gcrRegs +[x0 x8]
-            ; byrRegs -[x0]
-            cbnz    x0, G_M55718_IG18
+            smaddl  x0, w6, w0, x8
...
+20 (+0.37%) : 7031.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:IsApplicable(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.OverloadResolution+EffectiveParameters,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,System.Collections.Immutable.ImmutableArray`1[int],ubyte,ubyte,ubyte,ubyte,byref):Microsoft.CodeAnalysis.CSharp.MemberAnalysisResult:this (FullOpts)
@@ -17,23 +17,23 @@
 ;  V06 arg5         [V06,T80] (  3,  3   )   ubyte  ->   x6         single-def
 ;  V07 arg6         [V07,T82] (  3,  2.50)   ubyte  ->  x26         single-def
 ;  V08 arg7         [V08,T101] (  2,  2   )   ubyte  ->  x28         single-def
-;  V09 arg8         [V09,T102] (  2,  2   )   ubyte  ->  [fp+0x1C8]  single-def
+;  V09 arg8         [V09,T102] (  2,  2   )   ubyte  ->  [fp+0x1D8]  single-def
 ;  V10 arg9         [V10,T96] (  2,  2   )   byref  ->  x27         single-def
-;  V11 loc0         [V11,T17] ( 15, 17   )     int  ->  [fp+0x16C] 
-;  V12 loc1         [V12,T09] ( 15, 30   )     ref  ->  [fp+0x80]  class-hnd <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Conversion]>
-;  V13 loc2         [V13,T16] ( 17, 18   )     ref  ->  [fp+0x78]  class-hnd <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[int]>
-;  V14 loc3         [V14,T115] (  3,  1.50)  struct (40) [fp+0x140]  do-not-enreg[S] must-init <Microsoft.CodeAnalysis.CSharp.MemberAnalysisResult>
+;  V11 loc0         [V11,T17] ( 15, 17   )     int  ->  [fp+0x17C] 
+;  V12 loc1         [V12,T09] ( 15, 30   )     ref  ->  [fp+0x90]  class-hnd <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Conversion]>
+;  V13 loc2         [V13,T16] ( 17, 18   )     ref  ->  [fp+0x88]  class-hnd <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[int]>
+;  V14 loc3         [V14,T115] (  3,  1.50)  struct (40) [fp+0x150]  do-not-enreg[S] must-init <Microsoft.CodeAnalysis.CSharp.MemberAnalysisResult>
 ;* V15 loc4         [V15    ] (  0,  0   )  struct ( 8) zero-ref    <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion]>
-;  V16 loc5         [V16,T04] ( 43, 65.56)     int  ->  [fp+0x13C] 
-;  V17 loc6         [V17,T24] ( 10, 12   )     ref  ->  [fp+0x70]  class-hnd <Microsoft.CodeAnalysis.CSharp.BoundExpression>
+;  V16 loc5         [V16,T04] ( 43, 65.56)     int  ->  [fp+0x14C] 
+;  V17 loc6         [V17,T24] ( 10, 12   )     ref  ->  [fp+0x80]  class-hnd <Microsoft.CodeAnalysis.CSharp.BoundExpression>
 ;* V18 loc7         [V18    ] (  0,  0   )  struct (16) zero-ref    multireg-arg multireg-ret ld-addr-op <Microsoft.CodeAnalysis.CSharp.Conversion>
-;  V19 loc8         [V19,T56] (  8,  8   )   ubyte  ->  [fp+0x138] 
-;  V20 loc9         [V20,T23] ( 12, 12   )   ubyte  ->  [fp+0x134] 
-;  V21 loc10        [V21,T66] (  6,  6   )   ubyte  ->  [fp+0x130] 
-;  V22 loc11        [V22,T67] (  6,  6   )   ubyte  ->  [fp+0x12C] 
+;  V19 loc8         [V19,T56] (  8,  8   )   ubyte  ->  [fp+0x148] 
+;  V20 loc9         [V20,T23] ( 12, 12   )   ubyte  ->  [fp+0x144] 
+;  V21 loc10        [V21,T66] (  6,  6   )   ubyte  ->  [fp+0x140] 
+;  V22 loc11        [V22,T67] (  6,  6   )   ubyte  ->  [fp+0x13C] 
 ;  V23 loc12        [V23,T61] (  8,  7   )     ref  ->  registers   class-hnd exact <Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator>
 ;* V24 loc13        [V24,T90] (  0,  0   )   ubyte  ->  zero-ref   
-;  V25 loc14        [V25,T22] ( 12, 12   )     ref  ->  [fp+0x68]  class-hnd <<unknown class>>
+;  V25 loc14        [V25,T22] ( 12, 12   )     ref  ->  [fp+0x78]  class-hnd <<unknown class>>
 ;* V26 loc15        [V26    ] (  0,  0   )  struct (24) zero-ref    ld-addr-op <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
 ;* V27 loc16        [V27    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion]>
 ;  V28 OutArgs      [V28    ] (  1,  1   )  struct (16) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -54,8 +54,8 @@
 ;* V43 tmp15        [V43    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <<unknown class>>
 ;  V44 tmp16        [V44,T14] (  6, 24   )     ref  ->   x7         class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]>
 ;* V45 tmp17        [V45    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.Conversion>
-;  V46 tmp18        [V46,T13] ( 14, 28   )     ref  ->  [fp+0x60]  class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[int]>
-;  V47 tmp19        [V47,T47] ( 10,  8.46)     int  ->  [fp+0x128]  "Inline stloc first use temp"
+;  V46 tmp18        [V46,T13] ( 14, 28   )     ref  ->  [fp+0x70]  class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[int]>
+;  V47 tmp19        [V47,T47] ( 10,  8.46)     int  ->  [fp+0x138]  "Inline stloc first use temp"
 ;* V48 tmp20        [V48    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;  V49 tmp21        [V49,T84] (  6,  4   )     int  ->  x10         "Inline return value spill temp"
 ;  V50 tmp22        [V50,T40] (  6, 11.08)     int  ->   x9         "Inlining Arg"
@@ -71,63 +71,63 @@
 ;  V60 tmp32        [V60,T63] (  6,  6   )     ref  ->  x13        
 ;  V61 tmp33        [V61,T64] (  6,  6   )     ref  ->  x13         class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
 ;* V62 tmp34        [V62    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "dup spill" <<unknown class>>
-;  V63 tmp35        [V63,T52] (  8,  8   )     ref  ->   x0        
+;  V63 tmp35        [V63,T52] (  8,  8   )     ref  ->  registers  
 ;  V64 tmp36        [V64,T65] (  6,  6   )     ref  ->  x14         class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
 ;* V65 tmp37        [V65    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "dup spill" <<unknown class>>
-;  V66 tmp38        [V66,T53] (  8,  8   )     ref  ->   x0        
+;  V66 tmp38        [V66,T53] (  8,  8   )     ref  ->  registers  
 ;* V67 tmp39        [V67    ] (  0,  0   )  struct ( 8) zero-ref    "Inline return value spill temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion]>
 ;  V68 tmp40        [V68,T93] (  3,  3   )     ref  ->  x26         class-hnd exact single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Conversion[]>
 ;* V69 tmp41        [V69    ] (  0,  0   )  struct (16) zero-ref    "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Conversion>
 ;* V70 tmp42        [V70    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Conversion[]>
 ;* V71 tmp43        [V71    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion]>
 ;* V72 tmp44        [V72    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterDiagnosticInfo]>
-;  V73 tmp45        [V73,T103] (  2,  2   )  struct (40) [fp+0x100]  do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.MemberAnalysisResult>
+;  V73 tmp45        [V73,T103] (  2,  2   )  struct (40) [fp+0x110]  do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.MemberAnalysisResult>
 ;* V74 tmp46        [V74    ] (  0,  0   )  struct ( 8) zero-ref    "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterDiagnosticInfo]>
-;  V75 tmp47        [V75,T10] ( 15, 28.04)     ref  ->  [fp+0x58]  class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[int]>
-;  V76 tmp48        [V76,T48] ( 10,  8.46)     int  ->  [fp+0xFC]  "Inline stloc first use temp"
+;  V75 tmp47        [V75,T10] ( 15, 28.04)     ref  ->  [fp+0x68]  class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[int]>
+;  V76 tmp48        [V76,T48] ( 10,  8.46)     int  ->  [fp+0x10C]  "Inline stloc first use temp"
 ;* V77 tmp49        [V77    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;  V78 tmp50        [V78,T85] (  6,  4   )     int  ->  registers   "Inline return value spill temp"
 ;  V79 tmp51        [V79,T41] (  6, 11.08)     int  ->  registers   "Inlining Arg"
 ;* V80 tmp52        [V80    ] (  0,  0   )  struct (16) zero-ref    "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Conversion>
-;  V81 tmp53        [V81,T11] ( 15, 28.04)     ref  ->  [fp+0x50]  class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[Microsoft.CodeAnalysis.CSharp.Conversion]>
-;  V82 tmp54        [V82,T49] ( 10,  8.46)     int  ->  [fp+0xF8]  "Inline stloc first use temp"
+;  V81 tmp53        [V81,T11] ( 15, 28.04)     ref  ->  [fp+0x60]  class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[Microsoft.CodeAnalysis.CSharp.Conversion]>
+;  V82 tmp54        [V82,T49] ( 10,  8.46)     int  ->  [fp+0x108]  "Inline stloc first use temp"
 ;* V83 tmp55        [V83    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;  V84 tmp56        [V84,T86] (  6,  4   )     int  ->  registers   "Inline return value spill temp"
 ;  V85 tmp57        [V85,T42] (  6, 11.08)     int  ->  registers   "Inlining Arg"
-;  V86 tmp58        [V86,T25] (  6, 12   )     ref  ->  [fp+0x48]  class-hnd exact "dup spill" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Conversion]>
+;  V86 tmp58        [V86,T25] (  6, 12   )     ref  ->  [fp+0x58]  class-hnd exact "dup spill" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Conversion]>
 ;* V87 tmp59        [V87    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[Microsoft.CodeAnalysis.CSharp.Conversion]>
 ;* V88 tmp60        [V88    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.Conversion>
-;  V89 tmp61        [V89,T06] (  8, 50   )     int  ->  [fp+0xF4]  "Inline stloc first use temp"
+;  V89 tmp61        [V89,T06] (  8, 50   )     int  ->  [fp+0x104]  "Inline stloc first use temp"
 ;* V90 tmp62        [V90    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[Microsoft.CodeAnalysis.CSharp.Conversion]>
 ;  V91 tmp63        [V91,T35] (  6, 12   )     int  ->   x1         "Inlining Arg"
 ;* V92 tmp64        [V92    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[Microsoft.CodeAnalysis.CSharp.Conversion]>
-;  V93 tmp65        [V93,T00] ( 16,208.32)     ref  ->  [fp+0x40]  class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[Microsoft.CodeAnalysis.CSharp.Conversion]>
-;  V94 tmp66        [V94,T05] ( 10, 57.84)     int  ->  [fp+0xF0]  "Inline stloc first use temp"
+;  V93 tmp65        [V93,T00] ( 16,208.32)     ref  ->  [fp+0x50]  class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[Microsoft.CodeAnalysis.CSharp.Conversion]>
+;  V94 tmp66        [V94,T05] ( 10, 57.84)     int  ->  [fp+0x100]  "Inline stloc first use temp"
 ;* V95 tmp67        [V95    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;  V96 tmp68        [V96,T19] (  6, 16   )     int  ->   x1         "Inline return value spill temp"
 ;  V97 tmp69        [V97,T07] (  6, 44.31)     int  ->   x1         "Inlining Arg"
 ;* V98 tmp70        [V98    ] (  0,  0   )  struct (16) zero-ref    "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Conversion>
-;  V99 tmp71        [V99,T12] ( 15, 28.04)     ref  ->  [fp+0x38]  class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[Microsoft.CodeAnalysis.CSharp.Conversion]>
-;  V100 tmp72       [V100,T50] ( 10,  8.46)     int  ->  [fp+0xEC]  "Inline stloc first use temp"
+;  V99 tmp71        [V99,T12] ( 15, 28.04)     ref  ->  [fp+0x48]  class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[Microsoft.CodeAnalysis.CSharp.Conversion]>
+;  V100 tmp72       [V100,T50] ( 10,  8.46)     int  ->  [fp+0xFC]  "Inline stloc first use temp"
 ;* V101 tmp73       [V101    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;  V102 tmp74       [V102,T87] (  6,  4   )     int  ->   x1         "Inline return value spill temp"
 ;  V103 tmp75       [V103,T43] (  6, 11.08)     int  ->   x1         "Inlining Arg"
 ;* V104 tmp76       [V104    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterDiagnosticInfo]>
-;  V105 tmp77       [V105,T104] (  2,  2   )  struct (40) [fp+0xC0]  do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.MemberAnalysisResult>
+;  V105 tmp77       [V105,T104] (  2,  2   )  struct (40) [fp+0xD0]  do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.MemberAnalysisResult>
 ;* V106 tmp78       [V106    ] (  0,  0   )  struct ( 8) zero-ref    "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterDiagnosticInfo]>
 ;* V107 tmp79       [V107    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.Collections.Immutable.ImmutableArray`1[int]>
 ;* V108 tmp80       [V108    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterDiagnosticInfo]>
 ;* V109 tmp81       [V109    ] (  0,  0   )  struct ( 8) zero-ref    "impAppendStmt" <System.Collections.Immutable.ImmutableArray`1[int]>
-;  V110 tmp82       [V110,T105] (  2,  2   )  struct (40) [fp+0x98]  do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.MemberAnalysisResult>
+;  V110 tmp82       [V110,T105] (  2,  2   )  struct (40) [fp+0xA8]  do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.MemberAnalysisResult>
 ;* V111 tmp83       [V111    ] (  0,  0   )  struct ( 8) zero-ref    "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterDiagnosticInfo]>
 ;  V112 tmp84       [V112,T46] (  9,  7.04)     ref  ->  x21         single-def "field V03.ParameterTypes (fldOffset=0x0)" P-INDEP
 ;  V113 tmp85       [V113,T62] (  7,  5.04)     ref  ->  x22         single-def "field V03.ParameterRefKinds (fldOffset=0x8)" P-INDEP
 ;  V114 tmp86       [V114,T81] (  4,  2.50)     ref  ->  x25         single-def "field V05.array (fldOffset=0x0)" P-INDEP
 ;  V115 tmp87       [V115,T110] (  3,  1.50)     ref  ->  x19         single-def "field V15.array (fldOffset=0x0)" P-INDEP
-;  V116 tmp88       [V116,T21] ( 13, 12.50)     ref  ->  [fp+0x30]  "field V18._uncommonData (fldOffset=0x0)" P-INDEP
-;  V117 tmp89       [V117,T18] ( 17, 16.50)   ubyte  ->  [fp+0x94]  "field V18._kind (fldOffset=0x8)" P-INDEP
-;  V118 tmp90       [V118,T54] (  8,  8   )     ref  ->  registers   "field V26.DefaultType (fldOffset=0x0)" P-INDEP
-;  V119 tmp91       [V119,T55] (  8,  8   )     ref  ->   x0         "field V26._extensions (fldOffset=0x8)" P-INDEP
+;  V116 tmp88       [V116,T21] ( 13, 12.50)     ref  ->  [fp+0x40]  "field V18._uncommonData (fldOffset=0x0)" P-INDEP
+;  V117 tmp89       [V117,T18] ( 17, 16.50)   ubyte  ->  [fp+0xA4]  "field V18._kind (fldOffset=0x8)" P-INDEP
+;  V118 tmp90       [V118,T54] (  8,  8   )     ref  ->  [fp+0x38]  "field V26.DefaultType (fldOffset=0x0)" P-INDEP
+;  V119 tmp91       [V119,T55] (  8,  8   )     ref  ->  registers   "field V26._extensions (fldOffset=0x8)" P-INDEP
 ;* V120 tmp92       [V120    ] (  0,  0   )   ubyte  ->  zero-ref    "field V26.DefaultNullableAnnotation (fldOffset=0x10)" P-INDEP
 ;* V121 tmp93       [V121    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V27.array (fldOffset=0x0)" P-INDEP
 ;* V122 tmp94       [V122    ] (  0,  0   )     ref  ->  zero-ref    "field V31._uncommonData (fldOffset=0x0)" P-DEP
@@ -148,12 +148,12 @@
 ;* V137 tmp109      [V137    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V71.array (fldOffset=0x0)" P-INDEP
 ;* V138 tmp110      [V138    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V72.array (fldOffset=0x0)" P-INDEP
 ;* V139 tmp111      [V139,T122] (  0,  0   )     ref  ->  zero-ref    single-def "field V74.array (fldOffset=0x0)" P-INDEP
-;  V140 tmp112      [V140,T88] (  4,  4   )     ref  ->  [fp+0x28]  "field V80._uncommonData (fldOffset=0x0)" P-INDEP
-;  V141 tmp113      [V141,T91] (  4,  4   )   ubyte  ->  [fp+0x90]  "field V80._kind (fldOffset=0x8)" P-INDEP
+;  V140 tmp112      [V140,T88] (  4,  4   )     ref  ->  [fp+0x30]  "field V80._uncommonData (fldOffset=0x0)" P-INDEP
+;  V141 tmp113      [V141,T91] (  4,  4   )   ubyte  ->  [fp+0xA0]  "field V80._kind (fldOffset=0x8)" P-INDEP
 ;* V142 tmp114      [V142,T100] (  0,  0   )     ref  ->  zero-ref    "field V88._uncommonData (fldOffset=0x0)" P-INDEP
 ;* V143 tmp115      [V143,T109] (  0,  0   )   ubyte  ->  zero-ref    "field V88._kind (fldOffset=0x8)" P-INDEP
-;  V144 tmp116      [V144,T89] (  4,  4   )     ref  ->  [fp+0x20]  "field V98._uncommonData (fldOffset=0x0)" P-INDEP
-;  V145 tmp117      [V145,T92] (  4,  4   )   ubyte  ->  [fp+0x8C]  "field V98._kind (fldOffset=0x8)" P-INDEP
+;  V144 tmp116      [V144,T89] (  4,  4   )     ref  ->  [fp+0x28]  "field V98._uncommonData (fldOffset=0x0)" P-INDEP
+;  V145 tmp117      [V145,T92] (  4,  4   )   ubyte  ->  [fp+0x9C]  "field V98._kind (fldOffset=0x8)" P-INDEP
 ;* V146 tmp118      [V146    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V104.array (fldOffset=0x0)" P-INDEP
 ;* V147 tmp119      [V147,T123] (  0,  0   )     ref  ->  zero-ref    single-def "field V106.array (fldOffset=0x0)" P-INDEP
 ;* V148 tmp120      [V148    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V107.array (fldOffset=0x0)" P-INDEP
@@ -188,20 +188,20 @@
 ;  V177 tmp149      [V177,T26] (  6, 12   )     ref  ->   x9         "arr expr"
 ;  V178 tmp150      [V178,T36] (  6, 12   )     int  ->  x10         "index expr"
 ;  V179 tmp151      [V179,T27] (  6, 12   )     ref  ->  x15         "arr expr"
-;  V180 tmp152      [V180,T28] (  6, 12   )   byref  ->   x0         "BlockOp address local"
+;  V180 tmp152      [V180,T28] (  6, 12   )   byref  ->  registers   "BlockOp address local"
 ;  V181 tmp153      [V181,T29] (  6, 12   )   byref  ->  registers   "BlockOp address local"
 ;  V182 tmp154      [V182,T94] (  3,  3   )   byref  ->   x0         single-def "BlockOp address local"
 ;  V183 tmp155      [V183,T30] (  6, 12   )     ref  ->   x7         "arr expr"
 ;  V184 tmp156      [V184,T37] (  6, 12   )     int  ->   x8         "index expr"
 ;  V185 tmp157      [V185,T31] (  6, 12   )     ref  ->  registers   "arr expr"
 ;  V186 tmp158      [V186,T38] (  6, 12   )     int  ->  registers   "index expr"
-;  V187 tmp159      [V187,T32] (  6, 12   )   byref  ->  [fp+0x18]  "BlockOp address local"
+;  V187 tmp159      [V187,T32] (  6, 12   )   byref  ->  [fp+0x20]  "BlockOp address local"
 ;  V188 tmp160      [V188,T01] (  6, 96   )     ref  ->   x8         "arr expr"
 ;  V189 tmp161      [V189,T03] (  6, 96   )     int  ->   x9         "index expr"
 ;  V190 tmp162      [V190,T02] (  6, 96   )   byref  ->  x10         "BlockOp address local"
 ;  V191 tmp163      [V191,T33] (  6, 12   )     ref  ->   x1         "arr expr"
 ;  V192 tmp164      [V192,T39] (  6, 12   )     int  ->  registers   "index expr"
-;  V193 tmp165      [V193,T34] (  6, 12   )   byref  ->  [fp+0x10]  "BlockOp address local"
+;  V193 tmp165      [V193,T34] (  6, 12   )   byref  ->  [fp+0x18]  "BlockOp address local"
 ;  V194 cse0        [V194,T79] (  3,  5.94)     int  ->   x0         "CSE - moderate"
 ;  V195 cse1        [V195,T95] (  3,  3   )     int  ->   x0         "CSE - conservative"
 ;  V196 cse2        [V196,T132] (  3,  0.06)     int  ->   x0         "CSE - conservative"
@@ -220,9 +220,9 @@
 ;  V209 cse15       [V209,T129] (  3,  0.06)     ref  ->   x0         "CSE - conservative"
 ;  V210 cse16       [V210,T130] (  3,  0.06)     ref  ->   x0         "CSE - conservative"
 ;  V211 cse17       [V211,T131] (  3,  0.06)     ref  ->   x0         "CSE - conservative"
-;  V212 cse18       [V212,T72] (  4,  6   )     int  ->  [fp+0x88]  spill-single-def "CSE - moderate"
+;  V212 cse18       [V212,T72] (  4,  6   )     int  ->  [fp+0x98]  spill-single-def "CSE - moderate"
 ;
-; Lcl frame size = 368
+; Lcl frame size = 384
 
 G_M55718_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
             sub     sp, sp, #0xD1FFAB1E
@@ -234,7 +234,7 @@ G_M55718_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             stp     x27, x28, [sp, #0xD1FFAB1E]
             add     fp, sp, #16
             movi    v16.16b, #0
-            add     x9, fp, #120
+            add     x9, fp, #136
             mov     x10, #144
             stp     q16, q16, [x9, #0x20]
             stp     q16, q16, [x9, #0x40]!
@@ -263,7 +263,7 @@ G_M55718_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
 G_M55718_IG02:        ; bbWeight=1, gcrefRegs=3E80000 {x19 x21 x22 x23 x24 x25}, byrefRegs=8100000 {x20 x27}, byref, isz
             ldr     w0, [x21, #0x08]
             uxtb    w2, w6
-            str     w2, [fp, #0x88]	// [V212 cse18]
+            str     w2, [fp, #0x98]	// [V212 cse18]
             cmp     w2, #0
             cset    x3, ne
             add     w3, w0, w3
@@ -274,7 +274,7 @@ G_M55718_IG02:        ; bbWeight=1, gcrefRegs=3E80000 {x19 x21 x22 x23 x24 x25},
             ; gcrRegs -[x0]
             cmp     w0, w3
             csel    w3, w3, w0, ge
-            str     xzr, [fp, #0x80]	// [V12 loc1]
+            str     xzr, [fp, #0x90]	// [V12 loc1]
             ; GC ptr vars +{V12}
             mov     x5, xzr
             ; gcrRegs +[x5]
@@ -351,7 +351,7 @@ G_M55718_IG06:        ; bbWeight=1.98, gcrefRegs=3E80020 {x5 x19 x21 x22 x23 x24
 						;; size=44 bbWeight=1.98 PerfScore 22.77
 G_M55718_IG07:        ; bbWeight=1.98, gcrefRegs=3E80020 {x5 x19 x21 x22 x23 x24 x25}, byrefRegs=8100000 {x20 x27}, byref, isz
             ; gcrRegs -[x0]
-            str     x5, [fp, #0x78]	// [V13 loc2]
+            str     x5, [fp, #0x88]	// [V13 loc2]
             ; GC ptr vars +{V13}
             ldr     x7, [x5, #0x08]
             ; gcrRegs +[x7]
@@ -374,7 +374,7 @@ G_M55718_IG08:        ; bbWeight=1.52, gcVars=0000000000000000000000000000000000
             str     w8, [fp, #0xD1FFAB1E]	// [V47 tmp19]
 						;; size=8 bbWeight=1.52 PerfScore 2.29
 G_M55718_IG09:        ; bbWeight=1.98, gcrefRegs=3E80080 {x7 x19 x21 x22 x23 x24 x25}, byrefRegs=8100000 {x20 x27}, byref
-            str     x7, [fp, #0x60]	// [V46 tmp18]
+            str     x7, [fp, #0x70]	// [V46 tmp18]
             ; GC ptr vars +{V46}
             add     x0, x7, #8
             ; byrRegs +[x0]
@@ -387,7 +387,7 @@ G_M55718_IG09:        ; bbWeight=1.98, gcrefRegs=3E80080 {x7 x19 x21 x22 x23 x24
             ; gcrRegs -[x7]
             ; byrRegs -[x0]
             ; gcr arg pop 0
-            ldr     x7, [fp, #0x60]	// [V46 tmp18]
+            ldr     x7, [fp, #0x70]	// [V46 tmp18]
             ; gcrRegs +[x7]
             ldr     w8, [fp, #0xD1FFAB1E]	// [V47 tmp19]
 						;; size=40 bbWeight=1.98 PerfScore 22.77
@@ -414,7 +414,7 @@ G_M55718_IG10:        ; bbWeight=1.98, gcVars=0000000000000000000000000000000000
             ; gcrRegs +[x10]
             mov     w11, w13
             ; gcrRegs -[x11]
-            ldr     x5, [fp, #0x78]	// [V13 loc2]
+            ldr     x5, [fp, #0x88]	// [V13 loc2]
             ; gcrRegs +[x5]
             b       G_M55718_IG38
 						;; size=68 bbWeight=1.98 PerfScore 42.57
@@ -489,11 +489,11 @@ G_M55718_IG18:        ; bbWeight=0.99, gcrefRegs=3E80A20 {x5 x9 x11 x19 x21 x22
             beq     G_M55718_IG22
 						;; size=24 bbWeight=0.99 PerfScore 5.94
 G_M55718_IG19:        ; bbWeight=1.98, gcrefRegs=3E80220 {x5 x9 x19 x21 x22 x23 x24 x25}, byrefRegs=8100000 {x20 x27}, byref, isz
...
+20 (+0.38%) : 51199.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:IsApplicable(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.OverloadResolution+EffectiveParameters,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,System.Collections.Immutable.ImmutableArray`1[int],ubyte,ubyte,ubyte,ubyte,byref):Microsoft.CodeAnalysis.CSharp.MemberAnalysisResult:this (FullOpts)
@@ -16,26 +16,26 @@
 ;* V05 arg4         [V05    ] (  0,  0   )  struct ( 8) zero-ref    single-def <System.Collections.Immutable.ImmutableArray`1[int]>
 ;  V06 arg5         [V06,T46] (  5,  7   )   ubyte  ->  x22         single-def
 ;  V07 arg6         [V07,T79] (  3,  2.50)   ubyte  ->  x27         single-def
-;  V08 arg7         [V08,T98] (  2,  2   )   ubyte  ->  [fp+0x1C0]  single-def
-;  V09 arg8         [V09,T99] (  2,  2   )   ubyte  ->  [fp+0x1C8]  single-def
+;  V08 arg7         [V08,T98] (  2,  2   )   ubyte  ->  [fp+0x1D0]  single-def
+;  V09 arg8         [V09,T99] (  2,  2   )   ubyte  ->  [fp+0x1D8]  single-def
 ;  V10 arg9         [V10,T93] (  2,  2   )   byref  ->  x28         single-def
-;  V11 loc0         [V11,T17] ( 15, 17   )     int  ->  [fp+0x16C] 
-;  V12 loc1         [V12,T12] ( 14, 28.02)     ref  ->  [fp+0x80]  class-hnd <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Conversion]>
-;  V13 loc2         [V13,T16] ( 17, 18   )     ref  ->  [fp+0x78]  class-hnd <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[int]>
-;  V14 loc3         [V14,T114] (  3,  1.50)  struct (40) [fp+0x140]  do-not-enreg[S] must-init <Microsoft.CodeAnalysis.CSharp.MemberAnalysisResult>
+;  V11 loc0         [V11,T17] ( 15, 17   )     int  ->  [fp+0x17C] 
+;  V12 loc1         [V12,T12] ( 14, 28.02)     ref  ->  [fp+0x90]  class-hnd <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Conversion]>
+;  V13 loc2         [V13,T16] ( 17, 18   )     ref  ->  [fp+0x88]  class-hnd <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[int]>
+;  V14 loc3         [V14,T114] (  3,  1.50)  struct (40) [fp+0x150]  do-not-enreg[S] must-init <Microsoft.CodeAnalysis.CSharp.MemberAnalysisResult>
 ;* V15 loc4         [V15    ] (  0,  0   )  struct ( 8) zero-ref    <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion]>
 ;* V16 loc5         [V16    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]>
-;  V17 loc6         [V17,T04] ( 41, 63.56)     int  ->  [fp+0x13C] 
-;  V18 loc7         [V18,T24] ( 10, 12   )     ref  ->  [fp+0x70]  class-hnd <Microsoft.CodeAnalysis.CSharp.BoundExpression>
+;  V17 loc6         [V17,T04] ( 41, 63.56)     int  ->  [fp+0x14C] 
+;  V18 loc7         [V18,T24] ( 10, 12   )     ref  ->  [fp+0x80]  class-hnd <Microsoft.CodeAnalysis.CSharp.BoundExpression>
 ;* V19 loc8         [V19    ] (  0,  0   )  struct (16) zero-ref    multireg-arg multireg-ret ld-addr-op <Microsoft.CodeAnalysis.CSharp.Conversion>
-;  V20 loc9         [V20,T56] (  8,  8   )   ubyte  ->  [fp+0x138] 
-;  V21 loc10        [V21,T23] ( 12, 12   )   ubyte  ->  [fp+0x134] 
-;  V22 loc11        [V22,T65] (  6,  6   )   ubyte  ->  [fp+0x130] 
-;  V23 loc12        [V23,T66] (  6,  6   )   ubyte  ->  [fp+0x12C] 
+;  V20 loc9         [V20,T56] (  8,  8   )   ubyte  ->  [fp+0x148] 
+;  V21 loc10        [V21,T23] ( 12, 12   )   ubyte  ->  [fp+0x144] 
+;  V22 loc11        [V22,T65] (  6,  6   )   ubyte  ->  [fp+0x140] 
+;  V23 loc12        [V23,T66] (  6,  6   )   ubyte  ->  [fp+0x13C] 
 ;* V24 loc13        [V24    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op <System.Collections.Immutable.ImmutableArray`1[ubyte]>
 ;  V25 loc14        [V25,T60] (  8,  7   )     ref  ->  registers   class-hnd exact <Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator>
 ;* V26 loc15        [V26,T87] (  0,  0   )   ubyte  ->  zero-ref   
-;  V27 loc16        [V27,T22] ( 12, 12   )     ref  ->  [fp+0x68]  class-hnd <<unknown class>>
+;  V27 loc16        [V27,T22] ( 12, 12   )     ref  ->  [fp+0x78]  class-hnd <<unknown class>>
 ;* V28 loc17        [V28    ] (  0,  0   )  struct (24) zero-ref    ld-addr-op <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
 ;* V29 loc18        [V29    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion]>
 ;  V30 OutArgs      [V30    ] (  1,  1   )  struct (16) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -59,8 +59,8 @@
 ;* V48 tmp18        [V48    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <<unknown class>>
 ;  V49 tmp19        [V49,T14] (  6, 24   )     ref  ->   x7         class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]>
 ;* V50 tmp20        [V50    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.Conversion>
-;  V51 tmp21        [V51,T13] ( 14, 28   )     ref  ->  [fp+0x60]  class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[int]>
-;  V52 tmp22        [V52,T47] ( 10,  8.46)     int  ->  [fp+0x128]  "Inline stloc first use temp"
+;  V51 tmp21        [V51,T13] ( 14, 28   )     ref  ->  [fp+0x70]  class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[int]>
+;  V52 tmp22        [V52,T47] ( 10,  8.46)     int  ->  [fp+0x138]  "Inline stloc first use temp"
 ;* V53 tmp23        [V53    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;  V54 tmp24        [V54,T81] (  6,  4   )     int  ->  x10         "Inline return value spill temp"
 ;  V55 tmp25        [V55,T39] (  6, 11.08)     int  ->   x9         "Inlining Arg"
@@ -76,62 +76,62 @@
 ;  V65 tmp35        [V65,T62] (  6,  6   )     ref  ->  x13        
 ;  V66 tmp36        [V66,T63] (  6,  6   )     ref  ->  x13         class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
 ;* V67 tmp37        [V67    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "dup spill" <<unknown class>>
-;  V68 tmp38        [V68,T52] (  8,  8   )     ref  ->   x0        
+;  V68 tmp38        [V68,T52] (  8,  8   )     ref  ->  registers  
 ;  V69 tmp39        [V69,T64] (  6,  6   )     ref  ->  x14         class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
 ;* V70 tmp40        [V70    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "dup spill" <<unknown class>>
-;  V71 tmp41        [V71,T53] (  8,  8   )     ref  ->   x0        
+;  V71 tmp41        [V71,T53] (  8,  8   )     ref  ->  registers  
 ;* V72 tmp42        [V72    ] (  0,  0   )  struct ( 8) zero-ref    "Inline return value spill temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion]>
 ;  V73 tmp43        [V73,T90] (  3,  3   )     ref  ->  x27         class-hnd exact single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Conversion[]>
 ;* V74 tmp44        [V74    ] (  0,  0   )  struct (16) zero-ref    "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Conversion>
 ;* V75 tmp45        [V75    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Conversion[]>
 ;* V76 tmp46        [V76    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion]>
 ;* V77 tmp47        [V77    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterDiagnosticInfo]>
-;  V78 tmp48        [V78,T102] (  2,  2   )  struct (40) [fp+0x100]  do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.MemberAnalysisResult>
+;  V78 tmp48        [V78,T102] (  2,  2   )  struct (40) [fp+0x110]  do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.MemberAnalysisResult>
 ;* V79 tmp49        [V79    ] (  0,  0   )  struct ( 8) zero-ref    "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterDiagnosticInfo]>
-;  V80 tmp50        [V80,T09] ( 15, 28.04)     ref  ->  [fp+0x58]  class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[int]>
-;  V81 tmp51        [V81,T48] ( 10,  8.46)     int  ->  [fp+0xFC]  "Inline stloc first use temp"
+;  V80 tmp50        [V80,T09] ( 15, 28.04)     ref  ->  [fp+0x68]  class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[int]>
+;  V81 tmp51        [V81,T48] ( 10,  8.46)     int  ->  [fp+0x10C]  "Inline stloc first use temp"
 ;* V82 tmp52        [V82    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;  V83 tmp53        [V83,T82] (  6,  4   )     int  ->  registers   "Inline return value spill temp"
 ;  V84 tmp54        [V84,T40] (  6, 11.08)     int  ->  registers   "Inlining Arg"
 ;* V85 tmp55        [V85    ] (  0,  0   )  struct (16) zero-ref    "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Conversion>
-;  V86 tmp56        [V86,T10] ( 15, 28.04)     ref  ->  [fp+0x50]  class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[Microsoft.CodeAnalysis.CSharp.Conversion]>
-;  V87 tmp57        [V87,T49] ( 10,  8.46)     int  ->  [fp+0xF8]  "Inline stloc first use temp"
+;  V86 tmp56        [V86,T10] ( 15, 28.04)     ref  ->  [fp+0x60]  class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[Microsoft.CodeAnalysis.CSharp.Conversion]>
+;  V87 tmp57        [V87,T49] ( 10,  8.46)     int  ->  [fp+0x108]  "Inline stloc first use temp"
 ;* V88 tmp58        [V88    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;  V89 tmp59        [V89,T83] (  6,  4   )     int  ->  registers   "Inline return value spill temp"
 ;  V90 tmp60        [V90,T41] (  6, 11.08)     int  ->  registers   "Inlining Arg"
-;  V91 tmp61        [V91,T25] (  6, 12   )     ref  ->  [fp+0x48]  class-hnd exact "dup spill" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Conversion]>
+;  V91 tmp61        [V91,T25] (  6, 12   )     ref  ->  [fp+0x58]  class-hnd exact "dup spill" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Conversion]>
 ;* V92 tmp62        [V92    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[Microsoft.CodeAnalysis.CSharp.Conversion]>
 ;* V93 tmp63        [V93    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.Conversion>
-;  V94 tmp64        [V94,T06] (  8, 50   )     int  ->  [fp+0xF4]  "Inline stloc first use temp"
-;  V95 tmp65        [V95,T00] ( 16,208.32)     ref  ->  [fp+0x40]  class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[Microsoft.CodeAnalysis.CSharp.Conversion]>
-;  V96 tmp66        [V96,T05] ( 10, 57.84)     int  ->  [fp+0xF0]  "Inline stloc first use temp"
+;  V94 tmp64        [V94,T06] (  8, 50   )     int  ->  [fp+0x104]  "Inline stloc first use temp"
+;  V95 tmp65        [V95,T00] ( 16,208.32)     ref  ->  [fp+0x50]  class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[Microsoft.CodeAnalysis.CSharp.Conversion]>
+;  V96 tmp66        [V96,T05] ( 10, 57.84)     int  ->  [fp+0x100]  "Inline stloc first use temp"
 ;* V97 tmp67        [V97    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;  V98 tmp68        [V98,T19] (  6, 16   )     int  ->   x1         "Inline return value spill temp"
 ;  V99 tmp69        [V99,T07] (  6, 44.31)     int  ->   x1         "Inlining Arg"
 ;* V100 tmp70       [V100    ] (  0,  0   )  struct (16) zero-ref    "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Conversion>
-;  V101 tmp71       [V101,T11] ( 15, 28.04)     ref  ->  [fp+0x38]  class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[Microsoft.CodeAnalysis.CSharp.Conversion]>
-;  V102 tmp72       [V102,T50] ( 10,  8.46)     int  ->  [fp+0xEC]  "Inline stloc first use temp"
+;  V101 tmp71       [V101,T11] ( 15, 28.04)     ref  ->  [fp+0x48]  class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[Microsoft.CodeAnalysis.CSharp.Conversion]>
+;  V102 tmp72       [V102,T50] ( 10,  8.46)     int  ->  [fp+0xFC]  "Inline stloc first use temp"
 ;* V103 tmp73       [V103    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;  V104 tmp74       [V104,T84] (  6,  4   )     int  ->   x1         "Inline return value spill temp"
 ;  V105 tmp75       [V105,T42] (  6, 11.08)     int  ->   x1         "Inlining Arg"
 ;* V106 tmp76       [V106    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterDiagnosticInfo]>
-;  V107 tmp77       [V107,T103] (  2,  2   )  struct (40) [fp+0xC0]  do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.MemberAnalysisResult>
+;  V107 tmp77       [V107,T103] (  2,  2   )  struct (40) [fp+0xD0]  do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.MemberAnalysisResult>
 ;* V108 tmp78       [V108    ] (  0,  0   )  struct ( 8) zero-ref    "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterDiagnosticInfo]>
 ;* V109 tmp79       [V109    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.Collections.Immutable.ImmutableArray`1[int]>
 ;* V110 tmp80       [V110    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterDiagnosticInfo]>
 ;* V111 tmp81       [V111    ] (  0,  0   )  struct ( 8) zero-ref    "impAppendStmt" <System.Collections.Immutable.ImmutableArray`1[int]>
-;  V112 tmp82       [V112,T104] (  2,  2   )  struct (40) [fp+0x98]  do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.MemberAnalysisResult>
+;  V112 tmp82       [V112,T104] (  2,  2   )  struct (40) [fp+0xA8]  do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.MemberAnalysisResult>
 ;* V113 tmp83       [V113    ] (  0,  0   )  struct ( 8) zero-ref    "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterDiagnosticInfo]>
 ;  V114 tmp84       [V114,T45] (  9,  7.04)     ref  ->  x21         single-def "field V03.ParameterTypes (fldOffset=0x0)" P-INDEP
 ;  V115 tmp85       [V115,T61] (  7,  5.04)     ref  ->  x23         single-def "field V03.ParameterRefKinds (fldOffset=0x8)" P-INDEP
 ;  V116 tmp86       [V116,T78] (  4,  2.50)     ref  ->  x26         single-def "field V05.array (fldOffset=0x0)" P-INDEP
 ;  V117 tmp87       [V117,T109] (  3,  1.50)     ref  ->  x19         single-def "field V15.array (fldOffset=0x0)" P-INDEP
 ;* V118 tmp88       [V118    ] (  0,  0   )     ref  ->  zero-ref    "field V16.array (fldOffset=0x0)" P-INDEP
-;  V119 tmp89       [V119,T21] ( 13, 12.50)     ref  ->  [fp+0x30]  "field V19._uncommonData (fldOffset=0x0)" P-INDEP
-;  V120 tmp90       [V120,T18] ( 17, 16.50)   ubyte  ->  [fp+0x94]  "field V19._kind (fldOffset=0x8)" P-INDEP
+;  V119 tmp89       [V119,T21] ( 13, 12.50)     ref  ->  [fp+0x40]  "field V19._uncommonData (fldOffset=0x0)" P-INDEP
+;  V120 tmp90       [V120,T18] ( 17, 16.50)   ubyte  ->  [fp+0xA4]  "field V19._kind (fldOffset=0x8)" P-INDEP
 ;* V121 tmp91       [V121    ] (  0,  0   )     ref  ->  zero-ref    "field V24.array (fldOffset=0x0)" P-INDEP
-;  V122 tmp92       [V122,T54] (  8,  8   )     ref  ->  registers   "field V28.DefaultType (fldOffset=0x0)" P-INDEP
-;  V123 tmp93       [V123,T55] (  8,  8   )     ref  ->   x0         "field V28._extensions (fldOffset=0x8)" P-INDEP
+;  V122 tmp92       [V122,T54] (  8,  8   )     ref  ->  [fp+0x38]  "field V28.DefaultType (fldOffset=0x0)" P-INDEP
+;  V123 tmp93       [V123,T55] (  8,  8   )     ref  ->  registers   "field V28._extensions (fldOffset=0x8)" P-INDEP
 ;* V124 tmp94       [V124    ] (  0,  0   )   ubyte  ->  zero-ref    "field V28.NullableAnnotation (fldOffset=0x10)" P-INDEP
 ;* V125 tmp95       [V125    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V29.array (fldOffset=0x0)" P-INDEP
 ;* V126 tmp96       [V126    ] (  0,  0   )     ref  ->  zero-ref    "field V36._uncommonData (fldOffset=0x0)" P-DEP
@@ -152,12 +152,12 @@
 ;* V141 tmp111      [V141    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V76.array (fldOffset=0x0)" P-INDEP
 ;* V142 tmp112      [V142    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V77.array (fldOffset=0x0)" P-INDEP
 ;* V143 tmp113      [V143,T121] (  0,  0   )     ref  ->  zero-ref    single-def "field V79.array (fldOffset=0x0)" P-INDEP
-;  V144 tmp114      [V144,T85] (  4,  4   )     ref  ->  [fp+0x28]  "field V85._uncommonData (fldOffset=0x0)" P-INDEP
-;  V145 tmp115      [V145,T88] (  4,  4   )   ubyte  ->  [fp+0x90]  "field V85._kind (fldOffset=0x8)" P-INDEP
+;  V144 tmp114      [V144,T85] (  4,  4   )     ref  ->  [fp+0x30]  "field V85._uncommonData (fldOffset=0x0)" P-INDEP
+;  V145 tmp115      [V145,T88] (  4,  4   )   ubyte  ->  [fp+0xA0]  "field V85._kind (fldOffset=0x8)" P-INDEP
 ;* V146 tmp116      [V146,T97] (  0,  0   )     ref  ->  zero-ref    "field V93._uncommonData (fldOffset=0x0)" P-INDEP
 ;* V147 tmp117      [V147,T108] (  0,  0   )   ubyte  ->  zero-ref    "field V93._kind (fldOffset=0x8)" P-INDEP
-;  V148 tmp118      [V148,T86] (  4,  4   )     ref  ->  [fp+0x20]  "field V100._uncommonData (fldOffset=0x0)" P-INDEP
-;  V149 tmp119      [V149,T89] (  4,  4   )   ubyte  ->  [fp+0x8C]  "field V100._kind (fldOffset=0x8)" P-INDEP
+;  V148 tmp118      [V148,T86] (  4,  4   )     ref  ->  [fp+0x28]  "field V100._uncommonData (fldOffset=0x0)" P-INDEP
+;  V149 tmp119      [V149,T89] (  4,  4   )   ubyte  ->  [fp+0x9C]  "field V100._kind (fldOffset=0x8)" P-INDEP
 ;* V150 tmp120      [V150    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V106.array (fldOffset=0x0)" P-INDEP
 ;* V151 tmp121      [V151,T122] (  0,  0   )     ref  ->  zero-ref    single-def "field V108.array (fldOffset=0x0)" P-INDEP
 ;* V152 tmp122      [V152    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V109.array (fldOffset=0x0)" P-INDEP
@@ -192,20 +192,20 @@
 ;  V181 tmp151      [V181,T26] (  6, 12   )     ref  ->   x9         "arr expr"
 ;  V182 tmp152      [V182,T35] (  6, 12   )     int  ->  x10         "index expr"
 ;  V183 tmp153      [V183,T27] (  6, 12   )     ref  ->  x15         "arr expr"
-;  V184 tmp154      [V184,T28] (  6, 12   )   byref  ->   x0         "BlockOp address local"
+;  V184 tmp154      [V184,T28] (  6, 12   )   byref  ->  registers   "BlockOp address local"
 ;  V185 tmp155      [V185,T29] (  6, 12   )   byref  ->  registers   "BlockOp address local"
 ;  V186 tmp156      [V186,T91] (  3,  3   )   byref  ->   x0         single-def "BlockOp address local"
 ;  V187 tmp157      [V187,T30] (  6, 12   )     ref  ->   x7         "arr expr"
 ;  V188 tmp158      [V188,T36] (  6, 12   )     int  ->   x8         "index expr"
 ;  V189 tmp159      [V189,T31] (  6, 12   )     ref  ->  registers   "arr expr"
 ;  V190 tmp160      [V190,T37] (  6, 12   )     int  ->  registers   "index expr"
-;  V191 tmp161      [V191,T32] (  6, 12   )   byref  ->  [fp+0x18]  "BlockOp address local"
+;  V191 tmp161      [V191,T32] (  6, 12   )   byref  ->  [fp+0x20]  "BlockOp address local"
 ;  V192 tmp162      [V192,T01] (  6, 96   )     ref  ->  registers   "arr expr"
 ;  V193 tmp163      [V193,T03] (  6, 96   )     int  ->   x9         "index expr"
 ;  V194 tmp164      [V194,T02] (  6, 96   )   byref  ->  x10         "BlockOp address local"
 ;  V195 tmp165      [V195,T33] (  6, 12   )     ref  ->   x1         "arr expr"
 ;  V196 tmp166      [V196,T38] (  6, 12   )     int  ->  registers   "index expr"
-;  V197 tmp167      [V197,T34] (  6, 12   )   byref  ->  [fp+0x10]  "BlockOp address local"
+;  V197 tmp167      [V197,T34] (  6, 12   )   byref  ->  [fp+0x18]  "BlockOp address local"
 ;  V198 cse0        [V198,T77] (  3,  5.94)     int  ->   x0         "CSE - conservative"
 ;  V199 cse1        [V199,T92] (  3,  3   )     int  ->   x0         "CSE - conservative"
 ;  V200 cse2        [V200,T130] (  3,  0.06)     int  ->   x0         "CSE - conservative"
@@ -223,7 +223,7 @@
 ;  V212 cse14       [V212,T128] (  3,  0.06)     ref  ->   x0         "CSE - conservative"
 ;  V213 cse15       [V213,T129] (  3,  0.06)     ref  ->   x0         "CSE - conservative"
 ;
-; Lcl frame size = 368
+; Lcl frame size = 384
 
 G_M55718_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
             sub     sp, sp, #0xD1FFAB1E
@@ -235,7 +235,7 @@ G_M55718_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             stp     x27, x28, [sp, #0xD1FFAB1E]
             add     fp, sp, #16
             movi    v16.16b, #0
-            add     x9, fp, #120
+            add     x9, fp, #136
             mov     x10, #144
             stp     q16, q16, [x9, #0x20]
             stp     q16, q16, [x9, #0x40]!
@@ -273,7 +273,7 @@ G_M55718_IG02:        ; bbWeight=1, gcrefRegs=7A80000 {x19 x21 x23 x24 x25 x26},
             ; gcrRegs -[x0]
             cmp     w0, w3
             csel    w3, w3, w0, ge
-            str     xzr, [fp, #0x80]	// [V12 loc1]
+            str     xzr, [fp, #0x90]	// [V12 loc1]
             ; GC ptr vars +{V12}
             mov     x5, xzr
             ; gcrRegs +[x5]
@@ -351,7 +351,7 @@ G_M55718_IG06:        ; bbWeight=1.98, gcrefRegs=7A80020 {x5 x19 x21 x23 x24 x25
 						;; size=44 bbWeight=1.98 PerfScore 22.77
 G_M55718_IG07:        ; bbWeight=1.98, gcrefRegs=7A80020 {x5 x19 x21 x23 x24 x25 x26}, byrefRegs=10100000 {x20 x28}, byref, isz
             ; gcrRegs -[x0]
-            str     x5, [fp, #0x78]	// [V13 loc2]
+            str     x5, [fp, #0x88]	// [V13 loc2]
             ; GC ptr vars +{V13}
             ldr     x7, [x5, #0x08]
             ; gcrRegs +[x7]
@@ -374,7 +374,7 @@ G_M55718_IG08:        ; bbWeight=1.52, gcVars=0000000000000000000000000000000000
             str     w8, [fp, #0xD1FFAB1E]	// [V52 tmp22]
 						;; size=8 bbWeight=1.52 PerfScore 2.29
 G_M55718_IG09:        ; bbWeight=1.98, gcrefRegs=7A80080 {x7 x19 x21 x23 x24 x25 x26}, byrefRegs=10100000 {x20 x28}, byref
-            str     x7, [fp, #0x60]	// [V51 tmp21]
+            str     x7, [fp, #0x70]	// [V51 tmp21]
             ; GC ptr vars +{V51}
             add     x0, x7, #8
             ; byrRegs +[x0]
@@ -387,7 +387,7 @@ G_M55718_IG09:        ; bbWeight=1.98, gcrefRegs=7A80080 {x7 x19 x21 x23 x24 x25
             ; gcrRegs -[x7]
             ; byrRegs -[x0]
             ; gcr arg pop 0
-            ldr     x7, [fp, #0x60]	// [V51 tmp21]
+            ldr     x7, [fp, #0x70]	// [V51 tmp21]
             ; gcrRegs +[x7]
             ldr     w8, [fp, #0xD1FFAB1E]	// [V52 tmp22]
 						;; size=40 bbWeight=1.98 PerfScore 22.77
@@ -414,7 +414,7 @@ G_M55718_IG10:        ; bbWeight=1.98, gcVars=0000000000000000000000000000000000
             ; gcrRegs +[x10]
             mov     w11, w13
             ; gcrRegs -[x11]
-            ldr     x5, [fp, #0x78]	// [V13 loc2]
+            ldr     x5, [fp, #0x88]	// [V13 loc2]
             ; gcrRegs +[x5]
             b       G_M55718_IG38
 						;; size=68 bbWeight=1.98 PerfScore 42.57
@@ -489,11 +489,11 @@ G_M55718_IG18:        ; bbWeight=0.99, gcrefRegs=7A80A20 {x5 x9 x11 x19 x21 x23
             beq     G_M55718_IG22
 						;; size=24 bbWeight=0.99 PerfScore 5.94
 G_M55718_IG19:        ; bbWeight=1.98, gcrefRegs=7A80220 {x5 x9 x19 x21 x23 x24 x25 x26}, byrefRegs=10100000 {x20 x28}, byref, isz
-            str     x9, [fp, #0x70]	// [V18 loc7]
+            str     x9, [fp, #0x80]	// [V18 loc7]
             ; GC ptr vars +{V18}
             mov     x11, x9
             ; gcrRegs +[x11]
-            ldr     x9, [fp, #0x70]	// [V18 loc7]
+            ldr     x9, [fp, #0x80]	// [V18 loc7]
             cbz     x11, G_M55718_IG26
 						;; size=16 bbWeight=1.98 PerfScore 8.91
...
realworld.run.windows.arm64.checked.mch
-8 (-6.90%) : 1573.dasm - BepuPhysics.Solver:EnumerateConnectedBodyReferences[BepuPhysics.IslandSleeper+ConstraintBodyEnumerator](BepuPhysics.ConstraintHandle,byref):this (FullOpts)
@@ -45,32 +45,30 @@ G_M4272_IG02:        ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0008 {x3}, byr
             ldr     x1, [x0, #0x60]
             ldr     w4, [x2]
             mov     w5, #96
-            smull   x4, w4, w5
-            ldr     x1, [x1, x4]
+            smaddl  x1, w4, w5, x1
+            ldr     x1, [x1]
             ldr     w4, [x2, #0x04]
             mov     w5, #40
-            smull   x4, w4, w5
-            add     x1, x1, x4
+            smaddl  x1, w4, w5, x1
             ldr     x4, [x1, #0x10]
             ldr     x1, [x1]
             ldr     w5, [x2, #0x08]
             ldr     w1, [x1, w5, SXTW #2]
             mov     w5, #72
-            smull   x1, w1, w5
-            add     x1, x4, x1
+            smaddl  x1, w1, w5, x4
             ldr     w2, [x2, #0x0C]
             movz    x4, #0xD1FFAB1E      // code for <unknown method>
             movk    x4, #0xD1FFAB1E LSL #16
             movk    x4, #0xD1FFAB1E LSL #32
             ldr     x4, [x4]
-						;; size=96 bbWeight=1 PerfScore 44.50
+						;; size=88 bbWeight=1 PerfScore 52.50
 G_M4272_IG03:        ; bbWeight=1, epilog, nogc, extend
             ldp     fp, lr, [sp], #0x10
             br      x4
             ; gcr arg pop 0
 						;; size=8 bbWeight=1 PerfScore 2.00
 
-; Total bytes of code 116, prolog size 12, PerfScore 60.10, instruction count 29, allocated bytes for code 116 (MethodHash=7486ef4f) for method BepuPhysics.Solver:EnumerateConnectedBodyReferences[BepuPhysics.IslandSleeper+ConstraintBodyEnumerator](BepuPhysics.ConstraintHandle,byref):this (FullOpts)
+; Total bytes of code 108, prolog size 12, PerfScore 67.30, instruction count 27, allocated bytes for code 108 (MethodHash=7486ef4f) for method BepuPhysics.Solver:EnumerateConnectedBodyReferences[BepuPhysics.IslandSleeper+ConstraintBodyEnumerator](BepuPhysics.ConstraintHandle,byref):this (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -81,7 +79,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 29 (0x0001d) Actual length = 116 (0x000074)
+  Function Length   : 27 (0x0001b) Actual length = 108 (0x00006c)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-8 (-6.45%) : 1504.dasm - BepuPhysics.ConstraintSet:get_ConstraintCount():int:this (FullOpts)
@@ -46,13 +46,12 @@ G_M10267_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byre
 						;; size=24 bbWeight=1 PerfScore 8.50
 G_M10267_IG03:        ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
             mov     w4, #40
-            smull   x4, w2, w4
-            add     x4, x0, x4
+            smaddl  x4, w2, w4, x0
             mov     w5, wzr
             ldr     w6, [x4, #0x20]
             cmp     w6, #0
             ble     G_M10267_IG06
-						;; size=28 bbWeight=4 PerfScore 32.00
+						;; size=24 bbWeight=4 PerfScore 42.00
 G_M10267_IG04:        ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0010 {x4}, byref
             ; byrRegs +[x4]
             ldr     x4, [x4, #0x10]
@@ -60,15 +59,14 @@ G_M10267_IG04:        ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0010 {x4}, byre
 						;; size=4 bbWeight=2 PerfScore 6.00
 G_M10267_IG05:        ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
             mov     w7, #72
-            smull   x7, w5, w7
-            add     x7, x4, x7
+            smaddl  x7, w5, w7, x4
             ldr     w7, [x7, #0x40]
             add     w7, w7, #3
             add     w1, w1, w7,  ASR #2
             add     w5, w5, #1
             cmp     w5, w6
             blt     G_M10267_IG05
-						;; size=36 bbWeight=16 PerfScore 152.00
+						;; size=32 bbWeight=16 PerfScore 192.00
 G_M10267_IG06:        ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
             add     w2, w2, #1
             cmp     w2, w3
@@ -82,7 +80,7 @@ G_M10267_IG08:        ; bbWeight=1, epilog, nogc, extend
             ret     lr
 						;; size=8 bbWeight=1 PerfScore 2.00
 
-; Total bytes of code 124, prolog size 8, PerfScore 222.90, instruction count 31, allocated bytes for code 124 (MethodHash=5c8ed7e4) for method BepuPhysics.ConstraintSet:get_ConstraintCount():int:this (FullOpts)
+; Total bytes of code 116, prolog size 8, PerfScore 272.10, instruction count 29, allocated bytes for code 116 (MethodHash=5c8ed7e4) for method BepuPhysics.ConstraintSet:get_ConstraintCount():int:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -93,7 +91,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 31 (0x0001f) Actual length = 124 (0x00007c)
+  Function Length   : 29 (0x0001d) Actual length = 116 (0x000074)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-4 (-6.25%) : 910.dasm - BepuPhysics.Collidables.HomogeneousCompoundShapeBatch`3[BepuPhysics.Collidables.Mesh,BepuPhysics.Collidables.Triangle,BepuPhysics.Collidables.TriangleWide]:RayTest[DemoBenchmarks.ShapeRayBenchmarksDeep+HitHandler](int,byref,byref,byref,byref):this (FullOpts)
@@ -30,8 +30,7 @@ G_M37664_IG02:        ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=003C {x2 x3 x
             ldr     x0, [x0, #0x48]
             ; gcrRegs -[x0]
             mov     w6, #104
-            smull   x1, w1, w6
-            add     x0, x0, x1
+            smaddl  x0, w1, w6, x0
             mov     x1, x2
             ; byrRegs +[x1]
             mov     x2, x3
@@ -42,14 +41,14 @@ G_M37664_IG02:        ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=003C {x2 x3 x
             movk    x5, #0xD1FFAB1E LSL #16
             movk    x5, #0xD1FFAB1E LSL #32
             ldr     x5, [x5]
-						;; size=48 bbWeight=1 PerfScore 12.50
+						;; size=44 bbWeight=1 PerfScore 15.00
 G_M37664_IG03:        ; bbWeight=1, epilog, nogc, extend
             ldp     fp, lr, [sp], #0x10
             br      x5
             ; gcr arg pop 0
 						;; size=8 bbWeight=1 PerfScore 2.00
 
-; Total bytes of code 64, prolog size 8, PerfScore 22.40, instruction count 16, allocated bytes for code 64 (MethodHash=442f6cdf) for method BepuPhysics.Collidables.HomogeneousCompoundShapeBatch`3[BepuPhysics.Collidables.Mesh,BepuPhysics.Collidables.Triangle,BepuPhysics.Collidables.TriangleWide]:RayTest[DemoBenchmarks.ShapeRayBenchmarksDeep+HitHandler](int,byref,byref,byref,byref):this (FullOpts)
+; Total bytes of code 60, prolog size 8, PerfScore 24.50, instruction count 15, allocated bytes for code 60 (MethodHash=442f6cdf) for method BepuPhysics.Collidables.HomogeneousCompoundShapeBatch`3[BepuPhysics.Collidables.Mesh,BepuPhysics.Collidables.Triangle,BepuPhysics.Collidables.TriangleWide]:RayTest[DemoBenchmarks.ShapeRayBenchmarksDeep+HitHandler](int,byref,byref,byref,byref):this (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -60,7 +59,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 16 (0x00010) Actual length = 64 (0x000040)
+  Function Length   : 15 (0x0000f) Actual length = 60 (0x00003c)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+0 (0.00%) : 30312.dasm - Microsoft.Cci.MetadataWriter:PopulateTypeRefTableRows():this (FullOpts)
@@ -535,8 +535,8 @@ G_M35978_IG28:        ; bbWeight=2, gcrefRegs=6080002 {x1 x19 x25 x26}, byrefReg
             add     w0, w2, #1
             str     w0, [x26, #0x10]
             mov     w0, #12
-            umull   x2, w2, w0
-            add     x2, x2, #16
+            mov     x3, #16
+            smaddl  x2, w2, w0, x3
             add     x1, x1, x2
             ; gcrRegs -[x1]
             ; byrRegs +[x1]
@@ -547,7 +547,7 @@ G_M35978_IG28:        ; bbWeight=2, gcrefRegs=6080002 {x1 x19 x25 x26}, byrefReg
             ldr     w2, [fp, #0x58]	// [V63 tmp50]
             str     w2, [x1, #0x08]
             b       G_M35978_IG30
-						;; size=52 bbWeight=2 PerfScore 30.00
+						;; size=52 bbWeight=2 PerfScore 36.00
 G_M35978_IG29:        ; bbWeight=2, gcrefRegs=6080000 {x19 x25 x26}, byrefRegs=0000 {}, byref
             ; byrRegs -[x1]
             ldp     x1, x2, [fp, #0x50]	// [V40 tmp27], [V40 tmp27+0x08]
@@ -647,7 +647,7 @@ G_M35978_IG37:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             ret     lr
 						;; size=28 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 1380, prolog size 60, PerfScore 952.50, instruction count 345, allocated bytes for code 1380 (MethodHash=f8347375) for method Microsoft.Cci.MetadataWriter:PopulateTypeRefTableRows():this (FullOpts)
+; Total bytes of code 1380, prolog size 60, PerfScore 958.50, instruction count 345, allocated bytes for code 1380 (MethodHash=f8347375) for method Microsoft.Cci.MetadataWriter:PopulateTypeRefTableRows():this (FullOpts)
 ; ============================================================
 
 Unwind Info:
+8 (+0.19%) : 24232.dasm - Microsoft.CodeAnalysis.CSharp.DecisionDagBuilder:MakeDecisionDag(byref,System.Collections.Generic.Dictionary`2[Microsoft.CodeAnalysis.CSharp.DecisionDagBuilder+DagState,Microsoft.CodeAnalysis.CSharp.DecisionDagBuilder+DagState]):Microsoft.CodeAnalysis.CSharp.DecisionDagBuilder+DecisionDag:this (FullOpts)
@@ -273,22 +273,22 @@
 ;  V262 tmp233      [V262,T198] (  2,  3   )     ref  ->  x25         single-def "V06.[208..216)"
 ;  V263 tmp234      [V263,T106] (  2,  6   )     ref  ->  x27         "V06.[216..224)"
 ;  V264 tmp235      [V264,T107] (  2,  6   )     ref  ->  x28         "V06.[224..232)"
-;  V265 tmp236      [V265,T108] (  2,  6   )     ref  ->   x1         "V06.[232..240)"
+;  V265 tmp236      [V265,T108] (  2,  6   )     ref  ->  x26         "V06.[232..240)"
 ;  V266 tmp237      [V266,T109] (  2,  6   )     ref  ->   x2         "V06.[240..248)"
 ;  V267 tmp238      [V267,T111] (  2,  6   )     int  ->   x3         "V06.[248..252)"
-;  V268 tmp239      [V268,T110] (  2,  6   )     ref  ->  x26         "V06.[256..264)"
+;  V268 tmp239      [V268,T110] (  2,  6   )     ref  ->   x1         "V06.[256..264)"
 ;  V269 tmp240      [V269,T122] (  3,  6   )     ref  ->  x27         "V07.[000..008)"
 ;  V270 tmp241      [V270,T76] (  5, 10   )     ref  ->  x28         "V07.[008..016)"
-;  V271 tmp242      [V271,T123] (  3,  6   )     ref  ->  [fp+0x40]  spill-single-def "V07.[016..024)"
-;  V272 tmp243      [V272,T124] (  3,  6   )     ref  ->  [fp+0x38]  spill-single-def "V07.[024..032)"
+;  V271 tmp242      [V271,T123] (  3,  6   )     ref  ->  x26         "V07.[016..024)"
+;  V272 tmp243      [V272,T124] (  3,  6   )     ref  ->  [fp+0x40]  spill-single-def "V07.[024..032)"
 ;  V273 tmp244      [V273,T144] (  3,  6   )     int  ->  [fp+0xFC]  spill-single-def "V07.[032..036)"
-;  V274 tmp245      [V274,T125] (  3,  6   )     ref  ->  x26         "V07.[040..048)"
+;  V274 tmp245      [V274,T125] (  3,  6   )     ref  ->  [fp+0x38]  spill-single-def "V07.[040..048)"
 ;  V275 tmp246      [V275,T165] (  2,  4   )     ref  ->  x27         "V08.[000..008)"
 ;  V276 tmp247      [V276,T50] (  5,  9   )     ref  ->  x24         "V08.[008..016)"
 ;  V277 tmp248      [V277,T52] (  5, 10   )     ref  ->  [fp+0x30]  "V08.[016..024)"
-;  V278 tmp249      [V278,T166] (  2,  4   )     ref  ->   x2         "V08.[024..032)"
-;  V279 tmp250      [V279,T174] (  2,  4   )     int  ->   x3         "V08.[032..036)"
-;  V280 tmp251      [V280,T167] (  2,  4   )     ref  ->  x26         "V08.[040..048)"
+;  V278 tmp249      [V278,T166] (  2,  4   )     ref  ->  x28         "V08.[024..032)"
+;  V279 tmp250      [V279,T174] (  2,  4   )     int  ->   x2         "V08.[032..036)"
+;  V280 tmp251      [V280,T167] (  2,  4   )     ref  ->   x3         "V08.[040..048)"
 ;  V281 tmp252      [V281,T126] (  2,  4   )     ref  ->   x1         "V10.[008..016)"
 ;  V282 tmp253      [V282,T84] (  4,  8   )     ref  ->   x0         "V10.[016..024)"
 ;* V283 tmp254      [V283    ] (  0,  0   )     int  ->  zero-ref    "V55.[000..004)"
@@ -332,19 +332,19 @@
 ;* V321 tmp292      [V321    ] (  0,  0   )     ref  ->  zero-ref    "V59.[040..048)"
 ;  V322 tmp293      [V322,T127] (  3,  6   )     ref  ->  x27         "V57.[000..008)"
 ;  V323 tmp294      [V323,T128] (  3,  6   )     ref  ->  x24         "V57.[008..016)"
-;  V324 tmp295      [V324,T129] (  3,  6   )     ref  ->  x28         "V57.[016..024)"
-;  V325 tmp296      [V325,T130] (  3,  6   )     ref  ->   x2         "V57.[024..032)"
-;  V326 tmp297      [V326,T145] (  3,  6   )     int  ->   x3         "V57.[032..036)"
-;  V327 tmp298      [V327,T131] (  3,  6   )     ref  ->  x26         "V57.[040..048)"
+;  V324 tmp295      [V324,T129] (  3,  6   )     ref  ->  x26         "V57.[016..024)"
+;  V325 tmp296      [V325,T130] (  3,  6   )     ref  ->  x28         "V57.[024..032)"
+;  V326 tmp297      [V326,T145] (  3,  6   )     int  ->   x2         "V57.[032..036)"
+;  V327 tmp298      [V327,T131] (  3,  6   )     ref  ->   x3         "V57.[040..048)"
 ;  V328 tmp299      [V328,T168] (  2,  4   )     ref  ->  x27         "V67.[000..008)"
 ;* V329 tmp300      [V329,T237] (  0,  0   )     ref  ->  zero-ref    "V67.[008..016)"
 ;* V330 tmp301      [V330,T238] (  0,  0   )     ref  ->  zero-ref    "V67.[016..024)"
-;  V331 tmp302      [V331,T169] (  2,  4   )     ref  ->  [fp+0x18]  spill-single-def "V67.[024..032)"
+;  V331 tmp302      [V331,T169] (  2,  4   )     ref  ->  x28         "V67.[024..032)"
 ;  V332 tmp303      [V332,T175] (  2,  4   )     int  ->  [fp+0xF4]  spill-single-def "V67.[032..036)"
-;  V333 tmp304      [V333,T170] (  2,  4   )     ref  ->  x26         "V67.[040..048)"
+;  V333 tmp304      [V333,T170] (  2,  4   )     ref  ->  [fp+0x18]  spill-single-def "V67.[040..048)"
 ;  V334 tmp305      [V334,T89] (  3,  8   )     ref  ->  x27         "V85.[000..008)"
 ;  V335 tmp306      [V335,T90] (  3,  8   )     ref  ->  x28         "V85.[008..016)"
-;  V336 tmp307      [V336,T91] (  3,  8   )     ref  ->  registers   "V85.[016..024)"
+;  V336 tmp307      [V336,T91] (  3,  8   )     ref  ->  x26         "V85.[016..024)"
 ;  V337 tmp308      [V337,T92] (  3,  8   )     ref  ->  registers   "V85.[024..032)"
 ;  V338 tmp309      [V338,T94] (  3,  8   )     int  ->  registers   "V85.[032..036)"
 ;  V339 tmp310      [V339,T93] (  3,  8   )     ref  ->  registers   "V85.[040..048)"
@@ -355,7 +355,7 @@
 ;  V344 tmp315      [V344,T83] (  5, 10   )     int  ->  registers   "V87.[032..036)"
 ;  V345 tmp316      [V345,T81] (  5, 10   )     ref  ->  registers   "V87.[040..048)"
 ;  V346 tmp317      [V346,T33] (  7, 28   )   byref  ->   x0         "Spilling address for field-by-field copy"
-;  V347 tmp318      [V347,T34] (  7, 28   )   byref  ->  x26         "Spilling address for field-by-field copy"
+;  V347 tmp318      [V347,T34] (  7, 28   )   byref  ->   x1         "Spilling address for field-by-field copy"
 ;  V348 tmp319      [V348,T61] (  3, 12   )   byref  ->   x0         "Spilling address for field-by-field copy"
 ;  V349 tmp320      [V349,T62] (  3, 12   )     ref  ->  x14         "arr expr"
 ;  V350 tmp321      [V350,T70] (  3, 12   )     int  ->  x15         "index expr"
@@ -554,9 +554,11 @@ G_M31383_IG08:        ; bbWeight=1, gcrefRegs=500000 {x20 x22}, byrefRegs=80000
 G_M31383_IG09:        ; bbWeight=2, gcVars=000000000000003FFFF800000000000000000000000000000000000000000000 {V239 V240 V241 V242 V244 V245 V246 V247 V248 V250 V251 V252 V253 V254 V256 V257 V258 V259 V260}, gcrefRegs=1E719007 {x0 x1 x2 x12 x15 xip0 x20 x21 x22 x25 x26 x27 x28}, byrefRegs=0000 {}, gcvars, byref, isz
             ; gcrRegs -[x3-x5 x7-x11 x14] +[x28]
             ; GC ptr vars -{V307 V309}
-            stp     x2, x1, [fp, #0x38]	// [V272 tmp243], [V271 tmp242]
-            ; GC ptr vars +{V271 V272}
+            str     x2, [fp, #0x40]	// [V272 tmp243]
+            ; GC ptr vars +{V272}
             str     w3, [fp, #0xFC]	// [V273 tmp244]
+            str     x1, [fp, #0x38]	// [V274 tmp245]
+            ; GC ptr vars +{V274}
             mov     x0, x28
             ldr     x24, [x28]
             ldr     x24, [x24, #0x48]
@@ -575,14 +577,15 @@ G_M31383_IG09:        ; bbWeight=2, gcVars=000000000000003FFFF800000000000000000
             ; gcrRegs -[x0-x1]
             ; gcr arg pop 0
             cbnz    w0, G_M31383_IG18
-            ldp     x2, x28, [fp, #0x38]	// [V272 tmp243], [V271 tmp242]
-            ; gcrRegs +[x2]
-            ldr     w3, [fp, #0xFC]	// [V273 tmp244]
+            ldr     x28, [fp, #0x40]	// [V272 tmp243]
+            ldr     w2, [fp, #0xFC]	// [V273 tmp244]
+            ldr     x3, [fp, #0x38]	// [V274 tmp245]
+            ; gcrRegs +[x3]
             b       G_M31383_IG19
-						;; size=68 bbWeight=2 PerfScore 61.00
+						;; size=76 bbWeight=2 PerfScore 65.00
 G_M31383_IG10:        ; bbWeight=0, gcVars=0000000000000000000000000000000000000000000000000000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
-            ; gcrRegs -[x2 x20-x22 x24-x28]
-            ; GC ptr vars -{V239 V240 V241 V242 V244 V245 V246 V247 V248 V250 V251 V252 V253 V254 V256 V257 V258 V259 V260 V271 V272}
+            ; gcrRegs -[x3 x20-x22 x24-x28]
+            ; GC ptr vars -{V239 V240 V241 V242 V244 V245 V246 V247 V248 V250 V251 V252 V253 V254 V256 V257 V258 V259 V260 V272 V274}
             movz    x0, #0xD1FFAB1E      // code for Microsoft.CodeAnalysis.Shared.Collections.TemporaryArray`1[Microsoft.CodeAnalysis.CSharp.DecisionDagBuilder+StateForCase]:ThrowIndexOutOfRangeException()
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
@@ -682,20 +685,21 @@ G_M31383_IG17:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             bl      CORINFO_HELP_RNGCHKFAIL
             ; gcr arg pop 0
 						;; size=4 bbWeight=0 PerfScore 0.00
-G_M31383_IG18:        ; bbWeight=2, gcVars=000000000000003FFFF800000000000018000000000000000000000000000000 {V239 V240 V241 V242 V244 V245 V246 V247 V248 V250 V251 V252 V253 V254 V256 V257 V258 V259 V260 V271 V272}, gcrefRegs=1E700000 {x20 x21 x22 x25 x26 x27 x28}, byrefRegs=0000 {}, gcvars, byref
+G_M31383_IG18:        ; bbWeight=2, gcVars=000000000000003FFFF800000000000030000000000000000000000000000000 {V239 V240 V241 V242 V244 V245 V246 V247 V248 V250 V251 V252 V253 V254 V256 V257 V258 V259 V260 V272 V274}, gcrefRegs=1E700000 {x20 x21 x22 x25 x26 x27 x28}, byrefRegs=0000 {}, gcvars, byref
             ; gcrRegs +[x20-x22 x25-x28]
-            ; GC ptr vars +{V123 V179 V180 V182 V183 V184 V185 V186 V187 V188 V189 V190 V191 V192 V193 V239 V240 V241 V242 V244 V245 V246 V247 V248 V250 V251 V252 V253 V254 V256 V257 V258 V259 V260 V271 V272}
+            ; GC ptr vars +{V179 V180 V182 V183 V184 V185 V186 V187 V188 V189 V190 V191 V192 V193 V239 V240 V241 V242 V244 V245 V246 V247 V248 V250 V251 V252 V253 V254 V256 V257 V258 V259 V260 V272 V274}
             mov     x24, x28
             ; gcrRegs +[x24]
-            ldp     x2, x28, [fp, #0x38]	// [V272 tmp243], [V271 tmp242]
-            ; gcrRegs +[x2]
-            ldr     w3, [fp, #0xFC]	// [V273 tmp244]
-						;; size=12 bbWeight=2 PerfScore 11.00
-G_M31383_IG19:        ; bbWeight=2, gcVars=000000000000003FFFF800000000000000000000000000000000000000000000 {V239 V240 V241 V242 V244 V245 V246 V247 V248 V250 V251 V252 V253 V254 V256 V257 V258 V259 V260}, gcrefRegs=1F700004 {x2 x20 x21 x22 x24 x25 x26 x27 x28}, byrefRegs=0000 {}, gcvars, byref, isz
-            ; GC ptr vars -{V123 V179 V180 V182 V183 V184 V185 V186 V187 V188 V189 V190 V191 V192 V193 V271 V272}
+            ldr     x28, [fp, #0x40]	// [V272 tmp243]
+            ldr     w2, [fp, #0xFC]	// [V273 tmp244]
+            ldr     x3, [fp, #0x38]	// [V274 tmp245]
+            ; gcrRegs +[x3]
+						;; size=16 bbWeight=2 PerfScore 13.00
+G_M31383_IG19:        ; bbWeight=2, gcVars=000000000000003FFFF800000000000000000000000000000000000000000000 {V239 V240 V241 V242 V244 V245 V246 V247 V248 V250 V251 V252 V253 V254 V256 V257 V258 V259 V260}, gcrefRegs=1F700008 {x3 x20 x21 x22 x24 x25 x26 x27 x28}, byrefRegs=0000 {}, gcvars, byref, isz
+            ; GC ptr vars -{V179 V180 V182 V183 V184 V185 V186 V187 V188 V189 V190 V191 V192 V193 V272 V274}
             cbz     x24, G_M31383_IG21
 						;; size=4 bbWeight=2 PerfScore 2.00
-G_M31383_IG20:        ; bbWeight=1, gcrefRegs=1F700004 {x2 x20 x21 x22 x24 x25 x26 x27 x28}, byrefRegs=0000 {}, byref, isz
+G_M31383_IG20:        ; bbWeight=1, gcrefRegs=1F700008 {x3 x20 x21 x22 x24 x25 x26 x27 x28}, byrefRegs=0000 {}, byref, isz
             ldr     x0, [x24]
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
@@ -703,10 +707,10 @@ G_M31383_IG20:        ; bbWeight=1, gcrefRegs=1F700004 {x2 x20 x21 x22 x24 x25 x
             cmp     x0, x1
             beq     G_M31383_IG22
 						;; size=24 bbWeight=1 PerfScore 6.00
-G_M31383_IG21:        ; bbWeight=2, gcrefRegs=1F700004 {x2 x20 x21 x22 x24 x25 x26 x27 x28}, byrefRegs=0000 {}, byref, isz
-            str     x2, [fp, #0x18]	// [V331 tmp302]
-            ; GC ptr vars +{V331}
-            str     w3, [fp, #0xF4]	// [V332 tmp303]
+G_M31383_IG21:        ; bbWeight=2, gcrefRegs=1F700008 {x3 x20 x21 x22 x24 x25 x26 x27 x28}, byrefRegs=0000 {}, byref, isz
+            str     w2, [fp, #0xF4]	// [V332 tmp303]
+            str     x3, [fp, #0x18]	// [V333 tmp304]
+            ; GC ptr vars +{V333}
             ldr     x4, [x22, #0x08]
             ; gcrRegs +[x4]
             str     x4, [fp, #0xE8]	// [V68 tmp39]
@@ -718,7 +722,7 @@ G_M31383_IG21:        ; bbWeight=2, gcrefRegs=1F700004 {x2 x20 x21 x22 x24 x25 x
             ; gcrRegs +[x0]
             ldr     w1, [x0, #0x08]
             cmp     w1, w5
-            ldr     x2, [fp, #0x18]	// [V331 tmp302]
+            ldr     x3, [fp, #0x18]	// [V333 tmp304]
             bge     G_M31383_IG24
             ldr     w0, [x0, #0x08]
             ; gcrRegs -[x0]
@@ -729,8 +733,8 @@ G_M31383_IG21:        ; bbWeight=2, gcrefRegs=1F700004 {x2 x20 x21 x22 x24 x25 x
             b       G_M31383_IG23
 						;; size=72 bbWeight=2 PerfScore 54.00
 G_M31383_IG22:        ; bbWeight=0.50, gcrefRegs=2700000 {x20 x21 x22 x25}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[x2 x4 x24 x26-x28]
-            ; GC ptr vars -{V68 V331}
+            ; gcrRegs -[x3-x4 x24 x26-x28]
+            ; GC ptr vars -{V68 V333}
             ldr     x0, [fp, #0x48]	// [V260 tmp231]
             ; gcrRegs +[x0]
             ldp     x15, x12, [fp, #0x58]	// [V258 tmp229], [V257 tmp228]
@@ -740,9 +744,9 @@ G_M31383_IG22:        ; bbWeight=0.50, gcrefRegs=2700000 {x20 x21 x22 x25}, byre
             ldr     w24, [fp, #0xD1FFAB1E]	// [V261 tmp232]
             b       G_M31383_IG33
 						;; size=20 bbWeight=0.50 PerfScore 5.00
-G_M31383_IG23:        ; bbWeight=2, gcVars=000000000000003FFFF802000000000000000000000000000000000080000000 {V68 V239 V240 V241 V242 V244 V245 V246 V247 V248 V250 V251 V252 V253 V254 V256 V257 V258 V259 V260 V331}, gcrefRegs=1F700010 {x4 x20 x21 x22 x24 x25 x26 x27 x28}, byrefRegs=0000 {}, gcvars, byref
+G_M31383_IG23:        ; bbWeight=2, gcVars=000000000000003FFFF804000000000000000000000000000000000080000000 {V68 V239 V240 V241 V242 V244 V245 V246 V247 V248 V250 V251 V252 V253 V254 V256 V257 V258 V259 V260 V333}, gcrefRegs=1F700010 {x4 x20 x21 x22 x24 x25 x26 x27 x28}, byrefRegs=0000 {}, gcvars, byref
             ; gcrRegs -[x0 x12 x15-xip0] +[x4 x24 x26-x28]
-            ; GC ptr vars +{V31 V68 V331}
+            ; GC ptr vars +{V31 V68 V333}
             add     x0, x4, #8
             ; byrRegs +[x0]
             movz    x6, #0xD1FFAB1E      // code for System.Array:Resize[Microsoft.CodeAnalysis.CSharp.DecisionDagBuilder+StateForCase](byref,int)
@@ -753,13 +757,13 @@ G_M31383_IG23:        ; bbWeight=2, gcVars=000000000000003FFFF802000000000000000
             ; gcrRegs -[x4]
             ; byrRegs -[x0]
             ; gcr arg pop 0
-            ldr     x2, [fp, #0x18]	// [V331 tmp302]
-            ; gcrRegs +[x2]
+            ldr     x3, [fp, #0x18]	// [V333 tmp304]
+            ; gcrRegs +[x3]
             ldr     x4, [fp, #0xE8]	// [V68 tmp39]
             ; gcrRegs +[x4]
             ldr     w5, [fp, #0xD1FFAB1E]	// [V69 tmp40]
 						;; size=36 bbWeight=2 PerfScore 24.00
-G_M31383_IG24:        ; bbWeight=2, gcrefRegs=1F700014 {x2 x4 x20 x21 x22 x24 x25 x26 x27 x28}, byrefRegs=0000 {}, byref, isz
+G_M31383_IG24:        ; bbWeight=2, gcrefRegs=1F700018 {x3 x4 x20 x21 x22 x24 x25 x26 x27 x28}, byrefRegs=0000 {}, byref, isz
             ldr     x14, [x4, #0x08]
             ; gcrRegs +[x14]
             ldr     w15, [x4, #0x10]
@@ -767,8 +771,8 @@ G_M31383_IG24:        ; bbWeight=2, gcrefRegs=1F700014 {x2 x4 x20 x21 x22 x24 x2
             cmp     w15, w12
             bhs     G_M31383_IG17
             mov     w12, #48
-            umull   x15, w15, w12
-            add     x15, x15, #16
+            mov     xip0, #16
+            smaddl  x15, w15, w12, xip0
             add     x0, x14, x15
             ; byrRegs +[x0]
             mov     x14, x0
@@ -788,30 +792,30 @@ G_M31383_IG24:        ; bbWeight=2, gcrefRegs=1F700014 {x2 x4 x20 x21 x22 x24 x2
             ; byrRegs -[x14]
             add     x14, x0, #16
             ; byrRegs +[x14]
-            mov     x15, x28
+            mov     x15, x26
             ; gcrRegs +[x15]
             bl      CORINFO_HELP_CHECKED_ASSIGN_REF
             ; gcrRegs -[x15]
             ; byrRegs -[x14]
             add     x14, x0, #24
             ; byrRegs +[x14]
-            mov     x15, x2
+            mov     x15, x28
             ; gcrRegs +[x15]
-            ; GC ptr vars -{V31 V331}
             bl      CORINFO_HELP_CHECKED_ASSIGN_REF
-            ; gcrRegs -[x2 x15]
+            ; gcrRegs -[x15 x28]
             ; byrRegs -[x14]
-            ldr     w3, [fp, #0xF4]	// [V332 tmp303]
-            str     w3, [x0, #0x20]
+            ldr     w2, [fp, #0xF4]	// [V332 tmp303]
+            str     w2, [x0, #0x20]
             add     x14, x0, #40
             ; byrRegs +[x14]
-            mov     x15, x26
+            mov     x15, x3
             ; gcrRegs +[x15]
+            ; GC ptr vars -{V31 V333}
             bl      CORINFO_HELP_CHECKED_ASSIGN_REF
-            ; gcrRegs -[x15 x26]
+            ; gcrRegs -[x3 x15]
             ; byrRegs -[x0 x14]
             str     w5, [x4, #0x10]
-            str     x28, [fp, #0x30]	// [V277 tmp248]
+            str     x26, [fp, #0x30]	// [V277 tmp248]
             ; GC ptr vars +{V277}
             str     x24, [fp, #0xE0]	// [V75 tmp46]
             ; GC ptr vars +{V75}
@@ -822,9 +826,9 @@ G_M31383_IG24:        ; bbWeight=2, gcrefRegs=1F700014 {x2 x4 x20 x21 x22 x24 x2
...
+20 (+0.37%) : 20379.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:IsApplicable(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.OverloadResolution+EffectiveParameters,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,System.Collections.Immutable.ImmutableArray`1[int],ubyte,ubyte,ubyte,ubyte,byref):Microsoft.CodeAnalysis.CSharp.MemberAnalysisResult:this (FullOpts)
@@ -17,23 +17,23 @@
 ;  V06 arg5         [V06,T84] (  3,  3   )   ubyte  ->   x6         single-def
 ;  V07 arg6         [V07,T86] (  3,  2.50)   ubyte  ->  x26         single-def
 ;  V08 arg7         [V08,T101] (  2,  2   )   ubyte  ->  x28         single-def
-;  V09 arg8         [V09,T102] (  2,  2   )   ubyte  ->  [fp+0x1C8]  single-def
+;  V09 arg8         [V09,T102] (  2,  2   )   ubyte  ->  [fp+0x1D8]  single-def
 ;  V10 arg9         [V10,T96] (  2,  2   )   byref  ->  x27         single-def
-;  V11 loc0         [V11,T18] ( 15, 17   )     int  ->  [fp+0x16C] 
-;  V12 loc1         [V12,T09] ( 15, 30   )     ref  ->  [fp+0x80]  class-hnd <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Conversion]>
-;  V13 loc2         [V13,T17] ( 17, 18   )     ref  ->  [fp+0x78]  class-hnd <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[int]>
-;  V14 loc3         [V14,T115] (  3,  1.50)  struct (40) [fp+0x140]  do-not-enreg[S] must-init <Microsoft.CodeAnalysis.CSharp.MemberAnalysisResult>
+;  V11 loc0         [V11,T18] ( 15, 17   )     int  ->  [fp+0x17C] 
+;  V12 loc1         [V12,T09] ( 15, 30   )     ref  ->  [fp+0x90]  class-hnd <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Conversion]>
+;  V13 loc2         [V13,T17] ( 17, 18   )     ref  ->  [fp+0x88]  class-hnd <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[int]>
+;  V14 loc3         [V14,T115] (  3,  1.50)  struct (40) [fp+0x150]  do-not-enreg[S] must-init <Microsoft.CodeAnalysis.CSharp.MemberAnalysisResult>
 ;* V15 loc4         [V15    ] (  0,  0   )  struct ( 8) zero-ref    <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion]>
-;  V16 loc5         [V16,T04] ( 43, 65.56)     int  ->  [fp+0x13C] 
-;  V17 loc6         [V17,T24] ( 10, 12   )     ref  ->  [fp+0x70]  class-hnd <Microsoft.CodeAnalysis.CSharp.BoundExpression>
+;  V16 loc5         [V16,T04] ( 43, 65.56)     int  ->  [fp+0x14C] 
+;  V17 loc6         [V17,T24] ( 10, 12   )     ref  ->  [fp+0x80]  class-hnd <Microsoft.CodeAnalysis.CSharp.BoundExpression>
 ;* V18 loc7         [V18    ] (  0,  0   )  struct (16) zero-ref    multireg-arg multireg-ret ld-addr-op <Microsoft.CodeAnalysis.CSharp.Conversion>
-;  V19 loc8         [V19,T56] (  8,  8   )   ubyte  ->  [fp+0x138] 
-;  V20 loc9         [V20,T23] ( 12, 12   )   ubyte  ->  [fp+0x134] 
-;  V21 loc10        [V21,T66] (  6,  6   )   ubyte  ->  [fp+0x130] 
-;  V22 loc11        [V22,T67] (  6,  6   )   ubyte  ->  [fp+0x12C] 
+;  V19 loc8         [V19,T56] (  8,  8   )   ubyte  ->  [fp+0x148] 
+;  V20 loc9         [V20,T23] ( 12, 12   )   ubyte  ->  [fp+0x144] 
+;  V21 loc10        [V21,T66] (  6,  6   )   ubyte  ->  [fp+0x140] 
+;  V22 loc11        [V22,T67] (  6,  6   )   ubyte  ->  [fp+0x13C] 
 ;  V23 loc12        [V23,T61] (  8,  7   )     ref  ->  registers   class-hnd exact <Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator>
 ;* V24 loc13        [V24,T90] (  0,  0   )   ubyte  ->  zero-ref   
-;  V25 loc14        [V25,T22] ( 12, 12   )     ref  ->  [fp+0x68]  class-hnd <<unknown class>>
+;  V25 loc14        [V25,T22] ( 12, 12   )     ref  ->  [fp+0x78]  class-hnd <<unknown class>>
 ;* V26 loc15        [V26    ] (  0,  0   )  struct (24) zero-ref    ld-addr-op <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
 ;* V27 loc16        [V27    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion]>
 ;  V28 OutArgs      [V28    ] (  1,  1   )  struct (16) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -54,8 +54,8 @@
 ;* V43 tmp15        [V43    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <<unknown class>>
 ;  V44 tmp16        [V44,T14] (  6, 24   )     ref  ->   x7         class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]>
 ;* V45 tmp17        [V45    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.Conversion>
-;  V46 tmp18        [V46,T13] ( 14, 28   )     ref  ->  [fp+0x60]  class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[int]>
-;  V47 tmp19        [V47,T46] ( 10, 10   )     int  ->  [fp+0x128]  "Inline stloc first use temp"
+;  V46 tmp18        [V46,T13] ( 14, 28   )     ref  ->  [fp+0x70]  class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[int]>
+;  V47 tmp19        [V47,T46] ( 10, 10   )     int  ->  [fp+0x138]  "Inline stloc first use temp"
 ;* V48 tmp20        [V48    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;  V49 tmp21        [V49,T68] (  6,  6   )     int  ->  x10         "Inline return value spill temp"
 ;  V50 tmp22        [V50,T35] (  6, 12   )     int  ->   x9         "Inlining Arg"
@@ -71,63 +71,63 @@
 ;  V60 tmp32        [V60,T63] (  6,  6   )     ref  ->  x13        
 ;  V61 tmp33        [V61,T64] (  6,  6   )     ref  ->  x13         class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
 ;* V62 tmp34        [V62    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "dup spill" <<unknown class>>
-;  V63 tmp35        [V63,T52] (  8,  8   )     ref  ->   x0        
+;  V63 tmp35        [V63,T52] (  8,  8   )     ref  ->  registers  
 ;  V64 tmp36        [V64,T65] (  6,  6   )     ref  ->  x14         class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
 ;* V65 tmp37        [V65    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "dup spill" <<unknown class>>
-;  V66 tmp38        [V66,T53] (  8,  8   )     ref  ->   x0        
+;  V66 tmp38        [V66,T53] (  8,  8   )     ref  ->  registers  
 ;* V67 tmp39        [V67    ] (  0,  0   )  struct ( 8) zero-ref    "Inline return value spill temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion]>
 ;  V68 tmp40        [V68,T93] (  3,  3   )     ref  ->  x26         class-hnd exact single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Conversion[]>
 ;* V69 tmp41        [V69    ] (  0,  0   )  struct (16) zero-ref    "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Conversion>
 ;* V70 tmp42        [V70    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Conversion[]>
 ;* V71 tmp43        [V71    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion]>
 ;* V72 tmp44        [V72    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterDiagnosticInfo]>
-;  V73 tmp45        [V73,T103] (  2,  2   )  struct (40) [fp+0x100]  do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.MemberAnalysisResult>
+;  V73 tmp45        [V73,T103] (  2,  2   )  struct (40) [fp+0x110]  do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.MemberAnalysisResult>
 ;* V74 tmp46        [V74    ] (  0,  0   )  struct ( 8) zero-ref    "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterDiagnosticInfo]>
-;  V75 tmp47        [V75,T10] ( 15, 28.04)     ref  ->  [fp+0x58]  class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[int]>
-;  V76 tmp48        [V76,T47] ( 10, 10   )     int  ->  [fp+0xFC]  "Inline stloc first use temp"
+;  V75 tmp47        [V75,T10] ( 15, 28.04)     ref  ->  [fp+0x68]  class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[int]>
+;  V76 tmp48        [V76,T47] ( 10, 10   )     int  ->  [fp+0x10C]  "Inline stloc first use temp"
 ;* V77 tmp49        [V77    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;  V78 tmp50        [V78,T71] (  6,  6   )     int  ->  registers   "Inline return value spill temp"
 ;  V79 tmp51        [V79,T36] (  6, 12   )     int  ->  registers   "Inlining Arg"
 ;* V80 tmp52        [V80    ] (  0,  0   )  struct (16) zero-ref    "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Conversion>
-;  V81 tmp53        [V81,T11] ( 15, 28.04)     ref  ->  [fp+0x50]  class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[Microsoft.CodeAnalysis.CSharp.Conversion]>
-;  V82 tmp54        [V82,T48] ( 10, 10   )     int  ->  [fp+0xF8]  "Inline stloc first use temp"
+;  V81 tmp53        [V81,T11] ( 15, 28.04)     ref  ->  [fp+0x60]  class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[Microsoft.CodeAnalysis.CSharp.Conversion]>
+;  V82 tmp54        [V82,T48] ( 10, 10   )     int  ->  [fp+0x108]  "Inline stloc first use temp"
 ;* V83 tmp55        [V83    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;  V84 tmp56        [V84,T72] (  6,  6   )     int  ->  registers   "Inline return value spill temp"
 ;  V85 tmp57        [V85,T37] (  6, 12   )     int  ->  registers   "Inlining Arg"
-;  V86 tmp58        [V86,T25] (  6, 12   )     ref  ->  [fp+0x48]  class-hnd exact "dup spill" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Conversion]>
+;  V86 tmp58        [V86,T25] (  6, 12   )     ref  ->  [fp+0x58]  class-hnd exact "dup spill" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Conversion]>
 ;* V87 tmp59        [V87    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[Microsoft.CodeAnalysis.CSharp.Conversion]>
 ;* V88 tmp60        [V88    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.Conversion>
-;  V89 tmp61        [V89,T06] (  8, 50   )     int  ->  [fp+0xF4]  "Inline stloc first use temp"
+;  V89 tmp61        [V89,T06] (  8, 50   )     int  ->  [fp+0x104]  "Inline stloc first use temp"
 ;* V90 tmp62        [V90    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[Microsoft.CodeAnalysis.CSharp.Conversion]>
 ;  V91 tmp63        [V91,T38] (  6, 12   )     int  ->   x1         "Inlining Arg"
 ;* V92 tmp64        [V92    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[Microsoft.CodeAnalysis.CSharp.Conversion]>
-;  V93 tmp65        [V93,T00] ( 16,208.32)     ref  ->  [fp+0x40]  class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[Microsoft.CodeAnalysis.CSharp.Conversion]>
-;  V94 tmp66        [V94,T05] ( 10, 64   )     int  ->  [fp+0xF0]  "Inline stloc first use temp"
+;  V93 tmp65        [V93,T00] ( 16,208.32)     ref  ->  [fp+0x50]  class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[Microsoft.CodeAnalysis.CSharp.Conversion]>
+;  V94 tmp66        [V94,T05] ( 10, 64   )     int  ->  [fp+0x100]  "Inline stloc first use temp"
 ;* V95 tmp67        [V95    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;  V96 tmp68        [V96,T16] (  6, 24   )     int  ->   x1         "Inline return value spill temp"
 ;  V97 tmp69        [V97,T07] (  6, 48   )     int  ->   x1         "Inlining Arg"
 ;* V98 tmp70        [V98    ] (  0,  0   )  struct (16) zero-ref    "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Conversion>
-;  V99 tmp71        [V99,T12] ( 15, 28.04)     ref  ->  [fp+0x38]  class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[Microsoft.CodeAnalysis.CSharp.Conversion]>
-;  V100 tmp72       [V100,T49] ( 10, 10   )     int  ->  [fp+0xEC]  "Inline stloc first use temp"
+;  V99 tmp71        [V99,T12] ( 15, 28.04)     ref  ->  [fp+0x48]  class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[Microsoft.CodeAnalysis.CSharp.Conversion]>
+;  V100 tmp72       [V100,T49] ( 10, 10   )     int  ->  [fp+0xFC]  "Inline stloc first use temp"
 ;* V101 tmp73       [V101    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;  V102 tmp74       [V102,T73] (  6,  6   )     int  ->   x1         "Inline return value spill temp"
 ;  V103 tmp75       [V103,T39] (  6, 12   )     int  ->   x1         "Inlining Arg"
 ;* V104 tmp76       [V104    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterDiagnosticInfo]>
-;  V105 tmp77       [V105,T104] (  2,  2   )  struct (40) [fp+0xC0]  do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.MemberAnalysisResult>
+;  V105 tmp77       [V105,T104] (  2,  2   )  struct (40) [fp+0xD0]  do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.MemberAnalysisResult>
 ;* V106 tmp78       [V106    ] (  0,  0   )  struct ( 8) zero-ref    "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterDiagnosticInfo]>
 ;* V107 tmp79       [V107    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.Collections.Immutable.ImmutableArray`1[int]>
 ;* V108 tmp80       [V108    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterDiagnosticInfo]>
 ;* V109 tmp81       [V109    ] (  0,  0   )  struct ( 8) zero-ref    "impAppendStmt" <System.Collections.Immutable.ImmutableArray`1[int]>
-;  V110 tmp82       [V110,T105] (  2,  2   )  struct (40) [fp+0x98]  do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.MemberAnalysisResult>
+;  V110 tmp82       [V110,T105] (  2,  2   )  struct (40) [fp+0xA8]  do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.MemberAnalysisResult>
 ;* V111 tmp83       [V111    ] (  0,  0   )  struct ( 8) zero-ref    "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterDiagnosticInfo]>
 ;  V112 tmp84       [V112,T50] (  9,  7.04)     ref  ->  x21         single-def "field V03.ParameterTypes (fldOffset=0x0)" P-INDEP
 ;  V113 tmp85       [V113,T62] (  7,  5.04)     ref  ->  x22         single-def "field V03.ParameterRefKinds (fldOffset=0x8)" P-INDEP
 ;  V114 tmp86       [V114,T85] (  4,  2.50)     ref  ->  x25         single-def "field V05.array (fldOffset=0x0)" P-INDEP
 ;  V115 tmp87       [V115,T110] (  3,  1.50)     ref  ->  x19         single-def "field V15.array (fldOffset=0x0)" P-INDEP
-;  V116 tmp88       [V116,T21] ( 13, 12.50)     ref  ->  [fp+0x30]  "field V18._uncommonData (fldOffset=0x0)" P-INDEP
-;  V117 tmp89       [V117,T19] ( 17, 16.50)   ubyte  ->  [fp+0x94]  "field V18._kind (fldOffset=0x8)" P-INDEP
-;  V118 tmp90       [V118,T54] (  8,  8   )     ref  ->  registers   "field V26.DefaultType (fldOffset=0x0)" P-INDEP
-;  V119 tmp91       [V119,T55] (  8,  8   )     ref  ->   x0         "field V26._extensions (fldOffset=0x8)" P-INDEP
+;  V116 tmp88       [V116,T21] ( 13, 12.50)     ref  ->  [fp+0x40]  "field V18._uncommonData (fldOffset=0x0)" P-INDEP
+;  V117 tmp89       [V117,T19] ( 17, 16.50)   ubyte  ->  [fp+0xA4]  "field V18._kind (fldOffset=0x8)" P-INDEP
+;  V118 tmp90       [V118,T54] (  8,  8   )     ref  ->  [fp+0x38]  "field V26.DefaultType (fldOffset=0x0)" P-INDEP
+;  V119 tmp91       [V119,T55] (  8,  8   )     ref  ->  registers   "field V26._extensions (fldOffset=0x8)" P-INDEP
 ;* V120 tmp92       [V120    ] (  0,  0   )   ubyte  ->  zero-ref    "field V26.NullableAnnotation (fldOffset=0x10)" P-INDEP
 ;* V121 tmp93       [V121    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V27.array (fldOffset=0x0)" P-INDEP
 ;* V122 tmp94       [V122    ] (  0,  0   )     ref  ->  zero-ref    "field V31._uncommonData (fldOffset=0x0)" P-DEP
@@ -148,12 +148,12 @@
 ;* V137 tmp109      [V137    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V71.array (fldOffset=0x0)" P-INDEP
 ;* V138 tmp110      [V138    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V72.array (fldOffset=0x0)" P-INDEP
 ;* V139 tmp111      [V139,T122] (  0,  0   )     ref  ->  zero-ref    single-def "field V74.array (fldOffset=0x0)" P-INDEP
-;  V140 tmp112      [V140,T88] (  4,  4   )     ref  ->  [fp+0x28]  "field V80._uncommonData (fldOffset=0x0)" P-INDEP
-;  V141 tmp113      [V141,T91] (  4,  4   )   ubyte  ->  [fp+0x90]  "field V80._kind (fldOffset=0x8)" P-INDEP
+;  V140 tmp112      [V140,T88] (  4,  4   )     ref  ->  [fp+0x30]  "field V80._uncommonData (fldOffset=0x0)" P-INDEP
+;  V141 tmp113      [V141,T91] (  4,  4   )   ubyte  ->  [fp+0xA0]  "field V80._kind (fldOffset=0x8)" P-INDEP
 ;* V142 tmp114      [V142,T100] (  0,  0   )     ref  ->  zero-ref    "field V88._uncommonData (fldOffset=0x0)" P-INDEP
 ;* V143 tmp115      [V143,T109] (  0,  0   )   ubyte  ->  zero-ref    "field V88._kind (fldOffset=0x8)" P-INDEP
-;  V144 tmp116      [V144,T89] (  4,  4   )     ref  ->  [fp+0x20]  "field V98._uncommonData (fldOffset=0x0)" P-INDEP
-;  V145 tmp117      [V145,T92] (  4,  4   )   ubyte  ->  [fp+0x8C]  "field V98._kind (fldOffset=0x8)" P-INDEP
+;  V144 tmp116      [V144,T89] (  4,  4   )     ref  ->  [fp+0x28]  "field V98._uncommonData (fldOffset=0x0)" P-INDEP
+;  V145 tmp117      [V145,T92] (  4,  4   )   ubyte  ->  [fp+0x9C]  "field V98._kind (fldOffset=0x8)" P-INDEP
 ;* V146 tmp118      [V146    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V104.array (fldOffset=0x0)" P-INDEP
 ;* V147 tmp119      [V147,T123] (  0,  0   )     ref  ->  zero-ref    single-def "field V106.array (fldOffset=0x0)" P-INDEP
 ;* V148 tmp120      [V148    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V107.array (fldOffset=0x0)" P-INDEP
@@ -188,20 +188,20 @@
 ;  V177 tmp149      [V177,T26] (  6, 12   )     ref  ->   x9         "arr expr"
 ;  V178 tmp150      [V178,T40] (  6, 12   )     int  ->  x10         "index expr"
 ;  V179 tmp151      [V179,T27] (  6, 12   )     ref  ->  x15         "arr expr"
-;  V180 tmp152      [V180,T28] (  6, 12   )   byref  ->   x0         "BlockOp address local"
+;  V180 tmp152      [V180,T28] (  6, 12   )   byref  ->  registers   "BlockOp address local"
 ;  V181 tmp153      [V181,T29] (  6, 12   )   byref  ->  registers   "BlockOp address local"
 ;  V182 tmp154      [V182,T94] (  3,  3   )   byref  ->   x0         single-def "BlockOp address local"
 ;  V183 tmp155      [V183,T30] (  6, 12   )     ref  ->   x7         "arr expr"
 ;  V184 tmp156      [V184,T41] (  6, 12   )     int  ->   x8         "index expr"
 ;  V185 tmp157      [V185,T31] (  6, 12   )     ref  ->  registers   "arr expr"
 ;  V186 tmp158      [V186,T42] (  6, 12   )     int  ->  registers   "index expr"
-;  V187 tmp159      [V187,T32] (  6, 12   )   byref  ->  [fp+0x18]  "BlockOp address local"
+;  V187 tmp159      [V187,T32] (  6, 12   )   byref  ->  [fp+0x20]  "BlockOp address local"
 ;  V188 tmp160      [V188,T01] (  6, 96   )     ref  ->   x8         "arr expr"
 ;  V189 tmp161      [V189,T03] (  6, 96   )     int  ->   x9         "index expr"
 ;  V190 tmp162      [V190,T02] (  6, 96   )   byref  ->  x10         "BlockOp address local"
 ;  V191 tmp163      [V191,T33] (  6, 12   )     ref  ->   x1         "arr expr"
 ;  V192 tmp164      [V192,T43] (  6, 12   )     int  ->  registers   "index expr"
-;  V193 tmp165      [V193,T34] (  6, 12   )   byref  ->  [fp+0x10]  "BlockOp address local"
+;  V193 tmp165      [V193,T34] (  6, 12   )   byref  ->  [fp+0x18]  "BlockOp address local"
 ;  V194 cse0        [V194,T83] (  3,  5.94)     int  ->   x0         "CSE - moderate"
 ;  V195 cse1        [V195,T95] (  3,  3   )     int  ->   x0         "CSE - conservative"
 ;  V196 cse2        [V196,T132] (  3,  0.06)     int  ->   x0         "CSE - conservative"
@@ -220,9 +220,9 @@
 ;  V209 cse15       [V209,T129] (  3,  0.06)     ref  ->   x0         "CSE - conservative"
 ;  V210 cse16       [V210,T130] (  3,  0.06)     ref  ->   x0         "CSE - conservative"
 ;  V211 cse17       [V211,T131] (  3,  0.06)     ref  ->   x0         "CSE - conservative"
-;  V212 cse18       [V212,T76] (  4,  6   )     int  ->  [fp+0x88]  spill-single-def "CSE - moderate"
+;  V212 cse18       [V212,T76] (  4,  6   )     int  ->  [fp+0x98]  spill-single-def "CSE - moderate"
 ;
-; Lcl frame size = 368
+; Lcl frame size = 384
 
 G_M55718_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
             sub     sp, sp, #0xD1FFAB1E
@@ -234,7 +234,7 @@ G_M55718_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             stp     x27, x28, [sp, #0xD1FFAB1E]
             add     fp, sp, #16
             movi    v16.16b, #0
-            add     x9, fp, #120
+            add     x9, fp, #136
             mov     x10, #144
             stp     q16, q16, [x9, #0x20]
             stp     q16, q16, [x9, #0x40]!
@@ -263,7 +263,7 @@ G_M55718_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
 G_M55718_IG02:        ; bbWeight=1, gcrefRegs=3E80000 {x19 x21 x22 x23 x24 x25}, byrefRegs=8100000 {x20 x27}, byref, isz
             ldr     w0, [x21, #0x08]
             uxtb    w2, w6
-            str     w2, [fp, #0x88]	// [V212 cse18]
+            str     w2, [fp, #0x98]	// [V212 cse18]
             cmp     w2, #0
             cset    x3, ne
             add     w3, w0, w3
@@ -274,7 +274,7 @@ G_M55718_IG02:        ; bbWeight=1, gcrefRegs=3E80000 {x19 x21 x22 x23 x24 x25},
             ; gcrRegs -[x0]
             cmp     w0, w3
             csel    w3, w3, w0, ge
-            str     xzr, [fp, #0x80]	// [V12 loc1]
+            str     xzr, [fp, #0x90]	// [V12 loc1]
             ; GC ptr vars +{V12}
             mov     x5, xzr
             ; gcrRegs +[x5]
@@ -351,7 +351,7 @@ G_M55718_IG06:        ; bbWeight=1.98, gcrefRegs=3E80020 {x5 x19 x21 x22 x23 x24
 						;; size=44 bbWeight=1.98 PerfScore 22.77
 G_M55718_IG07:        ; bbWeight=1.98, gcrefRegs=3E80020 {x5 x19 x21 x22 x23 x24 x25}, byrefRegs=8100000 {x20 x27}, byref, isz
             ; gcrRegs -[x0]
-            str     x5, [fp, #0x78]	// [V13 loc2]
+            str     x5, [fp, #0x88]	// [V13 loc2]
             ; GC ptr vars +{V13}
             ldr     x7, [x5, #0x08]
             ; gcrRegs +[x7]
@@ -377,7 +377,7 @@ G_M55718_IG08:        ; bbWeight=1.98, gcVars=0000000000000000000000000000000000
             str     w8, [fp, #0xD1FFAB1E]	// [V47 tmp19]
 						;; size=8 bbWeight=1.98 PerfScore 2.97
 G_M55718_IG09:        ; bbWeight=1.98, gcrefRegs=3E80080 {x7 x19 x21 x22 x23 x24 x25}, byrefRegs=8100000 {x20 x27}, byref
-            str     x7, [fp, #0x60]	// [V46 tmp18]
+            str     x7, [fp, #0x70]	// [V46 tmp18]
             ; GC ptr vars +{V46}
             add     x0, x7, #8
             ; byrRegs +[x0]
@@ -390,7 +390,7 @@ G_M55718_IG09:        ; bbWeight=1.98, gcrefRegs=3E80080 {x7 x19 x21 x22 x23 x24
             ; gcrRegs -[x7]
             ; byrRegs -[x0]
             ; gcr arg pop 0
-            ldr     x7, [fp, #0x60]	// [V46 tmp18]
+            ldr     x7, [fp, #0x70]	// [V46 tmp18]
             ; gcrRegs +[x7]
             ldr     w8, [fp, #0xD1FFAB1E]	// [V47 tmp19]
 						;; size=40 bbWeight=1.98 PerfScore 22.77
@@ -417,7 +417,7 @@ G_M55718_IG10:        ; bbWeight=1.98, gcVars=0000000000000000000000000000000000
             ; gcrRegs +[x10]
             mov     w11, w13
             ; gcrRegs -[x11]
-            ldr     x5, [fp, #0x78]	// [V13 loc2]
+            ldr     x5, [fp, #0x88]	// [V13 loc2]
             ; gcrRegs +[x5]
             b       G_M55718_IG39
 						;; size=68 bbWeight=1.98 PerfScore 42.57
@@ -486,11 +486,11 @@ G_M55718_IG17:        ; bbWeight=0.99, gcrefRegs=3E80A20 {x5 x9 x11 x19 x21 x22
             beq     G_M55718_IG21
 						;; size=24 bbWeight=0.99 PerfScore 5.94
 G_M55718_IG18:        ; bbWeight=1.98, gcrefRegs=3E80220 {x5 x9 x19 x21 x22 x23 x24 x25}, byrefRegs=8100000 {x20 x27}, byref, isz
...
smoke_tests.nativeaot.windows.arm64.checked.mch
-4 (-4.55%) : 1489.dasm - System.Runtime.CompilerServices.RuntimeHelpers:GetRawObjectDataSize(System.Object):ulong (FullOpts)
@@ -37,9 +37,8 @@ G_M15291_IG03:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
             ldr     w22, [x19, #0x08]
             mov     x0, x20
             bl      Internal.Runtime.MethodTable:get_ComponentSize():ushort:this
-            umull   x0, w22, w0
-            add     x21, x21, x0
-						;; size=20 bbWeight=0.50 PerfScore 3.50
+            smaddl  x21, w22, w0, x21
+						;; size=16 bbWeight=0.50 PerfScore 4.75
 G_M15291_IG04:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
             mov     x0, x21
 						;; size=4 bbWeight=1 PerfScore 0.50
@@ -50,7 +49,7 @@ G_M15291_IG05:        ; bbWeight=1, epilog, nogc, extend
             ret     lr
 						;; size=16 bbWeight=1 PerfScore 4.00
 
-; Total bytes of code 88, prolog size 16, PerfScore 30.30, instruction count 22, allocated bytes for code 88 (MethodHash=4cd5c444) for method System.Runtime.CompilerServices.RuntimeHelpers:GetRawObjectDataSize(System.Object):ulong (FullOpts)
+; Total bytes of code 84, prolog size 16, PerfScore 31.15, instruction count 21, allocated bytes for code 84 (MethodHash=4cd5c444) for method System.Runtime.CompilerServices.RuntimeHelpers:GetRawObjectDataSize(System.Object):ulong (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -61,7 +60,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 22 (0x00016) Actual length = 88 (0x000058)
+  Function Length   : 21 (0x00015) Actual length = 84 (0x000054)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-4 (-4.55%) : 4661.dasm - System.Runtime.CompilerServices.RuntimeHelpers:GetRawObjectDataSize(System.Object):ulong (FullOpts)
@@ -38,9 +38,8 @@ G_M15291_IG03:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
             ldr     w22, [x19, #0x08]
             mov     x0, x20
             bl      Internal.Runtime.MethodTable:get_ComponentSize():ushort:this
-            umull   x0, w22, w0
-            add     x21, x21, x0
-						;; size=20 bbWeight=0.50 PerfScore 3.50
+            smaddl  x21, w22, w0, x21
+						;; size=16 bbWeight=0.50 PerfScore 4.75
 G_M15291_IG04:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
             mov     x0, x21
 						;; size=4 bbWeight=1 PerfScore 0.50
@@ -51,7 +50,7 @@ G_M15291_IG05:        ; bbWeight=1, epilog, nogc, extend
             ret     lr
 						;; size=16 bbWeight=1 PerfScore 4.00
 
-; Total bytes of code 88, prolog size 16, PerfScore 30.30, instruction count 22, allocated bytes for code 88 (MethodHash=4cd5c444) for method System.Runtime.CompilerServices.RuntimeHelpers:GetRawObjectDataSize(System.Object):ulong (FullOpts)
+; Total bytes of code 84, prolog size 16, PerfScore 31.15, instruction count 21, allocated bytes for code 84 (MethodHash=4cd5c444) for method System.Runtime.CompilerServices.RuntimeHelpers:GetRawObjectDataSize(System.Object):ulong (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -62,7 +61,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 22 (0x00016) Actual length = 88 (0x000058)
+  Function Length   : 21 (0x00015) Actual length = 84 (0x000054)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-4 (-4.00%) : 13432.dasm - System.TimeSpan:TimeToTicks(int,int,int):long (FullOpts)
@@ -21,10 +21,9 @@ G_M40472_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
 						;; size=8 bbWeight=1 PerfScore 1.50
 G_M40472_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
             mov     w3, #0xD1FFAB1E
-            smull   x0, w0, w3
-            mov     w3, #60
-            smull   x1, w1, w3
-            add     x0, x0, x1
+            mov     w4, #60
+            smull   x1, w1, w4
+            smaddl  x0, w0, w3, x1
             add     x0, x0, w2, SXTW
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
@@ -39,7 +38,7 @@ G_M40472_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             movz    x1, #0xD1FFAB1E
             movk    x1, #152 LSL #16
             mul     x0, x0, x1
-						;; size=76 bbWeight=1 PerfScore 15.00
+						;; size=72 bbWeight=1 PerfScore 17.50
 G_M40472_IG03:        ; bbWeight=1, epilog, nogc, extend
             ldp     fp, lr, [sp], #0x10
             ret     lr
@@ -49,7 +48,7 @@ G_M40472_IG04:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
             brk_windows #0
 						;; size=8 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 100, prolog size 8, PerfScore 28.50, instruction count 25, allocated bytes for code 100 (MethodHash=3ad761e7) for method System.TimeSpan:TimeToTicks(int,int,int):long (FullOpts)
+; Total bytes of code 96, prolog size 8, PerfScore 30.60, instruction count 24, allocated bytes for code 96 (MethodHash=3ad761e7) for method System.TimeSpan:TimeToTicks(int,int,int):long (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -60,7 +59,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 25 (0x00019) Actual length = 100 (0x000064)
+  Function Length   : 24 (0x00018) Actual length = 96 (0x000060)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+0 (0.00%) : 7552.dasm - System.Globalization.HebrewCalendar:IsLeapYear(int,int):ubyte:this (FullOpts)
@@ -32,8 +32,8 @@ G_M14180_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             bl      System.Globalization.HebrewCalendar:CheckHebrewYearValue(int,int,System.String)
             ; gcrRegs -[x2]
             mov     w0, #7
-            smull   x0, w19, w0
-            add     x0, x0, #1
+            mov     x1, #1
+            smaddl  x0, w19, w0, x1
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
@@ -44,14 +44,14 @@ G_M14180_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             msub    x0, x1, x2, x0
             cmp     x0, #7
             cset    x0, lt
-						;; size=72 bbWeight=1 PerfScore 20.50
+						;; size=72 bbWeight=1 PerfScore 23.50
 G_M14180_IG03:        ; bbWeight=1, epilog, nogc, extend
             ldr     x19, [sp, #0x18]
             ldp     fp, lr, [sp], #0x20
             ret     lr
 						;; size=12 bbWeight=1 PerfScore 4.00
 
-; Total bytes of code 100, prolog size 12, PerfScore 37.50, instruction count 25, allocated bytes for code 100 (MethodHash=f7dec89b) for method System.Globalization.HebrewCalendar:IsLeapYear(int,int):ubyte:this (FullOpts)
+; Total bytes of code 100, prolog size 12, PerfScore 40.50, instruction count 25, allocated bytes for code 100 (MethodHash=f7dec89b) for method System.Globalization.HebrewCalendar:IsLeapYear(int,int):ubyte:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
+0 (0.00%) : 8696.dasm - System.Reflection.Runtime.General.Helpers:GetRawConstant(System.Reflection.CustomAttributeData):System.Object (FullOpts)
@@ -173,15 +173,15 @@ G_M13577_IG10:        ; bbWeight=2, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
             cmp     w1, w9
             bhs     G_M13577_IG11
             mov     w9, #24
-            umull   x9, w1, w9
-            add     x9, x9, #16
+            mov     x10, #16
+            smaddl  x9, w1, w9, x10
             add     x15, x15, x9
             ; gcrRegs -[x15]
             ; byrRegs +[x15]
             ldp     x9, x22, [x15]
             ; gcrRegs +[x9 x22]
             b       G_M13577_IG13
-						;; size=56 bbWeight=2 PerfScore 42.00
+						;; size=56 bbWeight=2 PerfScore 48.00
 G_M13577_IG11:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x0 x9 x22]
             ; byrRegs -[x15]
@@ -353,7 +353,7 @@ G_M13577_IG28:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             ret     lr
 						;; size=16 bbWeight=1 PerfScore 10.00
 
-; Total bytes of code 708, prolog size 36, PerfScore 560.05, instruction count 177, allocated bytes for code 708 (MethodHash=629dcaf6) for method System.Reflection.Runtime.General.Helpers:GetRawConstant(System.Reflection.CustomAttributeData):System.Object (FullOpts)
+; Total bytes of code 708, prolog size 36, PerfScore 566.05, instruction count 177, allocated bytes for code 708 (MethodHash=629dcaf6) for method System.Reflection.Runtime.General.Helpers:GetRawConstant(System.Reflection.CustomAttributeData):System.Object (FullOpts)
 ; ============================================================
 
 Unwind Info:
+0 (0.00%) : 20776.dasm - System.Linq.Expressions.Interpreter.InterpretedFrame:YieldToPendingContinuation():int:this (FullOpts)
@@ -59,8 +59,8 @@ G_M52961_IG02:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
             cmp     w3, w4
             bhs     G_M52961_IG08
             mov     w5, #12
-            umull   x3, w3, w5
-            add     x3, x3, #16
+            mov     x6, #16
+            smaddl  x3, w3, w5, x6
             add     x2, x2, x3
             ; gcrRegs -[x2]
             ; byrRegs +[x2]
@@ -70,7 +70,7 @@ G_M52961_IG02:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
             ldr     w5, [x19, #0x38]
             cmp     w2, w5
             bge     G_M52961_IG05
-						;; size=64 bbWeight=1 PerfScore 28.00
+						;; size=64 bbWeight=1 PerfScore 31.00
 G_M52961_IG03:        ; bbWeight=0.50, gcrefRegs=80003 {x0 x1 x19}, byrefRegs=0000 {}, byref, isz
             ldr     x3, [x19, #0x18]
             ; gcrRegs +[x3]
@@ -86,8 +86,8 @@ G_M52961_IG03:        ; bbWeight=0.50, gcrefRegs=80003 {x0 x1 x19}, byrefRegs=00
             bhs     G_M52961_IG08
             mov     w3, #12
             ; byrRegs -[x3]
-            umull   x2, w2, w3
-            add     x2, x2, #16
+            mov     x4, #16
+            smaddl  x2, w2, w3, x4
             add     x0, x0, x2
             ; gcrRegs -[x0]
             ; byrRegs +[x0]
@@ -99,7 +99,7 @@ G_M52961_IG03:        ; bbWeight=0.50, gcrefRegs=80003 {x0 x1 x19}, byrefRegs=00
             str     w0, [x19, #0x40]
             ldr     w0, [x19, #0x44]
             sub     w0, w2, w0
-						;; size=76 bbWeight=0.50 PerfScore 13.75
+						;; size=76 bbWeight=0.50 PerfScore 15.25
 G_M52961_IG04:        ; bbWeight=0.50, epilog, nogc, extend
             ldr     x21, [sp, #0x28]
             ldp     x19, x20, [sp, #0x18]
@@ -152,7 +152,7 @@ G_M52961_IG08:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
             brk_windows #0
 						;; size=8 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 284, prolog size 16, PerfScore 94.40, instruction count 71, allocated bytes for code 284 (MethodHash=197b311e) for method System.Linq.Expressions.Interpreter.InterpretedFrame:YieldToPendingContinuation():int:this (FullOpts)
+; Total bytes of code 284, prolog size 16, PerfScore 98.90, instruction count 71, allocated bytes for code 284 (MethodHash=197b311e) for method System.Linq.Expressions.Interpreter.InterpretedFrame:YieldToPendingContinuation():int:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.windows.arm64.checked.mch 266 34 0 232 -308 +0
benchmarks.run_pgo.windows.arm64.checked.mch 816 21 0 795 -128 +0
benchmarks.run_tiered.windows.arm64.checked.mch 76 6 0 70 -56 +0
coreclr_tests.run.windows.arm64.checked.mch 1,308 149 0 1,159 -816 +0
libraries.crossgen2.windows.arm64.checked.mch 871 71 0 800 -468 +0
libraries.pmi.windows.arm64.checked.mch 2,104 128 1 1,975 -868 +20
libraries_tests.pmi.windows.arm64.checked.mch 1,135 106 0 1,029 -580 +0
libraries_tests.run.windows.arm64.Release.mch 5,181 605 9 4,567 -2,764 +108
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch 1,807 141 3 1,663 -856 +52
realworld.run.windows.arm64.checked.mch 707 152 2 553 -1,836 +28
smoke_tests.nativeaot.windows.arm64.checked.mch 139 22 0 117 -100 +0
14,410 1,435 15 12,960 -8,780 +208

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.windows.arm64.checked.mch 24,838 1,369 23,469 0 (0.00%) 0 (0.00%)
benchmarks.run_pgo.windows.arm64.checked.mch 81,816 47,160 34,656 0 (0.00%) 0 (0.00%)
benchmarks.run_tiered.windows.arm64.checked.mch 47,417 36,571 10,846 0 (0.00%) 0 (0.00%)
coreclr_tests.run.windows.arm64.checked.mch 581,085 361,191 219,894 0 (0.00%) 0 (0.00%)
libraries.crossgen2.windows.arm64.checked.mch 272,042 15 272,027 0 (0.00%) 0 (0.00%)
libraries.pmi.windows.arm64.checked.mch 300,696 5,730 294,966 0 (0.00%) 0 (0.00%)
libraries_tests.pmi.windows.arm64.checked.mch 358,532 7,957 350,575 0 (0.00%) 0 (0.00%)
libraries_tests.run.windows.arm64.Release.mch 622,675 462,284 160,391 0 (0.00%) 0 (0.00%)
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch 315,687 30,069 285,618 0 (0.00%) 0 (0.00%)
realworld.run.windows.arm64.checked.mch 30,477 3,540 26,937 0 (0.00%) 0 (0.00%)
smoke_tests.nativeaot.windows.arm64.checked.mch 23,403 2 23,401 0 (0.00%) 0 (0.00%)
2,658,668 955,888 1,702,780 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