Assembly Diffs

linux arm64

Diffs are based on 2,506,119 contexts (1,007,092 MinOpts, 1,499,027 FullOpts).

MISSED contexts: base: 8 (0.00%), diff: 1,199 (0.05%)

Overall (-71,864 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm64.checked.mch 15,545,628 -572
benchmarks.run_pgo.linux.arm64.checked.mch 79,733,396 -1,084
benchmarks.run_tiered.linux.arm64.checked.mch 24,597,428 -460
coreclr_tests.run.linux.arm64.checked.mch 508,528,604 -4,536
libraries.crossgen2.linux.arm64.checked.mch 55,844,108 -1,356
libraries.pmi.linux.arm64.checked.mch 76,277,412 -3,084
libraries_tests.run.linux.arm64.Release.mch 393,983,252 -55,708
librariestestsnotieredcompilation.run.linux.arm64.Release.mch 164,985,256 -3,600
realworld.run.linux.arm64.checked.mch 15,900,012 -512
smoke_tests.nativeaot.linux.arm64.checked.mch 2,946,792 -952

FullOpts (-71,864 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm64.checked.mch 15,240,700 -572
benchmarks.run_pgo.linux.arm64.checked.mch 53,798,612 -1,084
benchmarks.run_tiered.linux.arm64.checked.mch 4,858,992 -460
coreclr_tests.run.linux.arm64.checked.mch 160,380,452 -4,536
libraries.crossgen2.linux.arm64.checked.mch 55,842,472 -1,356
libraries.pmi.linux.arm64.checked.mch 76,157,428 -3,084
libraries_tests.run.linux.arm64.Release.mch 178,851,300 -55,708
librariestestsnotieredcompilation.run.linux.arm64.Release.mch 151,487,792 -3,600
realworld.run.linux.arm64.checked.mch 15,319,088 -512
smoke_tests.nativeaot.linux.arm64.checked.mch 2,945,804 -952

Example diffs

benchmarks.run.linux.arm64.checked.mch

-36 (-21.95%) : 27942.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan1[uint]):int (FullOpts)

@@ -11,12 +11,14 @@ ;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]> ; V02 loc0 [V02,T00] ( 7, 24.50) int -> x4 ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T01] ( 6, 20 ) int -> x5 "dup spill" -; V05 tmp2 [V05,T05] ( 3, 5.50) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP -; V06 tmp3 [V06,T04] ( 5, 7 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP -; V07 tmp4 [V07,T06] ( 3, 5.50) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP -; V08 tmp5 [V08,T03] ( 6, 7.50) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP -; V09 cse0 [V09,T02] ( 6, 13.50) long -> x6 multi-def "CSE - aggressive"
+; V04 tmp1 [V04,T01] ( 2, 16 ) int -> x4 "dup spill" +; V05 tmp2 [V05,T07] ( 2, 5 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP +; V06 tmp3 [V06,T04] ( 4, 6.50) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP +; V07 tmp4 [V07,T08] ( 2, 5 ) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP +; V08 tmp5 [V08,T03] ( 5, 7 ) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP +; V09 cse0 [V09,T05] ( 3, 8.50) int -> x6 "CSE - aggressive" +; V10 cse1 [V10,T06] ( 3, 8.50) int -> x5 "CSE - aggressive" +; V11 cse2 [V11,T02] ( 3, 12 ) long -> x5 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -33,51 +35,39 @@ G_M264_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs -[x0 x2] cmp w1, w3 blt G_M264_IG11
- b G_M264_IG09
+ b G_M264_IG07
;; size=12 bbWeight=0.50 PerfScore 1.25 G_M264_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref ; byrRegs +[x0 x2] sxtw w4, w3 ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M264_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
- sub w5, w4, #1 - sxtw w4, w5 - tbnz w4, #31, G_M264_IG06
+ sub w4, w4, #1 + tbnz w4, #31, G_M264_IG09
cmp w4, w1 bhs G_M264_IG13
- ubfiz x6, x4, #2, #32 - ldr w7, [x0, x6]
+ ubfiz x5, x4, #2, #32 + ldr w6, [x0, x5]
cmp w4, w3 bhs G_M264_IG13
- ldr w6, [x2, x6] - cmp w7, w6
+ ldr w5, [x2, x5] + cmp w6, w5
beq G_M264_IG05
- ;; size=48 bbWeight=4 PerfScore 54.00 -G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz - tbz w5, #31, G_M264_IG08 - mov w0, wzr - ; byrRegs -[x0]
+ ;; size=44 bbWeight=4 PerfScore 52.00 +G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ; byrRegs -[x0 x2] + cmp w5, w6 + bhi G_M264_IG11
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M264_IG07: ; bbWeight=0.50, epilog, nogc, extend
+G_M264_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov w0, #1 + ;; size=4 bbWeight=0.50 PerfScore 0.25 +G_M264_IG08: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M264_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, gcvars, byref, isz - ; byrRegs +[x0] - cmp w5, w1 - bhs G_M264_IG13 - ubfiz x6, x5, #2, #32 - ldr w0, [x0, x6] - ; byrRegs -[x0] - cmp w5, w3 - bhs G_M264_IG13 - ldr w1, [x2, x6] - cmp w0, w1 - blo G_M264_IG11 - ;; size=36 bbWeight=0.50 PerfScore 5.75 -G_M264_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; byrRegs -[x2] - mov w0, #1
+G_M264_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + mov w0, wzr
;; size=4 bbWeight=0.50 PerfScore 0.25 G_M264_IG10: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x10 @@ -96,7 +86,7 @@ G_M264_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 164, prolog size 8, PerfScore 68.50, instruction count 41, allocated bytes for code 164 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
+; Total bytes of code 128, prolog size 8, PerfScore 61.00, instruction count 32, allocated bytes for code 128 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
; ============================================================ Unwind Info: @@ -107,7 +97,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
+ Function Length : 32 (0x00020) Actual length = 128 (0x000080)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-48 (-7.64%) : 19004.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan1[ushort],System.Span1[ubyte],byref,byref):this (FullOpts)

@@ -9,12 +9,12 @@ ; Final local variable assignments ; ; V00 this [V00,T10] ( 6, 6 ) ref -> x0 this class-hnd single-def <System.Xml.Base64Decoder>
-; V01 arg1 [V01 ] ( 20, 43 ) struct (16) [fp+0x10] do-not-enreg[XSA] multireg-arg addr-exposed ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
+; V01 arg1 [V01 ] ( 19, 42.50) struct (16) [fp+0x10] do-not-enreg[XSA] multireg-arg addr-exposed ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
;* V02 arg2 [V02 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ubyte]> ; V03 arg3 [V03,T13] ( 3, 3 ) byref -> x5 single-def ; V04 arg4 [V04,T14] ( 3, 3 ) byref -> x6 single-def ; V05 loc0 [V05,T06] ( 6, 12 ) int -> registers
-; V06 loc1 [V06,T00] ( 19, 56 ) int -> registers
+; V06 loc1 [V06,T00] ( 18, 55.50) int -> registers
; V07 loc2 [V07,T11] ( 5, 8 ) int -> x7 ; V08 loc3 [V08,T04] ( 8, 12.50) int -> x8 ;* V09 loc4 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ubyte]> @@ -36,7 +36,7 @@ ;* V25 tmp13 [V25 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]> ;* V26 tmp14 [V26 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]> ; V27 tmp15 [V27 ] ( 9, 15.50) byref -> [fp+0x10] do-not-enreg[X] addr-exposed single-def "field V01._reference (fldOffset=0x0)" P-DEP
-; V28 tmp16 [V28 ] ( 15, 29.50) int -> [fp+0x18] do-not-enreg[X] addr-exposed single-def "field V01._length (fldOffset=0x8)" P-DEP
+; V28 tmp16 [V28 ] ( 14, 29 ) int -> [fp+0x18] do-not-enreg[X] addr-exposed single-def "field V01._length (fldOffset=0x8)" P-DEP
; V29 tmp17 [V29,T15] ( 2, 3 ) byref -> x3 single-def "field V02._reference (fldOffset=0x0)" P-INDEP ; V30 tmp18 [V30,T09] ( 3, 7 ) int -> x4 single-def "field V02._length (fldOffset=0x8)" P-INDEP ; V31 tmp19 [V31,T16] ( 2, 3 ) byref -> x9 single-def "field V09._reference (fldOffset=0x0)" P-INDEP @@ -84,7 +84,7 @@ G_M19254_IG03: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0268 {x3 x5 x bhs G_M19254_IG06 ldr w10, [fp, #0x18] // [V28 tmp16] cmp w2, w10
- bhs G_M19254_IG17
+ bhs G_M19254_IG12
ldr x10, [fp, #0x10] // [V27 tmp15] ; byrRegs +[x10] ldrh w10, [x10, w2, UXTW #2] @@ -100,10 +100,10 @@ G_M19254_IG03: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0268 {x3 x5 x ;; size=60 bbWeight=4 PerfScore 70.00 G_M19254_IG04: ; bbWeight=2, gcrefRegs=0001 {x0}, byrefRegs=0268 {x3 x5 x6 x9}, byref, isz cmp w10, #123
- bge G_M19254_IG18
+ bge G_M19254_IG13
ldrb w10, [x9, w10, UXTW #2] cmp w10, #255
- beq G_M19254_IG18
+ beq G_M19254_IG13
orr w7, w10, w7, LSL #6 add w8, w8, #6 cmp w8, #8 @@ -114,7 +114,7 @@ G_M19254_IG04: ; bbWeight=2, gcrefRegs=0001 {x0}, byrefRegs=0268 {x3 x5 x strb w11, [x3, w1, UXTW #2] cmp w10, w4 mov w1, w10
- beq G_M19254_IG16
+ beq G_M19254_IG10
;; size=64 bbWeight=2 PerfScore 27.00 G_M19254_IG05: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0268 {x3 x5 x6 x9}, byref, isz ldr w10, [fp, #0x18] // [V28 tmp16] @@ -125,26 +125,26 @@ G_M19254_IG06: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0060 {x5 x ; byrRegs -[x3 x9] ldr w3, [fp, #0x18] // [V28 tmp16] cmp w2, w3
- bhs G_M19254_IG15
+ bhs G_M19254_IG10
ldr w3, [fp, #0x18] // [V28 tmp16] cmp w2, w3
- bhs G_M19254_IG17
+ bhs G_M19254_IG12
ldr x3, [fp, #0x10] // [V27 tmp15] ; byrRegs +[x3] ldrh w3, [x3, w2, UXTW #2] ; byrRegs -[x3] cmp w3, #61
- bne G_M19254_IG14
+ bne G_M19254_IG10
mov w8, wzr ;; size=44 bbWeight=0.50 PerfScore 7.00 G_M19254_IG07: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0060 {x5 x6}, byref, isz add w2, w2, #1 ldr w3, [fp, #0x18] // [V28 tmp16] cmp w2, w3
- bhs G_M19254_IG08
+ bhs G_M19254_IG10
ldr w3, [fp, #0x18] // [V28 tmp16] cmp w2, w3
- bhs G_M19254_IG17
+ bhs G_M19254_IG12
ldr x3, [fp, #0x10] // [V27 tmp15] ; byrRegs +[x3] ldrh w3, [x3, w2, UXTW #2] @@ -152,66 +152,44 @@ G_M19254_IG07: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0060 {x5 x6}, cmp w3, #61 beq G_M19254_IG07 ;; size=44 bbWeight=4 PerfScore 56.00
-G_M19254_IG08: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0060 {x5 x6}, byref, isz - ldr w3, [fp, #0x18] // [V28 tmp16] - cmp w2, w3 - bhs G_M19254_IG13
+G_M19254_IG08: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0060 {x5 x6}, byref
movz x11, #0xD1FFAB1E movk x11, #0xD1FFAB1E LSL #16 movk x11, #0xD1FFAB1E LSL #32
- ;; size=24 bbWeight=0.50 PerfScore 2.50
+ ;; size=12 bbWeight=0.50 PerfScore 0.75
G_M19254_IG09: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0060 {x5 x6}, byref, isz add w3, w2, #1 ldr w4, [fp, #0x18] // [V28 tmp16] cmp w2, w4
- bhs G_M19254_IG17
+ bhs G_M19254_IG12
ldr x4, [fp, #0x10] // [V27 tmp15] ; byrRegs +[x4] ldrh w2, [x4, w2, UXTW #2] ldrb w2, [x11, w2, UXTW #2]
- tbz w2, #0, G_M19254_IG19
+ tbz w2, #0, G_M19254_IG14
ldr w2, [fp, #0x18] // [V28 tmp16] cmp w3, w2
- blo G_M19254_IG12 - ;; size=44 bbWeight=4 PerfScore 66.00
+ mov w2, w3 + blo G_M19254_IG09 + ;; size=48 bbWeight=4 PerfScore 68.00
G_M19254_IG10: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0060 {x5 x6}, byref ; byrRegs -[x4] stp w7, w8, [x0, #0x1C] str w1, [x6]
- str w3, [x5]
+ str w2, [x5]
;; size=12 bbWeight=1 PerfScore 3.00 G_M19254_IG11: ; bbWeight=1, epilog, nogc, extend ldp x19, x20, [sp, #0x20] ldp fp, lr, [sp], #0x30 ret lr ;; size=12 bbWeight=1 PerfScore 3.00
-G_M19254_IG12: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0060 {x5 x6}, gcvars, byref - mov w2, w3 - b G_M19254_IG09 - ;; size=8 bbWeight=2 PerfScore 3.00 -G_M19254_IG13: ; bbWeight=0.25, gcrefRegs=0001 {x0}, byrefRegs=0060 {x5 x6}, byref - mov w3, w2 - b G_M19254_IG10 - ;; size=8 bbWeight=0.25 PerfScore 0.38 -G_M19254_IG14: ; bbWeight=0.25, gcrefRegs=0001 {x0}, byrefRegs=0060 {x5 x6}, byref - mov w3, w2 - b G_M19254_IG10 - ;; size=8 bbWeight=0.25 PerfScore 0.38 -G_M19254_IG15: ; bbWeight=0.25, gcrefRegs=0001 {x0}, byrefRegs=0060 {x5 x6}, byref - mov w3, w2 - b G_M19254_IG10 - ;; size=8 bbWeight=0.25 PerfScore 0.38 -G_M19254_IG16: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0060 {x5 x6}, byref - mov w3, w2 - b G_M19254_IG10 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M19254_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M19254_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] ; byrRegs -[x5-x6] bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M19254_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M19254_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for <unknown method> movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -257,7 +235,7 @@ G_M19254_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x0 x20] ; gcr arg pop 0 ;; size=108 bbWeight=0 PerfScore 0.00
-G_M19254_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M19254_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for <unknown method> movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -305,7 +283,7 @@ G_M19254_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_unix #0 ;; size=112 bbWeight=0 PerfScore 0.00
-; Total bytes of code 628, prolog size 16, PerfScore 266.12, instruction count 157, allocated bytes for code 628 (MethodHash=6376b4c9) for method System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (FullOpts)
+; Total bytes of code 580, prolog size 16, PerfScore 260.75, instruction count 145, allocated bytes for code 580 (MethodHash=6376b4c9) for method System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (FullOpts)
; ============================================================ Unwind Info: @@ -316,7 +294,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 157 (0x0009d) Actual length = 628 (0x000274)
+ Function Length : 145 (0x00091) Actual length = 580 (0x000244)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-20 (-7.04%) : 24352.dasm - Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (FullOpts)

@@ -7,20 +7,21 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T05] ( 6, 22 ) int -> x0 -; V01 arg1 [V01,T06] ( 6, 19 ) int -> x19 single-def -; V02 arg2 [V02,T08] ( 5, 11 ) ref -> x20 class-hnd single-def <int[]> -; V03 loc0 [V03,T00] ( 17,112 ) int -> x23 -; V04 loc1 [V04,T01] ( 13,100 ) int -> x1
+; V00 arg0 [V00,T06] ( 6, 22 ) int -> x0 +; V01 arg1 [V01,T07] ( 6, 19 ) int -> x19 single-def +; V02 arg2 [V02,T09] ( 5, 11 ) ref -> x20 class-hnd single-def <int[]> +; V03 loc0 [V03,T00] ( 16,110 ) int -> x23 +; V04 loc1 [V04,T01] ( 10, 94 ) int -> x1
; V05 loc2 [V05,T04] ( 4, 38 ) int -> x3
-; V06 loc3 [V06,T09] ( 4, 8 ) int -> x4
+; V06 loc3 [V06,T10] ( 4, 8 ) int -> x5
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T10] ( 2, 8 ) int -> x5 "Strict ordering of exceptions for Array store" -; V09 tmp2 [V09,T07] ( 2, 16 ) int -> x0 "arg temp" -; V10 cse0 [V10,T11] ( 3, 7 ) long -> x22 hoist "CSE - aggressive" -; V11 cse1 [V11,T12] ( 3, 6 ) long -> x1 "CSE - aggressive" -; V12 cse2 [V12,T02] ( 11, 51 ) byref -> x21 hoist "CSE - aggressive" -; V13 cse3 [V13,T03] ( 7, 46 ) int -> x2 "CSE - aggressive"
+; V08 tmp1 [V08,T11] ( 2, 8 ) int -> x4 "Strict ordering of exceptions for Array store" +; V09 tmp2 [V09,T08] ( 2, 16 ) int -> x0 "arg temp" +; V10 cse0 [V10,T05] ( 3, 34 ) int -> x4 "CSE - aggressive" +; V11 cse1 [V11,T12] ( 3, 7 ) long -> x22 hoist "CSE - aggressive" +; V12 cse2 [V12,T13] ( 3, 6 ) long -> x1 "CSE - aggressive" +; V13 cse3 [V13,T02] ( 10, 49 ) byref -> x21 hoist "CSE - aggressive" +; V14 cse4 [V14,T03] ( 6, 44 ) int -> x2 "CSE - aggressive"
; ; Lcl frame size = 8 @@ -72,7 +73,7 @@ G_M36260_IG08: ; bbWeight=8, gcrefRegs=100000 {x20}, byrefRegs=200000 {x2 ;; size=4 bbWeight=8 PerfScore 4.00 G_M36260_IG09: ; bbWeight=16, gcrefRegs=100000 {x20}, byrefRegs=200000 {x21}, byref, isz cmp w1, w23
- ble G_M36260_IG10
+ ble G_M36260_IG11
cmp w1, w2 bhs G_M36260_IG15 ldr w4, [x21, w1, UXTW #2] @@ -80,17 +81,12 @@ G_M36260_IG09: ; bbWeight=16, gcrefRegs=100000 {x20}, byrefRegs=200000 {x bge G_M36260_IG08 ;; size=28 bbWeight=16 PerfScore 120.00 G_M36260_IG10: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=200000 {x21}, byref, isz
- cmp w23, w1 - bge G_M36260_IG11
cmp w23, w2 bhs G_M36260_IG15
- ldr w4, [x21, w23, UXTW #2] - cmp w1, w2 - bhs G_M36260_IG15 - ldr w5, [x21, w1, UXTW #2] - str w5, [x21, w23, UXTW #2] - str w4, [x21, w1, UXTW #2] - ;; size=40 bbWeight=2 PerfScore 25.00
+ ldr w5, [x21, w23, UXTW #2] + str w4, [x21, w23, UXTW #2] + str w5, [x21, w1, UXTW #2] + ;; size=20 bbWeight=2 PerfScore 13.00
G_M36260_IG11: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=200000 {x21}, byref, isz cmp w23, w1 blt G_M36260_IG06 @@ -101,9 +97,9 @@ G_M36260_IG12: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=200000 {x2 cmp w23, w2 bhs G_M36260_IG15 ubfiz x1, x23, #2, #32
- ldr w4, [x21, x1]
+ ldr w5, [x21, x1]
str w3, [x21, x1]
- str w4, [x21, x22]
+ str w5, [x21, x22]
;; size=24 bbWeight=2 PerfScore 15.00 G_M36260_IG13: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=200000 {x21}, byref sub w1, w23, #1 @@ -134,7 +130,7 @@ G_M36260_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 284, prolog size 28, PerfScore 399.00, instruction count 71, allocated bytes for code 284 (MethodHash=1870725b) for method Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (FullOpts)
+; Total bytes of code 264, prolog size 28, PerfScore 387.00, instruction count 66, allocated bytes for code 264 (MethodHash=1870725b) for method Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (FullOpts)
; ============================================================ Unwind Info: @@ -145,7 +141,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 71 (0x00047) Actual length = 284 (0x00011c)
+ Function Length : 66 (0x00042) Actual length = 264 (0x000108)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+4 (+1.11%) : 12182.dasm - System.Enum+<>c__631[uint]:<FormatNumberAsHex>b__63_0(System.Span1[ushort],long):this (FullOpts)

@@ -10,32 +10,32 @@ ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Enum+<>c__63`1[uint]> ;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Span`1[ushort]>
-; V02 arg2 [V02,T02] ( 3, 2.50) long -> x3 single-def
+; V02 arg2 [V02,T01] ( 3, 2.50) long -> x3 single-def
;* V03 loc0 [V03 ] ( 0, 0 ) ubyte -> zero-ref ;* V04 loc1 [V04,T17] ( 0, 0 ) int -> zero-ref ld-addr-op ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V06 tmp1 [V06,T18] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V07 tmp2 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ; V08 tmp3 [V08,T08] ( 5, 2.50) int -> x0 "Inline stloc first use temp"
-; V09 tmp4 [V09,T04] ( 3, 3 ) ubyte -> x2 "Inlining Arg"
+; V09 tmp4 [V09,T03] ( 3, 3 ) ubyte -> x2 "Inlining Arg"
; V10 tmp5 [V10,T09] ( 3, 1.50) int -> x2 "Inline stloc first use temp" ; V11 tmp6 [V11,T10] ( 3, 1.50) int -> x2 "Inline stloc first use temp" ;* V12 tmp7 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
-; V13 tmp8 [V13,T05] ( 3, 3 ) ubyte -> x2 "Inlining Arg"
+; V13 tmp8 [V13,T04] ( 3, 3 ) ubyte -> x2 "Inlining Arg"
; V14 tmp9 [V14,T11] ( 3, 1.50) int -> x2 "Inline stloc first use temp" ; V15 tmp10 [V15,T12] ( 3, 1.50) int -> x2 "Inline stloc first use temp" ;* V16 tmp11 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
-; V17 tmp12 [V17,T06] ( 3, 3 ) ubyte -> x2 "Inlining Arg"
+; V17 tmp12 [V17,T05] ( 3, 3 ) ubyte -> x2 "Inlining Arg"
; V18 tmp13 [V18,T13] ( 3, 1.50) int -> x2 "Inline stloc first use temp" ; V19 tmp14 [V19,T14] ( 3, 1.50) int -> x2 "Inline stloc first use temp" ;* V20 tmp15 [V20 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
-; V21 tmp16 [V21,T07] ( 3, 3 ) ubyte -> x0 "Inlining Arg"
+; V21 tmp16 [V21,T06] ( 3, 3 ) ubyte -> x0 "Inlining Arg"
; V22 tmp17 [V22,T15] ( 3, 1.50) int -> x0 "Inline stloc first use temp" ; V23 tmp18 [V23,T16] ( 3, 1.50) int -> x0 "Inline stloc first use temp" ;* V24 tmp19 [V24 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V25 tmp20 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V26 tmp21 [V26,T00] ( 9, 5 ) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V27 tmp22 [V27,T03] ( 2, 2 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V27 tmp22 [V27,T02] ( 2, 2 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
;* V28 tmp23 [V28 ] ( 0, 0 ) byref -> zero-ref single-def "field V07._reference (fldOffset=0x0)" P-INDEP ;* V29 tmp24 [V29 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP ;* V30 tmp25 [V30 ] ( 0, 0 ) byref -> zero-ref single-def "field V12._reference (fldOffset=0x0)" P-INDEP @@ -46,14 +46,15 @@ ;* V35 tmp30 [V35 ] ( 0, 0 ) int -> zero-ref "field V20._length (fldOffset=0x8)" P-INDEP ;* V36 tmp31 [V36 ] ( 0, 0 ) byref -> zero-ref single-def "field V24._reference (fldOffset=0x0)" P-INDEP ;* V37 tmp32 [V37 ] ( 0, 0 ) int -> zero-ref "field V24._length (fldOffset=0x8)" P-INDEP
-; V38 cse0 [V38,T01] ( 6, 6 ) ref -> x1 multi-def "CSE - aggressive"
+; V38 cse0 [V38,T07] ( 5, 2.50) ref -> x19 "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M18375_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x10]!
+ stp fp, lr, [sp, #-0x20]! + str x19, [sp, #0x18]
mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50
+ ;; size=12 bbWeight=1 PerfScore 2.50
G_M18375_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz ; byrRegs +[x1] cmp w2, #8 @@ -127,48 +128,50 @@ G_M18375_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, b strh w0, [x1, #0x0C] b G_M18375_IG05 ;; size=264 bbWeight=0.50 PerfScore 23.75
-G_M18375_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M18375_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x1]
- movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - mov x0, x1
+ movz x19, #0xD1FFAB1E + movk x19, #0xD1FFAB1E LSL #16 + movk x19, #0xD1FFAB1E LSL #32 + mov x0, x19
; gcrRegs +[x0]
+ mov x1, x19 + ; gcrRegs +[x1]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x0] - movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - mov x0, x1
+ ; gcrRegs -[x0-x1] +[x19] + mov x0, x19
; gcrRegs +[x0]
+ mov x1, x19 + ; gcrRegs +[x1]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x0] - ;; size=72 bbWeight=1 PerfScore 15.00
+ ; gcrRegs -[x0-x1 x19] + ;; size=68 bbWeight=0.50 PerfScore 7.25
G_M18375_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ldp fp, lr, [sp], #0x10
+ ldr x19, [sp, #0x18] + ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=1 PerfScore 2.00
+ ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 360, prolog size 8, PerfScore 43.75, instruction count 90, allocated bytes for code 360 (MethodHash=1579b838) for method System.Enum+<>c__63`1[uint]:<FormatNumberAsHex>b__63_0(System.Span`1[ushort],long):this (FullOpts)
+; Total bytes of code 364, prolog size 12, PerfScore 39.00, instruction count 91, allocated bytes for code 364 (MethodHash=1579b838) for method System.Enum+<>c__63`1[uint]:<FormatNumberAsHex>b__63_0(System.Span`1[ushort],long):this (FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 1
+ Code Words : 2
Epilog Count : 1 E bit : 0 X bit : 0 Vers : 0
- Function Length : 90 (0x0005a) Actual length = 360 (0x000168)
+ Function Length : 91 (0x0005b) Actual length = 364 (0x00016c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -176,7 +179,10 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
+ D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24] + 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! + E4 end + E4 end
E4 end E4 end

+4 (+1.22%) : 4504.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)

@@ -8,34 +8,37 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T10] ( 5, 15 ) ref -> x20 class-hnd single-def <System.Reflection.ParameterInfo[]> -; V01 arg1 [V01,T11] ( 5, 11 ) ref -> x21 class-hnd single-def <System.Type[]> -; V02 arg2 [V02,T06] ( 5, 23 ) byref -> x19 single-def
+; V00 arg0 [V00,T10] ( 4, 11 ) ref -> x20 class-hnd single-def <System.Reflection.ParameterInfo[]> +; V01 arg1 [V01,T14] ( 4, 4 ) ref -> x21 class-hnd single-def <System.Type[]> +; V02 arg2 [V02,T05] ( 5, 23 ) byref -> x19 single-def
; V03 loc0 [V03,T09] ( 6, 21 ) int -> x23
-;* V04 loc1 [V04,T13] ( 0, 0 ) ubyte -> zero-ref -; V05 loc2 [V05,T12] ( 2, 12 ) ref -> x24 class-hnd <System.Type> -; V06 loc3 [V06,T01] ( 7, 88 ) int -> x25
+;* V04 loc1 [V04,T12] ( 0, 0 ) ubyte -> zero-ref +; V05 loc2 [V05,T11] ( 2, 12 ) ref -> x25 class-hnd <System.Type> +; V06 loc3 [V06,T01] ( 7, 88 ) int -> x26
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V08 tmp1 [V08 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]>
-; V09 tmp2 [V09,T07] ( 3, 24 ) ref -> x0 class-hnd "impAppendStmt" <<unknown class>>
+; V09 tmp2 [V09,T06] ( 3, 24 ) ref -> x0 class-hnd "impAppendStmt" <<unknown class>>
;* V10 tmp3 [V10 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-;* V11 tmp4 [V11,T15] ( 0, 0 ) ubyte -> zero-ref "field V08.hasValue (fldOffset=0x0)" P-INDEP -; V12 tmp5 [V12,T14] ( 2, 8 ) int -> x1 "field V08.value (fldOffset=0x4)" P-INDEP
+;* V11 tmp4 [V11,T17] ( 0, 0 ) ubyte -> zero-ref "field V08.hasValue (fldOffset=0x0)" P-INDEP +; V12 tmp5 [V12,T13] ( 2, 8 ) int -> x1 "field V08.value (fldOffset=0x4)" P-INDEP
; V13 tmp6 [V13,T00] ( 3, 96 ) ref -> x0 "arr expr" ; V14 tmp7 [V14,T02] ( 3, 48 ) ref -> x0 "argument with side effect" ; V15 tmp8 [V15,T03] ( 3, 48 ) ref -> x0 "argument with side effect"
-; V16 tmp9 [V16,T08] ( 3, 24 ) byref -> x0 "BlockOp address local" -; V17 cse0 [V17,T04] ( 4, 44 ) long -> x26 "CSE - aggressive" -; V18 cse1 [V18,T05] ( 5, 26 ) int -> x22 multi-def "CSE - aggressive"
+; V16 tmp9 [V16,T07] ( 3, 24 ) byref -> x0 "BlockOp address local" +; V17 cse0 [V17,T04] ( 4, 44 ) long -> x27 "CSE - aggressive" +; V18 cse1 [V18,T08] ( 4, 22 ) int -> x22 "CSE - aggressive" +; V19 cse2 [V19,T16] ( 2, 5 ) byref -> x21 hoist "CSE - aggressive" +; V20 cse3 [V20,T15] ( 3, 6 ) int -> x24 "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M59545_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x50]! - stp x19, x20, [sp, #0x10] - stp x21, x22, [sp, #0x20] - stp x23, x24, [sp, #0x30] - stp x25, x26, [sp, #0x40]
+ stp fp, lr, [sp, #-0x60]! + stp x19, x20, [sp, #0x18] + stp x21, x22, [sp, #0x28] + stp x23, x24, [sp, #0x38] + stp x25, x26, [sp, #0x48] + str x27, [sp, #0x58]
mov fp, sp mov x20, x0 ; gcrRegs +[x20] @@ -43,7 +46,7 @@ G_M59545_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[x21] mov x19, x2 ; byrRegs +[x19]
- ;; size=36 bbWeight=1 PerfScore 7.00
+ ;; size=40 bbWeight=1 PerfScore 8.00
G_M59545_IG02: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=80000 {x19}, byref, isz ldr w22, [x20, #0x08] mov w1, w22 @@ -61,37 +64,36 @@ G_M59545_IG02: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=80000 ; gcrRegs -[x0 x15] ; byrRegs -[x14] mov w23, wzr
- ldr w0, [x21, #0x08] - cmp w0, #0
+ ldr w24, [x21, #0x08] + cmp w24, #0
ble G_M59545_IG09
- ;; size=52 bbWeight=1 PerfScore 13.00 -G_M59545_IG03: ; bbWeight=4, gcrefRegs=300000 {x20 x21}, byrefRegs=80000 {x19}, byref, isz - add x0, x21, #16 - ; byrRegs +[x0] - ldr x24, [x0, w23, UXTW #3] - ; gcrRegs +[x24] - mov w25, wzr - ldr w22, [x20, #0x08]
+ add x21, x21, #16 + ; gcrRegs -[x21] + ; byrRegs +[x21] + ;; size=56 bbWeight=1 PerfScore 13.50 +G_M59545_IG03: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=280000 {x19 x21}, byref, isz + ldr x25, [x21, w23, UXTW #3] + ; gcrRegs +[x25] + mov w26, wzr
cmp w22, #0 ble G_M59545_IG11
- ;; size=24 bbWeight=4 PerfScore 34.00 -G_M59545_IG04: ; bbWeight=16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=80000 {x19}, byref, isz - ; byrRegs -[x0]
+ ;; size=16 bbWeight=4 PerfScore 20.00 +G_M59545_IG04: ; bbWeight=16, gcrefRegs=2100000 {x20 x25}, byrefRegs=280000 {x19 x21}, byref, isz
ldr x0, [x19] ; gcrRegs +[x0] ldr w1, [x0, #0x08]
- cmp w25, w1
+ cmp w26, w1
bhs G_M59545_IG13
- ubfiz x26, x25, #3, #32 - add x1, x26, #16
+ ubfiz x27, x26, #3, #32 + add x1, x27, #16
ldrb w0, [x0, x1] ; gcrRegs -[x0] cbnz w0, G_M59545_IG06 ;; size=32 bbWeight=16 PerfScore 208.00
-G_M59545_IG05: ; bbWeight=8, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=80000 {x19}, byref, isz
+G_M59545_IG05: ; bbWeight=8, gcrefRegs=2100000 {x20 x25}, byrefRegs=280000 {x19 x21}, byref, isz
add x0, x20, #16 ; byrRegs +[x0]
- ldr x0, [x0, x26]
+ ldr x0, [x0, x27]
; gcrRegs +[x0] ; byrRegs -[x0] ldr x1, [x0] @@ -99,7 +101,7 @@ G_M59545_IG05: ; bbWeight=8, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8 ldr x1, [x1, #0x38] blr x1 ; gcr arg pop 0
- mov x1, x24
+ mov x1, x25
; gcrRegs +[x1] ldr x2, [x0] ldr x2, [x2, #0xB8] @@ -109,26 +111,26 @@ G_M59545_IG05: ; bbWeight=8, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8 ; gcr arg pop 0 cbnz w0, G_M59545_IG08 ;; size=48 bbWeight=8 PerfScore 200.00
-G_M59545_IG06: ; bbWeight=16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=80000 {x19}, byref, isz - add w25, w25, #1 - cmp w22, w25
+G_M59545_IG06: ; bbWeight=16, gcrefRegs=2100000 {x20 x25}, byrefRegs=280000 {x19 x21}, byref, isz + add w26, w26, #1 + cmp w22, w26
bgt G_M59545_IG04 ;; size=12 bbWeight=16 PerfScore 32.00 G_M59545_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x20-x21 x24] - ; byrRegs -[x19]
+ ; gcrRegs -[x20 x25] + ; byrRegs -[x19 x21]
b G_M59545_IG11 ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M59545_IG08: ; bbWeight=4, gcrefRegs=300000 {x20 x21}, byrefRegs=80000 {x19}, byref, isz - ; gcrRegs +[x20-x21] - ; byrRegs +[x19]
+G_M59545_IG08: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=280000 {x19 x21}, byref, isz + ; gcrRegs +[x20] + ; byrRegs +[x19 x21]
ldr x0, [x19] ; gcrRegs +[x0] sxtw w1, w23 ldr w2, [x0, #0x08]
- cmp w25, w2
+ cmp w26, w2
bhs G_M59545_IG13
- add x2, x26, #16
+ add x2, x27, #16
add x0, x0, x2 ; gcrRegs -[x0] ; byrRegs +[x0] @@ -136,53 +138,53 @@ G_M59545_IG08: ; bbWeight=4, gcrefRegs=300000 {x20 x21}, byrefRegs=80000 strb w2, [x0] str w1, [x0, #0x04] add w23, w23, #1
- ldr w0, [x21, #0x08] - ; byrRegs -[x0] - cmp w0, w23
+ cmp w24, w23
bgt G_M59545_IG03
- ;; size=56 bbWeight=4 PerfScore 66.00
+ ;; size=52 bbWeight=4 PerfScore 54.00
G_M59545_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x20-x21] - ; byrRegs -[x19]
+ ; gcrRegs -[x20] + ; byrRegs -[x0 x19 x21]
mov w0, #1 ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M59545_IG10: ; bbWeight=0.50, epilog, nogc, extend
- ldp x25, x26, [sp, #0x40] - ldp x23, x24, [sp, #0x30] - ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x50
+ ldr x27, [sp, #0x58] + ldp x25, x26, [sp, #0x48] + ldp x23, x24, [sp, #0x38] + ldp x21, x22, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x60
ret lr
- ;; size=24 bbWeight=0.50 PerfScore 3.00
+ ;; size=28 bbWeight=0.50 PerfScore 4.00
G_M59545_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref mov w0, wzr ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M59545_IG12: ; bbWeight=0.50, epilog, nogc, extend
- ldp x25, x26, [sp, #0x40] - ldp x23, x24, [sp, #0x30] - ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x50
+ ldr x27, [sp, #0x58] + ldp x25, x26, [sp, #0x48] + ldp x23, x24, [sp, #0x38] + ldp x21, x22, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x60
ret lr
- ;; size=24 bbWeight=0.50 PerfScore 3.00
+ ;; size=28 bbWeight=0.50 PerfScore 4.00
G_M59545_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 328, prolog size 36, PerfScore 567.00, instruction count 82, allocated bytes for code 328 (MethodHash=29c21766) for method Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)
+; Total bytes of code 332, prolog size 40, PerfScore 544.50, instruction count 83, allocated bytes for code 332 (MethodHash=29c21766) for method Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 3
Epilog Count : 2 E bit : 0 X bit : 0 Vers : 0
- Function Length : 82 (0x00052) Actual length = 328 (0x000148)
+ Function Length : 83 (0x00053) Actual length = 332 (0x00014c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -193,10 +195,13 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
+ D2 0B save_reg X#8 Z#11 (0x0B); str x27, [sp, #88]
E6 save_next E6 save_next E6 save_next
- C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
...

+16 (+1.39%) : 3932.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)

@@ -11,10 +11,10 @@ ; V00 arg0 [V00,T07] ( 22, 23 ) ref -> x19 class-hnd single-def <System.Collections.Generic.List`1[System.String]> ; V01 loc0 [V01,T19] ( 7, 3.50) ref -> x20 class-hnd exact single-def <System.String> ; V02 loc1 [V02 ] ( 20, 54 ) struct (16) [fp-0x48] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Span`1[ushort]>
-; V03 loc2 [V03,T00] ( 39,149.08) int -> x22
+; V03 loc2 [V03,T00] ( 41,183.08) int -> x22
; V04 loc3 [V04,T22] ( 4, 2 ) int -> x0 ;* V05 loc4 [V05 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[ushort]>
-; V06 loc5 [V06,T06] ( 9, 25.50) int -> x21
+; V06 loc5 [V06,T06] ( 9, 25.50) int -> x23
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V08 tmp1 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> ; V09 tmp2 [V09,T04] ( 5, 28 ) ref -> x0 class-hnd exact "impAppendStmt" <System.String> @@ -44,12 +44,12 @@ ; V33 cse0 [V33,T14] ( 3, 10 ) int -> x0 "CSE - aggressive" ; V34 cse1 [V34,T28] ( 3, 1.50) long -> x24 "CSE - moderate" ; V35 cse2 [V35,T31] ( 2, 1 ) int -> x12 "CSE - moderate"
-; V36 cse3 [V36,T01] ( 3, 48 ) long -> x1 "CSE - aggressive"
+; V36 cse3 [V36,T02] ( 3, 48 ) long -> x1 "CSE - aggressive"
; V37 cse4 [V37,T11] ( 3, 12 ) long -> x1 "CSE - aggressive" ; V38 cse5 [V38,T12] ( 3, 12 ) int -> x2 "CSE - aggressive" ; V39 cse6 [V39,T10] ( 3, 12 ) ref -> x1 "CSE - aggressive"
-; V40 cse7 [V40,T03] ( 15, 30.54) int -> x21 "CSE - aggressive" -; V41 cse8 [V41,T02] ( 10, 46 ) byref -> x23 hoist multi-def "CSE - aggressive"
+; V40 cse7 [V40,T01] ( 17, 64.54) int -> x21 "CSE - aggressive" +; V41 cse8 [V41,T03] ( 10, 46 ) byref -> x23 hoist multi-def "CSE - aggressive"
; V42 cse9 [V42,T27] ( 3, 1.50) ref -> x1 "CSE - aggressive" ; V43 cse10 [V43,T17] ( 2, 8 ) int -> x3 "CSE - aggressive" ; V44 cse11 [V44,T13] ( 3, 11.88) int -> x0 "CSE - aggressive" @@ -77,19 +77,19 @@ G_M28069_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=56 bbWeight=1 PerfScore 10.50 G_M28069_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldr w0, [x19, #0x10]
- cbz w0, G_M28069_IG28
+ cbz w0, G_M28069_IG27
;; size=8 bbWeight=1 PerfScore 4.00 G_M28069_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldr x0, [x19, #0x08] ; gcrRegs +[x0] ldr w1, [x0, #0x08] cmp w1, #0
- bls G_M28069_IG30
+ bls G_M28069_IG29
ldr x20, [x0, #0x10] ; gcrRegs +[x20] ldr w21, [x20, #0x08] cmp w21, #100
- bgt G_M28069_IG28
+ bgt G_M28069_IG27
add w0, w21, #2 ; gcrRegs -[x0] mov w1, #2 @@ -116,109 +116,107 @@ G_M28069_IG05: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000 mov x1, sp ;; size=8 bbWeight=0.50 PerfScore 0.50 G_M28069_IG06: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- tbnz w0, #31, G_M28069_IG31
+ tbnz w0, #31, G_M28069_IG30
str x1, [fp, #-0x48] // [V23 tmp16] str w0, [fp, #-0x40] // [V24 tmp17] mov w22, wzr cmp w21, #0
- ble G_M28069_IG15
+ ble G_M28069_IG14
add x23, x20, #12 ; byrRegs +[x23] ;; size=28 bbWeight=0.50 PerfScore 2.75 G_M28069_IG07: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz ldrh w0, [x23, w22, UXTW #2] cmp w0, #39
- bne G_M28069_IG11
+ bne G_M28069_IG10
;; size=12 bbWeight=4 PerfScore 18.00 G_M28069_IG08: ; bbWeight=16, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz ldr w0, [fp, #-0x40] // [V24 tmp17] cmp w22, w0
- bhs G_M28069_IG30
+ bhs G_M28069_IG29
ldr x0, [fp, #-0x48] // [V23 tmp16] ; byrRegs +[x0] ubfiz x1, x22, #1, #32 add x0, x0, x1
+ cmp w22, w21 + bhs G_M28069_IG29
ldrh w1, [x23, x1] strh w1, [x0] add w22, w22, #1 cmp w21, w22
- ble G_M28069_IG09
+ ble G_M28069_IG27 + cmp w22, w21 + bhs G_M28069_IG29
ldrh w0, [x23, w22, UXTW #2] ; byrRegs -[x0] cmp w0, #39 bne G_M28069_IG08
- ;; size=56 bbWeight=16 PerfScore 280.00 -G_M28069_IG09: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz - cmp w21, w22 - bgt G_M28069_IG12 - ;; size=8 bbWeight=2 PerfScore 3.00 -G_M28069_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x19-x20] - ; byrRegs -[x23] - b G_M28069_IG28 - ;; size=4 bbWeight=0.50 PerfScore 0.50 -G_M28069_IG11: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz - ; gcrRegs +[x19-x20] - ; byrRegs +[x23]
+ ;; size=72 bbWeight=16 PerfScore 328.00 +G_M28069_IG09: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref + b G_M28069_IG11 + ;; size=4 bbWeight=4 PerfScore 4.00 +G_M28069_IG10: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
cmp w0, #121
- beq G_M28069_IG14
+ beq G_M28069_IG13
;; size=8 bbWeight=2 PerfScore 3.00
-G_M28069_IG12: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
+G_M28069_IG11: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
ldr w0, [fp, #-0x40] // [V24 tmp17] cmp w22, w0
- bhs G_M28069_IG30
+ bhs G_M28069_IG29
ldr x0, [fp, #-0x48] // [V23 tmp16] ; byrRegs +[x0] ubfiz x1, x22, #1, #32 add x0, x0, x1
+ cmp w22, w21 + bhs G_M28069_IG29
ldrh w1, [x23, x1] strh w1, [x0] add w22, w22, #1 cmp w21, w22 bgt G_M28069_IG07
- ;; size=44 bbWeight=4 PerfScore 52.00 -G_M28069_IG13: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+ ;; size=52 bbWeight=4 PerfScore 58.00 +G_M28069_IG12: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; byrRegs -[x0 x23]
- b G_M28069_IG15
+ b G_M28069_IG14
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M28069_IG14: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG13: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldr w0, [fp, #-0x40] // [V24 tmp17] cmp w22, w0
- bhs G_M28069_IG30
+ bhs G_M28069_IG29
ldr x0, [fp, #-0x48] // [V23 tmp16] ; byrRegs +[x0] mov w1, #121 strh w1, [x0, w22, UXTW #2] ;; size=24 bbWeight=0.50 PerfScore 3.50
-G_M28069_IG15: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG14: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x0] sub w0, w21, #1 cmp w0, w22
- ble G_M28069_IG28
+ ble G_M28069_IG27
add w0, w22, #1 cmp w0, w21
- bhs G_M28069_IG30
+ bhs G_M28069_IG29
add x23, x20, #12 ; byrRegs +[x23] add w0, w22, #1 ubfiz x24, x0, #1, #32 ldrh w0, [x23, x24] cmp w0, #121
- bne G_M28069_IG28
+ bne G_M28069_IG27
add w25, w22, #2 cmp w21, w25
- ble G_M28069_IG16
+ ble G_M28069_IG15
cmp w25, w21
- bhs G_M28069_IG30
+ bhs G_M28069_IG29
ldrh w0, [x23, w25, UXTW #2] cmp w0, #121
- beq G_M28069_IG28
+ beq G_M28069_IG27
;; size=80 bbWeight=0.50 PerfScore 9.25
-G_M28069_IG16: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
+G_M28069_IG15: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
add w0, w22, #3 ldr w1, [fp, #-0x40] // [V24 tmp17] cmp w0, w1
- blt G_M28069_IG17
+ blt G_M28069_IG16
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 @@ -232,11 +230,11 @@ G_M28069_IG16: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800 ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=52 bbWeight=0.50 PerfScore 5.75
-G_M28069_IG17: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
+G_M28069_IG16: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
add w0, w22, #1 ldr w1, [fp, #-0x40] // [V24 tmp17] cmp w0, w1
- bhs G_M28069_IG30
+ bhs G_M28069_IG29
ldr x0, [fp, #-0x48] // [V23 tmp16] ; byrRegs +[x0] mov w1, #121 @@ -244,7 +242,7 @@ G_M28069_IG17: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800 ldr w0, [fp, #-0x40] // [V24 tmp17] ; byrRegs -[x0] cmp w25, w0
- bhs G_M28069_IG30
+ bhs G_M28069_IG29
ldr x0, [fp, #-0x48] // [V23 tmp16] ; byrRegs +[x0] strh w1, [x0, w25, UXTW #2] @@ -252,7 +250,7 @@ G_M28069_IG17: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800 ; byrRegs -[x0] ldr w1, [fp, #-0x40] // [V24 tmp17] cmp w0, w1
- bhs G_M28069_IG30
+ bhs G_M28069_IG29
ldr x0, [fp, #-0x48] // [V23 tmp16] ; byrRegs +[x0] add w1, w22, #3 @@ -260,15 +258,15 @@ G_M28069_IG17: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800 strh w2, [x0, w1, UXTW #2] sxtw w22, w25 cmp w21, w22
- ble G_M28069_IG21 - tbnz w22, #31, G_M28069_IG20
+ ble G_M28069_IG20 + tbnz w22, #31, G_M28069_IG19
;; size=96 bbWeight=0.50 PerfScore 12.50
-G_M28069_IG18: ; bbWeight=3.96, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
+G_M28069_IG17: ; bbWeight=3.96, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
; byrRegs -[x0] add w0, w22, #2 ldr w1, [fp, #-0x40] // [V24 tmp17] cmp w0, w1
- bhs G_M28069_IG30
+ bhs G_M28069_IG29
ldr x1, [fp, #-0x48] // [V23 tmp16] ; byrRegs +[x1] ubfiz x0, x0, #1, #32 @@ -279,32 +277,32 @@ G_M28069_IG18: ; bbWeight=3.96, gcrefRegs=180000 {x19 x20}, byrefRegs=800 strh w1, [x0] add w22, w22, #1 ...

benchmarks.run_pgo.linux.arm64.checked.mch

-40 (-34.48%) : 48249.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)

@@ -9,86 +9,73 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 3, 3 ) byref -> x20 this single-def -; V01 arg1 [V01,T00] ( 5, 4.50) ref -> x19 class-hnd single-def <System.Object>
+; V00 this [V00,T02] ( 3, 3 ) byref -> x0 this single-def +; V01 arg1 [V01,T00] ( 4, 4 ) ref -> x1 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> x0 class-hnd "spilling QMark2" <System.Reflection.MetadataImport>
+; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> x2 class-hnd "spilling QMark2" <System.Reflection.MetadataImport>
;* V04 tmp2 [V04 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Reflection.MetadataImport> ;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref "field V04.m_keepalive (fldOffset=0x0)" P-INDEP
-; V06 tmp4 [V06,T05] ( 2, 2 ) long -> x0 "field V04.m_metadataImport2 (fldOffset=0x8)" P-INDEP -; V07 cse0 [V07,T03] ( 4, 2.50) long -> x0 "CSE - aggressive" -; V08 cse1 [V08,T04] ( 3, 2 ) long -> x1 "CSE - aggressive"
+; V06 tmp4 [V06,T03] ( 2, 2 ) long -> x1 "field V04.m_metadataImport2 (fldOffset=0x8)" P-INDEP +; V07 cse0 [V07,T04] ( 2, 1 ) long -> x3 "CSE - moderate"
; ; Lcl frame size = 0 G_M38955_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]! - stp x19, x20, [sp, #0x10]
+ stp fp, lr, [sp, #-0x10]!
mov fp, sp
- mov x20, x0 - ; byrRegs +[x20] - mov x19, x1 - ; gcrRegs +[x19] - ;; size=20 bbWeight=1 PerfScore 3.50 -G_M38955_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz - mov x0, x19 - ; gcrRegs +[x0] - cbz x0, G_M38955_IG08
;; size=8 bbWeight=1 PerfScore 1.50
-G_M38955_IG03: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=100000 {x20}, byref, isz - ldr x1, [x0] - movz x0, #0xD1FFAB1E - ; gcrRegs -[x0] - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - cmp x1, x0 - bne G_M38955_IG08
+G_M38955_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0001 {x0}, byref, isz + ; gcrRegs +[x1] + ; byrRegs +[x0] + mov x2, x1 + ; gcrRegs +[x2] + cbnz x2, G_M38955_IG05 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M38955_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x1-x2] + ; byrRegs -[x0] + mov w0, wzr + ;; size=4 bbWeight=1 PerfScore 0.50 +G_M38955_IG04: ; bbWeight=1, epilog, nogc, extend + ldp fp, lr, [sp], #0x10 + ret lr + ;; size=8 bbWeight=1 PerfScore 2.00 +G_M38955_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0006 {x1 x2}, byrefRegs=0001 {x0}, gcvars, byref, isz + ; gcrRegs +[x1-x2] + ; byrRegs +[x0] + ldr x2, [x2] + ; gcrRegs -[x2] + movz x3, #0xD1FFAB1E + movk x3, #0xD1FFAB1E LSL #16 + movk x3, #0xD1FFAB1E LSL #32 + cmp x2, x3 + bne G_M38955_IG03
;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M38955_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
+G_M38955_IG06: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0001 {x0}, byref + ldr x1, [x1, #0x10] + ; gcrRegs -[x1] + ldr x0, [x0, #0x08] + ; byrRegs -[x0]
cmp x1, x0
- bne G_M38955_IG07 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M38955_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref - ldr x0, [x19, #0x10] - ldr x1, [x20, #0x08] - cmp x0, x1
cset x0, eq ;; size=16 bbWeight=1 PerfScore 7.00
-G_M38955_IG06: ; bbWeight=1, epilog, nogc, extend - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20
+G_M38955_IG07: ; bbWeight=1, epilog, nogc, extend + ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=1 PerfScore 3.00 -G_M38955_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, gcvars, byref - mov x1, x19 - ; gcrRegs +[x1] - bl CORINFO_HELP_UNBOX - ; gcrRegs -[x1] - b G_M38955_IG05 - ;; size=12 bbWeight=0.50 PerfScore 1.25 -G_M38955_IG08: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x19] - ; byrRegs -[x20] - mov w0, wzr - ;; size=4 bbWeight=0.25 PerfScore 0.12 -G_M38955_IG09: ; bbWeight=0.25, epilog, nogc, extend - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20 - ret lr - ;; size=12 bbWeight=0.25 PerfScore 0.75
+ ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 116, prolog size 12, PerfScore 21.62, instruction count 29, allocated bytes for code 116 (MethodHash=885867d4) for method System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 76, prolog size 8, PerfScore 17.50, instruction count 19, allocated bytes for code 76 (MethodHash=885867d4) for method System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 1
Epilog Count : 2 E bit : 0 X bit : 0 Vers : 0
- Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
+ Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -99,10 +86,7 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16] - 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! - E4 end - E4 end
+ 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
E4 end E4 end

-36 (-32.14%) : 89596.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)

@@ -9,85 +9,73 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 3, 3 ) byref -> x20 this single-def -; V01 arg1 [V01,T00] ( 5, 4.50) ref -> x19 class-hnd single-def <System.Object>
+; V00 this [V00,T02] ( 3, 3 ) byref -> x0 this single-def +; V01 arg1 [V01,T00] ( 4, 4 ) ref -> x1 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> x1 class-hnd "spilling QMark2" <System.Reflection.MetadataImport>
+; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> x2 class-hnd "spilling QMark2" <System.Reflection.MetadataImport>
;* V04 tmp2 [V04 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Reflection.MetadataImport> ;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref "field V04.m_keepalive (fldOffset=0x0)" P-INDEP
-; V06 tmp4 [V06,T05] ( 2, 2 ) long -> x0 "field V04.m_metadataImport2 (fldOffset=0x8)" P-INDEP -; V07 cse0 [V07,T03] ( 4, 2.50) long -> x0 "CSE - aggressive" -; V08 cse1 [V08,T04] ( 3, 2 ) long -> x1 "CSE - aggressive"
+; V06 tmp4 [V06,T03] ( 2, 2 ) long -> x1 "field V04.m_metadataImport2 (fldOffset=0x8)" P-INDEP +; V07 cse0 [V07,T04] ( 2, 1 ) long -> x3 "CSE - moderate"
; ; Lcl frame size = 0 G_M38955_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]! - stp x19, x20, [sp, #0x10]
+ stp fp, lr, [sp, #-0x10]!
mov fp, sp
- mov x20, x0 - ; byrRegs +[x20] - mov x19, x1 - ; gcrRegs +[x19] - ;; size=20 bbWeight=1 PerfScore 3.50 -G_M38955_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz - mov x1, x19 - ; gcrRegs +[x1] - cbz x1, G_M38955_IG08
;; size=8 bbWeight=1 PerfScore 1.50
-G_M38955_IG03: ; bbWeight=0.50, gcrefRegs=80002 {x1 x19}, byrefRegs=100000 {x20}, byref, isz - ldr x1, [x1] - ; gcrRegs -[x1] - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - cmp x1, x0 - bne G_M38955_IG08 - ;; size=24 bbWeight=0.50 PerfScore 3.00 -G_M38955_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz - cmp x1, x0
+G_M38955_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0001 {x0}, byref, isz + ; gcrRegs +[x1] + ; byrRegs +[x0] + mov x2, x1 + ; gcrRegs +[x2] + cbz x2, G_M38955_IG04 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M38955_IG03: ; bbWeight=0.50, gcrefRegs=0006 {x1 x2}, byrefRegs=0001 {x0}, byref, isz + ldr x2, [x2] + ; gcrRegs -[x2] + movz x3, #0xD1FFAB1E + movk x3, #0xD1FFAB1E LSL #16 + movk x3, #0xD1FFAB1E LSL #32 + cmp x2, x3
beq G_M38955_IG06
- ;; size=8 bbWeight=1 PerfScore 1.50 -G_M38955_IG05: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref - mov x1, x19 - ; gcrRegs +[x1] - bl CORINFO_HELP_UNBOX
+ ;; size=24 bbWeight=0.50 PerfScore 3.00 +G_M38955_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x1]
- ;; size=8 bbWeight=0.50 PerfScore 0.75 -G_M38955_IG06: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref - ldr x0, [x19, #0x10] - ldr x1, [x20, #0x08] - cmp x0, x1
+ ; byrRegs -[x0] + mov w0, wzr + ;; size=4 bbWeight=1 PerfScore 0.50 +G_M38955_IG05: ; bbWeight=1, epilog, nogc, extend + ldp fp, lr, [sp], #0x10 + ret lr + ;; size=8 bbWeight=1 PerfScore 2.00 +G_M38955_IG06: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0001 {x0}, gcvars, byref + ; gcrRegs +[x1] + ; byrRegs +[x0] + ldr x1, [x1, #0x10] + ; gcrRegs -[x1] + ldr x0, [x0, #0x08] + ; byrRegs -[x0] + cmp x1, x0
cset x0, eq ;; size=16 bbWeight=1 PerfScore 7.00 G_M38955_IG07: ; bbWeight=1, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20
+ ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=1 PerfScore 3.00 -G_M38955_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x19] - ; byrRegs -[x20] - mov w0, wzr - ;; size=4 bbWeight=0 PerfScore 0.00 -G_M38955_IG09: ; bbWeight=0, epilog, nogc, extend - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20 - ret lr - ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 112, prolog size 12, PerfScore 20.25, instruction count 28, allocated bytes for code 112 (MethodHash=885867d4) for method System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 76, prolog size 8, PerfScore 17.50, instruction count 19, allocated bytes for code 76 (MethodHash=885867d4) for method System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 1
Epilog Count : 2 E bit : 0 X bit : 0 Vers : 0
- Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
+ Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -98,10 +86,7 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16] - 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! - E4 end - E4 end
+ 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
E4 end E4 end

-32 (-20.51%) : 130937.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan1[uint]):int (Tier1)

@@ -5,19 +5,21 @@ ; optimized using Dynamic PGO ; fp based frame ; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 8512
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 8512
; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]> ;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
-; V02 loc0 [V02,T02] ( 7, 6.96) int -> x4
+; V02 loc0 [V02,T00] ( 7, 6.96) int -> x4
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T00] ( 6, 11.74) int -> x5 "dup spill" -; V05 tmp2 [V05,T05] ( 3, 2.97) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP -; V06 tmp3 [V06,T03] ( 5, 4.00) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP -; V07 tmp4 [V07,T06] ( 3, 2.97) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP -; V08 tmp5 [V08,T01] ( 6, 4.97) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP -; V09 cse0 [V09,T04] ( 6, 5.90) long -> x6 multi-def "CSE - aggressive"
+; V04 tmp1 [V04,T05] ( 2, 3.99) int -> x4 "dup spill" +; V05 tmp2 [V05,T03] ( 2, 2.00) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP +; V06 tmp3 [V06,T02] ( 4, 3.03) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP +; V07 tmp4 [V07,T04] ( 2, 2.00) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP +; V08 tmp5 [V08,T01] ( 5, 4.00) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP +; V09 cse0 [V09,T07] ( 3, 2.96) int -> x6 "CSE - aggressive" +; V10 cse1 [V10,T08] ( 3, 2.96) int -> x5 "CSE - aggressive" +; V11 cse2 [V11,T06] ( 3, 2.99) long -> x5 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -28,72 +30,63 @@ G_M264_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, n G_M264_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz ; byrRegs +[x0 x2] cmp w1, w3
- bne G_M264_IG09
+ bne G_M264_IG11
;; size=8 bbWeight=1 PerfScore 1.50 G_M264_IG03: ; bbWeight=0.97, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref sxtw w4, w3 ;; size=4 bbWeight=0.97 PerfScore 0.48 G_M264_IG04: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
- sub w5, w4, #1 - sxtw w4, w5 - tbnz w4, #31, G_M264_IG06 - ;; size=12 bbWeight=1.00 PerfScore 2.00
+ sub w4, w4, #1 + tbnz w4, #31, G_M264_IG09 + ;; size=8 bbWeight=1.00 PerfScore 1.50
G_M264_IG05: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz cmp w4, w1
- bhs G_M264_IG12 - ubfiz x6, x4, #2, #32 - ldr w7, [x0, x6]
+ bhs G_M264_IG14 + ubfiz x5, x4, #2, #32 + ldr w6, [x0, x5]
cmp w4, w3
- bhs G_M264_IG12 - ldr w6, [x2, x6] - cmp w7, w6
+ bhs G_M264_IG14 + ldr w5, [x2, x5] + cmp w6, w5
beq G_M264_IG04 ;; size=36 bbWeight=1.00 PerfScore 11.47
-G_M264_IG06: ; bbWeight=0.97, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz - tbnz w5, #31, G_M264_IG13 - cmp w5, w1 - bhs G_M264_IG12 - ubfiz x6, x5, #2, #32 - ldr w0, [x0, x6] - ; byrRegs -[x0] - cmp w5, w3 - bhs G_M264_IG12 - ldr w1, [x2, x6] - cmp w0, w1 - blo G_M264_IG10 - ;; size=40 bbWeight=0.97 PerfScore 12.11
+G_M264_IG06: ; bbWeight=0.97, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ; byrRegs -[x0 x2] + cmp w5, w6 + bhi G_M264_IG12 + ;; size=8 bbWeight=0.97 PerfScore 1.45
G_M264_IG07: ; bbWeight=0.74, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x2]
mov w0, #1 ;; size=4 bbWeight=0.74 PerfScore 0.37 G_M264_IG08: ; bbWeight=0.74, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.74 PerfScore 1.47
-G_M264_IG09: ; bbWeight=0.03, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M264_IG09: ; bbWeight=0.97, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + mov w0, wzr + ;; size=4 bbWeight=0.97 PerfScore 0.48 +G_M264_IG10: ; bbWeight=0.97, epilog, nogc, extend + ldp fp, lr, [sp], #0x10 + ret lr + ;; size=8 bbWeight=0.97 PerfScore 1.94 +G_M264_IG11: ; bbWeight=0.03, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
cmp w1, w3 bge G_M264_IG07 ;; size=8 bbWeight=0.03 PerfScore 0.05
-G_M264_IG10: ; bbWeight=0.26, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M264_IG12: ; bbWeight=0.26, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movn w0, #0 ;; size=4 bbWeight=0.26 PerfScore 0.13
-G_M264_IG11: ; bbWeight=0.26, epilog, nogc, extend
+G_M264_IG13: ; bbWeight=0.26, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.26 PerfScore 0.53
-G_M264_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M264_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0
- ;; size=4 bbWeight=0 PerfScore 0.00 -G_M264_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - mov w0, wzr - ;; size=4 bbWeight=0 PerfScore 0.00 -G_M264_IG14: ; bbWeight=0, epilog, nogc, extend - ldp fp, lr, [sp], #0x10 - ret lr
+ brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 156, prolog size 8, PerfScore 31.61, instruction count 39, allocated bytes for code 156 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
+; Total bytes of code 124, prolog size 8, PerfScore 22.88, instruction count 31, allocated bytes for code 124 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
; ============================================================ Unwind Info: @@ -104,7 +97,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 39 (0x00027) Actual length = 156 (0x00009c)
+ Function Length : 31 (0x0001f) Actual length = 124 (0x00007c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+16 (+6.56%) : 82712.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyDelaySignAttributeSetting():ubyte:this (Tier1)

@@ -9,19 +9,19 @@ ; 3 inlinees with PGO data; 8 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 9, 5 ) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol>
+; V00 this [V00,T00] ( 9, 5 ) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol>
;* V01 loc0 [V01,T09] ( 0, 0 ) ubyte -> zero-ref single-def
-; V02 loc1 [V02,T03] ( 5, 5 ) ubyte -> x20
+; V02 loc1 [V02,T06] ( 5, 3 ) ubyte -> x20
;* V03 loc2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]> ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
-; V06 tmp2 [V06,T06] ( 5, 4 ) ref -> x21 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]> -; V07 tmp3 [V07,T04] ( 3, 4.50) ref -> x1 single-def "CASTCLASS eval op1"
+; V06 tmp2 [V06,T05] ( 5, 4 ) ref -> x21 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]> +; V07 tmp3 [V07,T03] ( 3, 4.50) ref -> x1 single-def "CASTCLASS eval op1"
; V08 tmp4 [V08,T07] ( 3, 2.50) long -> x3 "fgMakeTemp is creating a new local variable"
-; V09 tmp5 [V09,T00] ( 5, 7.50) ref -> x2 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]> -; V10 tmp6 [V10,T05] ( 3, 4.50) ref -> x1 single-def "CASTCLASS eval op1" -; V11 tmp7 [V11,T08] ( 3, 2.50) long -> x3 "fgMakeTemp is creating a new local variable" -; V12 tmp8 [V12,T01] ( 5, 7.50) ref -> x2 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
+; V09 tmp5 [V09,T01] ( 5, 5.50) ref -> x2 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]> +; V10 tmp6 [V10,T04] ( 3, 4.50) ref -> x1 single-def "CASTCLASS eval op1" +; V11 tmp7 [V11,T08] ( 3, 2.50) long -> x2 "fgMakeTemp is creating a new local variable" +; V12 tmp8 [V12,T02] ( 5, 5.50) ref -> x3 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
;* V13 tmp9 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]> ; ; Lcl frame size = 8 @@ -38,16 +38,16 @@ G_M43843_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by mov w20, wzr ldr x21, [x19, #0x80] ; gcrRegs +[x21]
- cbz x21, G_M43843_IG14
+ cbz x21, G_M43843_IG12
ldrb w0, [x21, #0x18]
- tbz w0, #1, G_M43843_IG14
+ tbz w0, #1, G_M43843_IG12
;; size=20 bbWeight=1 PerfScore 8.50 G_M43843_IG03: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz ldr x1, [x21, #0x08] ; gcrRegs +[x1] mov x2, x1 ; gcrRegs +[x2]
- cbz x2, G_M43843_IG07
+ cbz x2, G_M43843_IG06
;; size=12 bbWeight=1 PerfScore 4.50 G_M43843_IG04: ; bbWeight=0.50, gcrefRegs=80006 {x1 x2 x19}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x21] @@ -56,7 +56,7 @@ G_M43843_IG04: ; bbWeight=0.50, gcrefRegs=80006 {x1 x2 x19}, byrefRegs=00 movk x3, #0xD1FFAB1E LSL #16 movk x3, #0xD1FFAB1E LSL #32 cmp x0, x3
- beq G_M43843_IG06
+ beq G_M43843_IG13
;; size=24 bbWeight=0.50 PerfScore 3.00 G_M43843_IG05: ; bbWeight=0.25, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref ; gcrRegs -[x2] @@ -65,60 +65,54 @@ G_M43843_IG05: ; bbWeight=0.25, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 ; gcrRegs -[x1] +[x0] mov x2, x0 ; gcrRegs +[x2]
- ;; size=12 bbWeight=0.25 PerfScore 0.50 -G_M43843_IG06: ; bbWeight=1, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - ldrb w20, [x2, #0x84] - ;; size=4 bbWeight=1 PerfScore 3.00 -G_M43843_IG07: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x2] - cbnz w20, G_M43843_IG12
+ b G_M43843_IG13 + ;; size=16 bbWeight=0.25 PerfScore 0.75 +G_M43843_IG06: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x0 x2] + cbnz w20, G_M43843_IG10
ldr x0, [x19, #0x88] ; gcrRegs +[x0]
- cbz x0, G_M43843_IG15
+ cbz x0, G_M43843_IG14
;; size=12 bbWeight=1 PerfScore 5.00
-G_M43843_IG08: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M43843_IG07: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] ldr x0, [x19, #0x88] ; gcrRegs +[x0] ldr x1, [x0, #0x08] ; gcrRegs +[x1]
- mov x2, x1 - ; gcrRegs +[x2] - cbz x2, G_M43843_IG12
+ mov x3, x1 + ; gcrRegs +[x3] + cbz x3, G_M43843_IG10
;; size=16 bbWeight=1 PerfScore 7.50
-G_M43843_IG09: ; bbWeight=0.50, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz
+G_M43843_IG08: ; bbWeight=0.50, gcrefRegs=000A {x1 x3}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0 x19]
- ldr x0, [x2] - movz x3, #0xD1FFAB1E - movk x3, #0xD1FFAB1E LSL #16 - movk x3, #0xD1FFAB1E LSL #32 - cmp x0, x3 - beq G_M43843_IG11
+ ldr x0, [x3] + movz x2, #0xD1FFAB1E + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + cmp x0, x2 + beq G_M43843_IG15
;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M43843_IG10: ; bbWeight=0.25, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref - ; gcrRegs -[x2] - mov x0, x3
+G_M43843_IG09: ; bbWeight=0.25, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref + ; gcrRegs -[x3] + mov x0, x2
bl CORINFO_HELP_CHKCASTCLASS_SPECIAL ; gcrRegs -[x1] +[x0]
- mov x2, x0 - ; gcrRegs +[x2] - ;; size=12 bbWeight=0.25 PerfScore 0.50 -G_M43843_IG11: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - ldrb w20, [x2, #0x84] - ;; size=4 bbWeight=1 PerfScore 3.00 -G_M43843_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x2]
+ mov x3, x0 + ; gcrRegs +[x3] + b G_M43843_IG15 + ;; size=16 bbWeight=0.25 PerfScore 0.75 +G_M43843_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0 x3]
mov w0, w20 ;; size=4 bbWeight=1 PerfScore 0.50
-G_M43843_IG13: ; bbWeight=1, epilog, nogc, extend
+G_M43843_IG11: ; bbWeight=1, epilog, nogc, extend
ldr x21, [sp, #0x28] ldp x19, x20, [sp, #0x18] ldp fp, lr, [sp], #0x30 ret lr ;; size=16 bbWeight=1 PerfScore 5.00
-G_M43843_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M43843_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x19] mov x0, x19 ; gcrRegs +[x0] @@ -132,8 +126,13 @@ G_M43843_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 ; gcrRegs +[x21] b G_M43843_IG03 ;; size=32 bbWeight=0 PerfScore 0.00
-G_M43843_IG15: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ; gcrRegs -[x21]
+G_M43843_IG13: ; bbWeight=0, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref + ; gcrRegs -[x21] +[x2] + ldrb w20, [x2, #0x84] + b G_M43843_IG06 + ;; size=8 bbWeight=0 PerfScore 0.00 +G_M43843_IG14: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + ; gcrRegs -[x2]
add x1, x19, #136 ; byrRegs +[x1] mov x0, x19 @@ -145,10 +144,15 @@ G_M43843_IG15: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by blr x2 ; gcrRegs -[x0] ; byrRegs -[x1]
- b G_M43843_IG08
+ b G_M43843_IG07
;; size=32 bbWeight=0 PerfScore 0.00
+G_M43843_IG15: ; bbWeight=0, gcrefRegs=0008 {x3}, byrefRegs=0000 {}, byref + ; gcrRegs -[x19] +[x3] + ldrb w20, [x3, #0x84] + b G_M43843_IG10 + ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 244, prolog size 16, PerfScore 48.00, instruction count 61, allocated bytes for code 244 (MethodHash=f14d54bc) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyDelaySignAttributeSetting():ubyte:this (Tier1)
+; Total bytes of code 260, prolog size 16, PerfScore 42.50, instruction count 65, allocated bytes for code 260 (MethodHash=f14d54bc) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyDelaySignAttributeSetting():ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -159,7 +163,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 61 (0x0003d) Actual length = 244 (0x0000f4)
+ Function Length : 65 (0x00041) Actual length = 260 (0x000104)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+36 (+8.11%) : 135054.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:TryMatch(byref,int,byref,uint,byref):ubyte:this (Tier1)

@@ -5,22 +5,22 @@ ; optimized using Dynamic PGO ; fp based frame ; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 41032
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 41032
; 8 inlinees with PGO data; 19 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 3, 3 ) ref -> x20 this class-hnd single-def <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]> -; V01 arg1 [V01,T03] ( 3, 3 ) byref -> x21 single-def -; V02 arg2 [V02,T00] ( 5, 4 ) int -> x19 single-def -; V03 arg3 [V03,T04] ( 3, 3 ) byref -> x22 single-def
+; V00 this [V00,T02] ( 4, 3 ) ref -> x20 this class-hnd single-def <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]> +; V01 arg1 [V01,T03] ( 4, 3 ) byref -> x21 single-def +; V02 arg2 [V02,T00] ( 6, 4 ) int -> x19 single-def +; V03 arg3 [V03,T04] ( 4, 3 ) byref -> x22 single-def
; V04 arg4 [V04,T06] ( 3, 3 ) int -> x4 single-def ; V05 arg5 [V05,T05] ( 3, 3 ) byref -> x23 single-def
-; V06 loc0 [V06,T08] ( 3, 3 ) int -> x24 -; V07 loc1 [V07,T10] ( 2, 2 ) byref -> x22
+; V06 loc0 [V06,T09] ( 4, 3 ) int -> x24 +; V07 loc1 [V07,T10] ( 4, 2 ) byref -> x25
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V09 tmp1 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V10 tmp2 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V11 tmp3 [V11,T07] ( 3, 4 ) int -> x25 "Inlining Arg"
+; V11 tmp3 [V11,T07] ( 4, 4 ) int -> x26 "Inlining Arg"
;* V12 tmp4 [V12 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V13 tmp5 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V14 tmp6 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -29,7 +29,7 @@ ;* V17 tmp9 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V18 tmp10 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V19 tmp11 [V19 ] ( 0, 0 ) byref -> zero-ref "Spilling op1 side effects for Unsafe.ByteOffset"
-; V20 tmp12 [V20,T01] ( 8, 5 ) long -> x26 "Inline stloc first use temp"
+; V20 tmp12 [V20,T01] ( 10, 5 ) long -> x28 "Inline stloc first use temp"
;* V21 tmp13 [V21 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V22 tmp14 [V22 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V23 tmp15 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -61,16 +61,17 @@ ;* V49 tmp41 [V49 ] ( 0, 0 ) int -> zero-ref "field V18._length (fldOffset=0x8)" P-INDEP ;* V50 tmp42 [V50 ] ( 0, 0 ) byref -> zero-ref "field V25._reference (fldOffset=0x0)" P-INDEP ;* V51 tmp43 [V51 ] ( 0, 0 ) int -> zero-ref "field V25._length (fldOffset=0x8)" P-INDEP
-; V52 cse0 [V52,T09] ( 3, 3 ) long -> x22 "CSE - aggressive"
+; V52 cse0 [V52,T08] ( 5, 3 ) long -> x27 "CSE - aggressive"
; ; Lcl frame size = 0 G_M44984_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x50]!
+ stp fp, lr, [sp, #-0x60]!
stp x19, x20, [sp, #0x10] stp x21, x22, [sp, #0x20] stp x23, x24, [sp, #0x30] stp x25, x26, [sp, #0x40]
+ stp x27, x28, [sp, #0x50]
mov fp, sp mov x20, x0 ; gcrRegs +[x20] @@ -81,73 +82,52 @@ G_M44984_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x22] mov x23, x5 ; byrRegs +[x23]
- ;; size=44 bbWeight=1 PerfScore 8.00
+ ;; size=48 bbWeight=1 PerfScore 9.00
G_M44984_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=E00000 {x21 x22 x23}, byref, isz rbit w0, w4 clz w24, w0 tbnz w24, #0, G_M44984_IG08
- ;; size=12 bbWeight=1 PerfScore 2.50 -G_M44984_IG03: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=E00000 {x21 x22 x23}, byref, isz
sxtw x0, w24
- add x22, x22, x0
+ add x25, x22, x0 + ; byrRegs +[x25]
ldr x0, [x20, #0x10] ; gcrRegs +[x0]
- ldr w25, [x0, #0x08] - tbz w19, #31, G_M44984_IG04 - movz x0, #0xD1FFAB1E - ; gcrRegs -[x0] - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - movz x2, #0xD1FFAB1E // code for <unknown method> - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - ldr x2, [x2] - blr x2 - ; gcrRegs -[x20] - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - movz x2, #0xD1FFAB1E // code for <unknown method> - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - ldr x2, [x2] - blr x2 - ;; size=108 bbWeight=1 PerfScore 25.00 -G_M44984_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=E00000 {x21 x22 x23}, byref, isz - sub x22, x22, x21
+ ldr w26, [x0, #0x08] + tbnz w19, #31, G_M44984_IG09 + ;; size=32 bbWeight=1 PerfScore 10.50 +G_M44984_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=2A00000 {x21 x23 x25}, byref, isz + ; gcrRegs -[x0 x20]
; byrRegs -[x22]
- mov x26, x22 - tbnz x26, #63, G_M44984_IG09 - tbnz w26, #0, G_M44984_IG10 - ;; size=16 bbWeight=1 PerfScore 3.00
+ sub x27, x25, x21 + mov x28, x27 + tbnz x28, #63, G_M44984_IG10 + ;; size=12 bbWeight=1 PerfScore 2.00 +G_M44984_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref, isz + ; byrRegs -[x21 x25] + tbnz w28, #0, G_M44984_IG11 + ;; size=4 bbWeight=1 PerfScore 1.00
G_M44984_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref, isz
- ; byrRegs -[x21] - add x0, x26, x26, LSR #63
+ add x0, x28, x28, LSR #63
asr x0, x0, #1 sub w0, w19, w0
- cmp w0, w25 - blt G_M44984_IG11
+ cmp w0, w26 + blt G_M44984_IG12
;; size=20 bbWeight=1 PerfScore 4.00 G_M44984_IG06: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref
- lsr x0, x22, #1
+ lsr x0, x27, #1
str w0, [x23] mov w0, #1 ;; size=12 bbWeight=1.00 PerfScore 2.50 G_M44984_IG07: ; bbWeight=1.00, epilog, nogc, extend
+ ldp x27, x28, [sp, #0x50]
ldp x25, x26, [sp, #0x40] ldp x23, x24, [sp, #0x30] ldp x21, x22, [sp, #0x20] ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x50
+ ldp fp, lr, [sp], #0x60
ret lr
- ;; size=24 bbWeight=1.00 PerfScore 6.00 -G_M44984_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=E00000 {x21 x22 x23}, gcvars, byref
+ ;; size=28 bbWeight=1.00 PerfScore 7.00 +G_M44984_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=E00000 {x21 x22 x23}, gcvars, byref, isz
; gcrRegs +[x20] ; byrRegs +[x21-x22] movz x0, #0xD1FFAB1E @@ -161,11 +141,17 @@ G_M44984_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100000 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
- b G_M44984_IG03 - ;; size=48 bbWeight=0 PerfScore 0.00 -G_M44984_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref, isz - ; gcrRegs -[x20] - ; byrRegs -[x21-x22]
+ sxtw x0, w24 + add x25, x22, x0 + ; byrRegs +[x25] + ldr x0, [x20, #0x10] + ; gcrRegs +[x0] + ldr w26, [x0, #0x08] + tbz w19, #31, G_M44984_IG03 + ;; size=64 bbWeight=0 PerfScore 0.00 +G_M44984_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=2A00000 {x21 x23 x25}, byref, isz + ; gcrRegs -[x0 x20] + ; byrRegs -[x22]
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -177,9 +163,23 @@ G_M44984_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, b movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
- tbz w26, #0, G_M44984_IG05 - ;; size=48 bbWeight=0 PerfScore 0.00
+ movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32 + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + movz x2, #0xD1FFAB1E // code for <unknown method> + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + ldr x2, [x2] + blr x2 + sub x27, x25, x21 + mov x28, x27 + tbz x28, #63, G_M44984_IG04 + ;; size=100 bbWeight=0 PerfScore 0.00
G_M44984_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref, isz
+ ; byrRegs -[x21 x25]
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -191,13 +191,27 @@ G_M44984_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, b movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
- add x0, x26, x26, LSR #63
+ tbz w28, #0, G_M44984_IG05 + ;; size=48 bbWeight=0 PerfScore 0.00 +G_M44984_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref, isz + movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32 + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + movz x2, #0xD1FFAB1E // code for <unknown method> + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + ldr x2, [x2] + blr x2 + add x0, x28, x28, LSR #63
asr x0, x0, #1 sub w0, w19, w0
- cmp w0, w25
+ cmp w0, w26
bge G_M44984_IG06 ;; size=64 bbWeight=0 PerfScore 0.00
-G_M44984_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref
+G_M44984_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -212,18 +226,18 @@ G_M44984_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, b b G_M44984_IG06 ;; size=48 bbWeight=0 PerfScore 0.00
-; Total bytes of code 444, prolog size 24, PerfScore 51.00, instruction count 111, allocated bytes for code 444 (MethodHash=d0aa5047) for method System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:TryMatch(byref,int,byref,uint,byref):ubyte:this (Tier1)
+; Total bytes of code 480, prolog size 28, PerfScore 36.00, instruction count 120, allocated bytes for code 480 (MethodHash=d0aa5047) for method System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:TryMatch(byref,int,byref,uint,byref):ubyte:this (Tier1)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
...

+20 (+8.20%) : 86693.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)

@@ -9,18 +9,18 @@ ; 3 inlinees with PGO data; 8 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 9, 5 ) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol> -; V01 loc0 [V01,T03] ( 5, 5 ) int -> x20
+; V00 this [V00,T00] ( 10, 5 ) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol> +; V01 loc0 [V01,T08] ( 5, 2 ) int -> x20
;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]> ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
-; V05 tmp2 [V05,T06] ( 5, 4 ) ref -> x21 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]> -; V06 tmp3 [V06,T04] ( 3, 4.50) ref -> x1 single-def "CASTCLASS eval op1" -; V07 tmp4 [V07,T07] ( 3, 2.50) long -> x3 "fgMakeTemp is creating a new local variable" -; V08 tmp5 [V08,T00] ( 5, 7.50) ref -> x2 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]> -; V09 tmp6 [V09,T05] ( 3, 4.50) ref -> x1 single-def "CASTCLASS eval op1" -; V10 tmp7 [V10,T08] ( 3, 2.50) long -> x3 "fgMakeTemp is creating a new local variable" -; V11 tmp8 [V11,T01] ( 5, 7.50) ref -> x2 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
+; V05 tmp2 [V05,T05] ( 5, 4 ) ref -> x21 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]> +; V06 tmp3 [V06,T03] ( 3, 4.50) ref -> x1 single-def "CASTCLASS eval op1" +; V07 tmp4 [V07,T06] ( 3, 2.50) long -> x3 "fgMakeTemp is creating a new local variable" +; V08 tmp5 [V08,T01] ( 5, 5.50) ref -> x2 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]> +; V09 tmp6 [V09,T04] ( 3, 4.50) ref -> x1 single-def "CASTCLASS eval op1" +; V10 tmp7 [V10,T07] ( 3, 2.50) long -> x2 "fgMakeTemp is creating a new local variable" +; V11 tmp8 [V11,T02] ( 5, 5.50) ref -> x3 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
;* V12 tmp9 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]> ; ; Lcl frame size = 8 @@ -37,16 +37,16 @@ G_M4380_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byr mov w20, wzr ldr x21, [x19, #0x80] ; gcrRegs +[x21]
- cbz x21, G_M4380_IG14
+ cbz x21, G_M4380_IG12
ldrb w0, [x21, #0x18]
- tbz w0, #1, G_M4380_IG14
+ tbz w0, #1, G_M4380_IG12
;; size=20 bbWeight=1 PerfScore 8.50 G_M4380_IG03: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz ldr x1, [x21, #0x08] ; gcrRegs +[x1] mov x2, x1 ; gcrRegs +[x2]
- cbz x2, G_M4380_IG07
+ cbz x2, G_M4380_IG06
;; size=12 bbWeight=1 PerfScore 4.50 G_M4380_IG04: ; bbWeight=0.50, gcrefRegs=80006 {x1 x2 x19}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x21] @@ -55,7 +55,7 @@ G_M4380_IG04: ; bbWeight=0.50, gcrefRegs=80006 {x1 x2 x19}, byrefRegs=000 movk x3, #0xD1FFAB1E LSL #16 movk x3, #0xD1FFAB1E LSL #32 cmp x0, x3
- beq G_M4380_IG06
+ beq G_M4380_IG13
;; size=24 bbWeight=0.50 PerfScore 3.00 G_M4380_IG05: ; bbWeight=0.25, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref ; gcrRegs -[x2] @@ -64,60 +64,53 @@ G_M4380_IG05: ; bbWeight=0.25, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 { ; gcrRegs -[x1] +[x0] mov x2, x0 ; gcrRegs +[x2]
- ;; size=12 bbWeight=0.25 PerfScore 0.50 -G_M4380_IG06: ; bbWeight=1, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - ldr w20, [x2, #0x80] - ;; size=4 bbWeight=1 PerfScore 3.00 -G_M4380_IG07: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x2]
+ b G_M4380_IG13 + ;; size=16 bbWeight=0.25 PerfScore 0.75 +G_M4380_IG06: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x0 x2]
ldr x0, [x19, #0x88] ; gcrRegs +[x0]
- cbz x0, G_M4380_IG15
+ cbz x0, G_M4380_IG14
;; size=8 bbWeight=1 PerfScore 4.00
-G_M4380_IG08: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M4380_IG07: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] ldr x0, [x19, #0x88] ; gcrRegs +[x0] ldr x1, [x0, #0x08] ; gcrRegs +[x1]
- mov x2, x1 - ; gcrRegs +[x2] - cbz x2, G_M4380_IG12
+ mov x3, x1 + ; gcrRegs +[x3] + cbz x3, G_M4380_IG10
;; size=16 bbWeight=1 PerfScore 7.50
-G_M4380_IG09: ; bbWeight=0.50, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz
+G_M4380_IG08: ; bbWeight=0.50, gcrefRegs=000A {x1 x3}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0 x19]
- ldr x0, [x2] - movz x3, #0xD1FFAB1E - movk x3, #0xD1FFAB1E LSL #16 - movk x3, #0xD1FFAB1E LSL #32 - cmp x0, x3 - beq G_M4380_IG11
+ ldr x0, [x3] + movz x2, #0xD1FFAB1E + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + cmp x0, x2 + beq G_M4380_IG15
;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M4380_IG10: ; bbWeight=0.25, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref - ; gcrRegs -[x2] - mov x0, x3
+G_M4380_IG09: ; bbWeight=0.25, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref + ; gcrRegs -[x3] + mov x0, x2
bl CORINFO_HELP_CHKCASTCLASS_SPECIAL ; gcrRegs -[x1] +[x0]
- mov x2, x0 - ; gcrRegs +[x2] - ;; size=12 bbWeight=0.25 PerfScore 0.50 -G_M4380_IG11: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - ldr w0, [x2, #0x80] - orr w20, w20, w0 - ;; size=8 bbWeight=1 PerfScore 3.50 -G_M4380_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x2]
+ mov x3, x0 + ; gcrRegs +[x3] + b G_M4380_IG15 + ;; size=16 bbWeight=0.25 PerfScore 0.75 +G_M4380_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0 x3]
mov w0, w20 ;; size=4 bbWeight=1 PerfScore 0.50
-G_M4380_IG13: ; bbWeight=1, epilog, nogc, extend
+G_M4380_IG11: ; bbWeight=1, epilog, nogc, extend
ldr x21, [sp, #0x28] ldp x19, x20, [sp, #0x18] ldp fp, lr, [sp], #0x30 ret lr ;; size=16 bbWeight=1 PerfScore 5.00
-G_M4380_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M4380_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x19] mov x0, x19 ; gcrRegs +[x0] @@ -131,8 +124,15 @@ G_M4380_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 { ; gcrRegs +[x21] b G_M4380_IG03 ;; size=32 bbWeight=0 PerfScore 0.00
-G_M4380_IG15: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ; gcrRegs -[x21]
+G_M4380_IG13: ; bbWeight=0, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x21] +[x2] + ldr w20, [x2, #0x80] + ldr x1, [x19, #0x88] + ; gcrRegs +[x1] + cbnz x1, G_M4380_IG07 + ;; size=12 bbWeight=0 PerfScore 0.00 +G_M4380_IG14: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + ; gcrRegs -[x1-x2]
add x1, x19, #136 ; byrRegs +[x1] mov x0, x19 @@ -144,10 +144,16 @@ G_M4380_IG15: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byr blr x2 ; gcrRegs -[x0] ; byrRegs -[x1]
- b G_M4380_IG08
+ b G_M4380_IG07
;; size=32 bbWeight=0 PerfScore 0.00
+G_M4380_IG15: ; bbWeight=0, gcrefRegs=0008 {x3}, byrefRegs=0000 {}, byref + ; gcrRegs -[x19] +[x3] + ldr w0, [x3, #0x80] + orr w20, w20, w0 + b G_M4380_IG10 + ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 244, prolog size 16, PerfScore 47.50, instruction count 61, allocated bytes for code 244 (MethodHash=64b3eee3) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)
+; Total bytes of code 264, prolog size 16, PerfScore 41.50, instruction count 66, allocated bytes for code 264 (MethodHash=64b3eee3) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)
; ============================================================ Unwind Info: @@ -158,7 +164,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 61 (0x0003d) Actual length = 244 (0x0000f4)
+ Function Length : 66 (0x00042) Actual length = 264 (0x000108)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

benchmarks.run_tiered.linux.arm64.checked.mch

-36 (-32.14%) : 6263.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)

@@ -8,87 +8,72 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 3, 2.50) byref -> x20 this single-def -; V01 arg1 [V01,T00] ( 5, 3.75) ref -> x19 class-hnd single-def <System.Object>
+; V00 this [V00,T02] ( 3, 2.50) byref -> x0 this single-def +; V01 arg1 [V01,T00] ( 4, 3.50) ref -> x1 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 4.50) ref -> x0 class-hnd "spilling QMark2" <System.Reflection.MetadataImport>
+; V03 tmp1 [V03,T01] ( 3, 4.50) ref -> x2 class-hnd "spilling QMark2" <System.Reflection.MetadataImport>
;* V04 tmp2 [V04 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Reflection.MetadataImport> ;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref "field V04.m_keepalive (fldOffset=0x0)" P-INDEP
-; V06 tmp4 [V06,T05] ( 2, 1 ) long -> x0 "field V04.m_metadataImport2 (fldOffset=0x8)" P-INDEP -; V07 cse0 [V07,T03] ( 4, 1.25) long -> x0 "CSE - moderate" -; V08 cse1 [V08,T04] ( 3, 1 ) long -> x1 "CSE - moderate"
+; V06 tmp4 [V06,T03] ( 2, 1 ) long -> x1 "field V04.m_metadataImport2 (fldOffset=0x8)" P-INDEP
; ; Lcl frame size = 0
-G_M38955_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG - stp fp, lr, [sp, #-0x20]! - stp x19, x20, [sp, #0x10]
+G_M38955_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG + stp fp, lr, [sp, #-0x10]!
mov fp, sp
- mov x20, x0 - ; byrRegs +[x20] - mov x19, x1 - ; gcrRegs +[x19] - ;; size=20 bbWeight=1 PerfScore 3.50 -G_M38955_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz - mov x0, x19 - ; gcrRegs +[x0] - cbz x0, G_M38955_IG04
;; size=8 bbWeight=1 PerfScore 1.50
-G_M38955_IG03: ; bbWeight=0.25, gcrefRegs=80001 {x0 x19}, byrefRegs=100000 {x20}, byref, isz - ldr x1, [x0] - movz x0, #0xD1FFAB1E - ; gcrRegs -[x0] - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - cmp x1, x0
+G_M38955_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0001 {x0}, byref, isz + ; gcrRegs +[x1] + ; byrRegs +[x0] + mov x2, x1 + ; gcrRegs +[x2] + cbz x2, G_M38955_IG04 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M38955_IG03: ; bbWeight=0.25, gcrefRegs=0006 {x1 x2}, byrefRegs=0001 {x0}, byref, isz + ldr x2, [x2] + ; gcrRegs -[x2] + movz x3, #0xD1FFAB1E + movk x3, #0xD1FFAB1E LSL #16 + movk x3, #0xD1FFAB1E LSL #32 + cmp x2, x3
beq G_M38955_IG06 ;; size=24 bbWeight=0.25 PerfScore 1.50 G_M38955_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19] - ; byrRegs -[x20]
+ ; gcrRegs -[x1] + ; byrRegs -[x0]
mov w0, wzr ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M38955_IG05: ; bbWeight=0.50, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20
+ ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 1.50 -G_M38955_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, gcvars, byref, isz - ; gcrRegs +[x19] - ; byrRegs +[x20] - cmp x1, x0 - beq G_M38955_IG08 - ;; size=8 bbWeight=0.50 PerfScore 0.75 -G_M38955_IG07: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref - mov x1, x19
+ ;; size=8 bbWeight=0.50 PerfScore 1.00 +G_M38955_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0001 {x0}, gcvars, byref
; gcrRegs +[x1]
- bl CORINFO_HELP_UNBOX
+ ; byrRegs +[x0] + ldr x1, [x1, #0x10]
; gcrRegs -[x1]
- ;; size=8 bbWeight=0.25 PerfScore 0.38 -G_M38955_IG08: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref - ldr x0, [x19, #0x10] - ldr x1, [x20, #0x08] - cmp x0, x1
+ ldr x0, [x0, #0x08] + ; byrRegs -[x0] + cmp x1, x0
cset x0, eq ;; size=16 bbWeight=0.50 PerfScore 3.50
-G_M38955_IG09: ; bbWeight=0.50, epilog, nogc, extend - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20
+G_M38955_IG07: ; bbWeight=0.50, epilog, nogc, extend + ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 1.50
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 112, prolog size 12, PerfScore 14.38, instruction count 28, allocated bytes for code 112 (MethodHash=885867d4) for method System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 76, prolog size 8, PerfScore 10.25, instruction count 19, allocated bytes for code 76 (MethodHash=885867d4) for method System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 1
Epilog Count : 2 E bit : 0 X bit : 0 Vers : 0
- Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
+ Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -99,10 +84,7 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16] - 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! - E4 end - E4 end
+ 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
E4 end E4 end

-36 (-21.95%) : 54999.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan1[uint]):int (Tier1)

@@ -11,12 +11,14 @@ ;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]> ; V02 loc0 [V02,T00] ( 7, 24.50) int -> x4 ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T01] ( 6, 20 ) int -> x5 "dup spill" -; V05 tmp2 [V05,T05] ( 3, 5.50) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP -; V06 tmp3 [V06,T04] ( 5, 7 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP -; V07 tmp4 [V07,T06] ( 3, 5.50) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP -; V08 tmp5 [V08,T03] ( 6, 7.50) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP -; V09 cse0 [V09,T02] ( 6, 13.50) long -> x6 multi-def "CSE - aggressive"
+; V04 tmp1 [V04,T01] ( 2, 16 ) int -> x4 "dup spill" +; V05 tmp2 [V05,T07] ( 2, 5 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP +; V06 tmp3 [V06,T04] ( 4, 6.50) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP +; V07 tmp4 [V07,T08] ( 2, 5 ) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP +; V08 tmp5 [V08,T03] ( 5, 7 ) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP +; V09 cse0 [V09,T05] ( 3, 8.50) int -> x6 "CSE - aggressive" +; V10 cse1 [V10,T06] ( 3, 8.50) int -> x5 "CSE - aggressive" +; V11 cse2 [V11,T02] ( 3, 12 ) long -> x5 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -33,51 +35,39 @@ G_M264_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs -[x0 x2] cmp w1, w3 blt G_M264_IG11
- b G_M264_IG09
+ b G_M264_IG07
;; size=12 bbWeight=0.50 PerfScore 1.25 G_M264_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref ; byrRegs +[x0 x2] sxtw w4, w3 ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M264_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
- sub w5, w4, #1 - sxtw w4, w5 - tbnz w4, #31, G_M264_IG06
+ sub w4, w4, #1 + tbnz w4, #31, G_M264_IG09
cmp w4, w1 bhs G_M264_IG13
- ubfiz x6, x4, #2, #32 - ldr w7, [x0, x6]
+ ubfiz x5, x4, #2, #32 + ldr w6, [x0, x5]
cmp w4, w3 bhs G_M264_IG13
- ldr w6, [x2, x6] - cmp w7, w6
+ ldr w5, [x2, x5] + cmp w6, w5
beq G_M264_IG05
- ;; size=48 bbWeight=4 PerfScore 54.00 -G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz - tbz w5, #31, G_M264_IG08 - mov w0, wzr - ; byrRegs -[x0]
+ ;; size=44 bbWeight=4 PerfScore 52.00 +G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ; byrRegs -[x0 x2] + cmp w5, w6 + bhi G_M264_IG11
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M264_IG07: ; bbWeight=0.50, epilog, nogc, extend
+G_M264_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov w0, #1 + ;; size=4 bbWeight=0.50 PerfScore 0.25 +G_M264_IG08: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M264_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, gcvars, byref, isz - ; byrRegs +[x0] - cmp w5, w1 - bhs G_M264_IG13 - ubfiz x6, x5, #2, #32 - ldr w0, [x0, x6] - ; byrRegs -[x0] - cmp w5, w3 - bhs G_M264_IG13 - ldr w1, [x2, x6] - cmp w0, w1 - blo G_M264_IG11 - ;; size=36 bbWeight=0.50 PerfScore 5.75 -G_M264_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; byrRegs -[x2] - mov w0, #1
+G_M264_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + mov w0, wzr
;; size=4 bbWeight=0.50 PerfScore 0.25 G_M264_IG10: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x10 @@ -96,7 +86,7 @@ G_M264_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 164, prolog size 8, PerfScore 68.50, instruction count 41, allocated bytes for code 164 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
+; Total bytes of code 128, prolog size 8, PerfScore 61.00, instruction count 32, allocated bytes for code 128 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
; ============================================================ Unwind Info: @@ -107,7 +97,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
+ Function Length : 32 (0x00020) Actual length = 128 (0x000080)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-20 (-6.94%) : 27729.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)

@@ -8,18 +8,19 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T08] ( 6, 4.02) ref -> x20 class-hnd single-def <int[]> -; V01 arg1 [V01,T10] ( 3, 3 ) int -> x1 single-def -; V02 arg2 [V02,T05] ( 6, 12 ) int -> x19 single-def -; V03 loc0 [V03,T00] ( 14,227 ) int -> x21 -; V04 loc1 [V04,T01] ( 10,134 ) int -> x2
+; V00 arg0 [V00,T09] ( 6, 4.02) ref -> x20 class-hnd single-def <int[]> +; V01 arg1 [V01,T11] ( 3, 3 ) int -> x1 single-def +; V02 arg2 [V02,T06] ( 6, 12 ) int -> x19 single-def +; V03 loc0 [V03,T00] ( 13,219 ) int -> x21 +; V04 loc1 [V04,T01] ( 7,122 ) int -> x2
; V05 loc2 [V05,T04] ( 3, 80.50) int -> x0
-; V06 loc3 [V06,T09] ( 4, 5 ) int -> x6
+; V06 loc3 [V06,T10] ( 4, 5 ) int -> x7
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T06] ( 2, 8 ) int -> x7 "Strict ordering of exceptions for Array store" -; V09 cse0 [V09,T07] ( 6, 7.50) long -> x5 multi-def "CSE - aggressive" -; V10 cse1 [V10,T03] ( 7, 85.01) int -> x3 hoist "CSE - aggressive" -; V11 cse2 [V11,T02] ( 10, 89.51) byref -> x4 hoist "CSE - aggressive"
+; V08 tmp1 [V08,T07] ( 2, 8 ) int -> x5 "Strict ordering of exceptions for Array store" +; V09 cse0 [V09,T05] ( 3, 34 ) int -> x5 "CSE - aggressive" +; V10 cse1 [V10,T08] ( 6, 7.50) long -> x6 multi-def "CSE - aggressive" +; V11 cse2 [V11,T03] ( 6, 83.01) int -> x3 hoist "CSE - aggressive" +; V12 cse3 [V12,T02] ( 9, 87.51) byref -> x4 hoist "CSE - aggressive"
; ; Lcl frame size = 8 @@ -49,7 +50,7 @@ G_M63260_IG04: ; bbWeight=8, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, ;; size=8 bbWeight=8 PerfScore 12.00 G_M63260_IG05: ; bbWeight=64, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz cmp w21, w3
- bhs G_M63260_IG16
+ bhs G_M63260_IG15
ldr w5, [x4, w21, UXTW #2] cmp w5, w0 ble G_M63260_IG03 @@ -62,46 +63,39 @@ G_M63260_IG07: ; bbWeight=8, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, ;; size=4 bbWeight=8 PerfScore 4.00 G_M63260_IG08: ; bbWeight=64, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz cmp w2, w21
- ble G_M63260_IG10
+ ble G_M63260_IG11
;; size=8 bbWeight=64 PerfScore 96.00 G_M63260_IG09: ; bbWeight=16, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz cmp w2, w3
- bhs G_M63260_IG16
+ bhs G_M63260_IG15
ldr w5, [x4, w2, UXTW #2] cmp w5, w0 bge G_M63260_IG07 ;; size=20 bbWeight=16 PerfScore 96.00
-G_M63260_IG10: ; bbWeight=8, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz - cmp w21, w2 - bge G_M63260_IG12 - ;; size=8 bbWeight=8 PerfScore 12.00 -G_M63260_IG11: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
+G_M63260_IG10: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
cmp w21, w3
- bhs G_M63260_IG16 - ubfiz x5, x21, #2, #32 - ldr w6, [x4, x5] - cmp w2, w3 - bhs G_M63260_IG16 - ldr w7, [x4, w2, UXTW #2] - str w7, [x4, x5] - str w6, [x4, w2, UXTW #2]
+ bhs G_M63260_IG15 + ubfiz x6, x21, #2, #32 + ldr w7, [x4, x6] + str w5, [x4, x6] + str w7, [x4, w2, UXTW #2]
b G_M63260_IG04
- ;; size=40 bbWeight=2 PerfScore 26.00 -G_M63260_IG12: ; bbWeight=8, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
+ ;; size=28 bbWeight=2 PerfScore 17.00 +G_M63260_IG11: ; bbWeight=8, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
cmp w21, w19
- beq G_M63260_IG14
+ beq G_M63260_IG13
;; size=8 bbWeight=8 PerfScore 12.00
-G_M63260_IG13: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
+G_M63260_IG12: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
cmp w21, w3
- bhs G_M63260_IG16 - ubfiz x5, x21, #2, #32 - ldr w6, [x4, x5] - str w0, [x4, x5]
+ bhs G_M63260_IG15 + ubfiz x6, x21, #2, #32 + ldr w7, [x4, x6] + str w0, [x4, x6]
cmp w19, w3
- bhs G_M63260_IG16 - str w6, [x4, w19, UXTW #2]
+ bhs G_M63260_IG15 + str w7, [x4, w19, UXTW #2]
;; size=32 bbWeight=0.50 PerfScore 4.50
-G_M63260_IG14: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M63260_IG13: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
; byrRegs -[x4] sub w2, w21, #1 mov x0, x20 @@ -125,20 +119,20 @@ G_M63260_IG14: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b ; gcrRegs -[x0 x20] ; gcr arg pop 0 ;; size=60 bbWeight=1 PerfScore 13.50
-G_M63260_IG15: ; bbWeight=1, epilog, nogc, extend
+G_M63260_IG14: ; bbWeight=1, epilog, nogc, extend
ldr x21, [sp, #0x28] ldp x19, x20, [sp, #0x18] ldp fp, lr, [sp], #0x30 add sp, sp, #64 ret lr ;; size=20 bbWeight=1 PerfScore 5.50
-G_M63260_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M63260_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 288, prolog size 32, PerfScore 668.66, instruction count 72, allocated bytes for code 288 (MethodHash=855f08e3) for method Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)
+; Total bytes of code 268, prolog size 32, PerfScore 647.66, instruction count 67, allocated bytes for code 268 (MethodHash=855f08e3) for method Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)
; ============================================================ Unwind Info: @@ -149,7 +143,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 72 (0x00048) Actual length = 288 (0x000120)
+ Function Length : 67 (0x00043) Actual length = 268 (0x00010c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+4 (+0.60%) : 22969.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)

@@ -106,11 +106,11 @@ G_M62513_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr ldr x0, [fp, #0x18] // [V00 this] ; gcrRegs +[x0] ldr w1, [x0, #0x14]
- cbz w1, G_M62513_IG18
+ cbz w1, G_M62513_IG19
ldr w1, [x0, #0x18] cbnz w1, G_M62513_IG10 str w21, [x0, #0x18]
- b G_M62513_IG18
+ b G_M62513_IG19
;; size=28 bbWeight=0.50 PerfScore 6.00 G_M62513_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x0] @@ -134,7 +134,7 @@ G_M62513_IG10: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b ; gcrRegs +[x0] sub w1, w21, w1 cmp w1, w23
- ble G_M62513_IG18
+ ble G_M62513_IG19
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 @@ -236,30 +236,33 @@ G_M62513_IG14: ; bbWeight=4, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, b ; gcrRegs +[x0] ldr w20, [x0, #0x14] cmp w20, #0
- ble G_M62513_IG15
+ ble G_M62513_IG16
sub w1, w24, #1 sxtw w22, w1 cmp w24, #0 bgt G_M62513_IG12 ;; size=32 bbWeight=4 PerfScore 36.00
-G_M62513_IG15: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+G_M62513_IG15: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
; gcrRegs -[x21]
- cmp w20, #0 - bgt G_M62513_IG16 - mov w1, wzr
b G_M62513_IG17
+ ;; size=4 bbWeight=0.50 PerfScore 0.50 +G_M62513_IG16: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz + cmp w20, #0 + bgt G_M62513_IG17 + mov w1, wzr + b G_M62513_IG18
;; size=16 bbWeight=0.50 PerfScore 1.50
-G_M62513_IG16: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M62513_IG17: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
asr w1, w23, #31 and w1, w1, #3 add w1, w1, w23 ldr w2, [x0, #0x18] add w1, w2, w1, ASR #2 ;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M62513_IG17: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M62513_IG18: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
str w1, [x0, #0x18] ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M62513_IG18: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+G_M62513_IG19: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
ldrb w1, [fp, #0x20] // [V08 loc3] cbz w1, G_M62513_IG03 ; GC ptr vars -{V00 V01} @@ -268,7 +271,7 @@ G_M62513_IG18: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b ; gcr arg pop 0 b G_M62513_IG03 ;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M62513_IG19: ; bbWeight=0, gcVars=0000000000000002 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+G_M62513_IG20: ; bbWeight=0, gcVars=0000000000000002 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
; GC ptr vars +{V00 V01} stp fp, lr, [sp, #-0x50]! stp x19, x20, [sp, #0x20] @@ -277,9 +280,9 @@ G_M62513_IG19: ; bbWeight=0, gcVars=0000000000000002 {V00}, gcrefRegs=000 add x3, fp, #96 str x3, [sp, #0x18] ;; size=24 bbWeight=0 PerfScore 0.00
-G_M62513_IG20: ; bbWeight=0, gcVars=0000000000000002 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M62513_IG21: ; bbWeight=0, gcVars=0000000000000002 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
ldrb w0, [fp, #0x20] // [V08 loc3]
- cbz w0, G_M62513_IG21
+ cbz w0, G_M62513_IG22
ldr x0, [fp, #0x18] // [V00 this] ; gcrRegs +[x0] ; GC ptr vars -{V00 V01} @@ -287,7 +290,7 @@ G_M62513_IG20: ; bbWeight=0, gcVars=0000000000000002 {V00}, gcrefRegs=000 ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=16 bbWeight=0 PerfScore 0.00
-G_M62513_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
+G_M62513_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
ldp x23, x24, [sp, #0x40] ldp x21, x22, [sp, #0x30] ldp x19, x20, [sp, #0x20] @@ -295,7 +298,7 @@ G_M62513_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ret lr ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 668, prolog size 48, PerfScore 215.00, instruction count 167, allocated bytes for code 668 (MethodHash=d51a0bce) for method System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
+; Total bytes of code 672, prolog size 48, PerfScore 215.50, instruction count 168, allocated bytes for code 672 (MethodHash=d51a0bce) for method System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
; ============================================================ Unwind Info: @@ -306,7 +309,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 152 (0x00098) Actual length = 608 (0x000260)
+ Function Length : 153 (0x00099) Actual length = 612 (0x000264)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -343,4 +346,4 @@ Unwind Info: *************** EH table for System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this 1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M62513_IG05..G_M62513_IG18) handled by [G_M62513_IG19..END) (fault)
+EH#0: try [G_M62513_IG05..G_M62513_IG19) handled by [G_M62513_IG20..END) (fault)
+4 (+0.89%) : 44500.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol+d__118:MoveNext():ubyte:this (Tier1)
@@ -8,29 +8,30 @@ ; 0 inlinees with PGO data; 6 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 17, 9.50) ref -> [fp+0x18] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol+<GetSecurityAttributes>d__118> -; V01 loc0 [V01,T04] ( 4, 2.50) ubyte -> registers
+; V00 this [V00,T00] ( 16, 9 ) ref -> [fp+0x18] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol+<GetSecurityAttributes>d__118> +; V01 loc0 [V01,T04] ( 4, 2.50) ubyte -> x2
; V02 loc1 [V02,T05] ( 3, 2.50) int -> x1 single-def ;* V03 loc2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <<unknown class>>
-; V04 loc3 [V04,T08] ( 3, 1.50) ref -> x19 class-hnd exact single-def <Microsoft.CodeAnalysis.SecurityWellKnownAttributeData>
+; V04 loc3 [V04,T08] ( 3, 1.50) ref -> x20 class-hnd exact single-def <Microsoft.CodeAnalysis.SecurityWellKnownAttributeData>
;* V05 loc4 [V05 ] ( 0, 0 ) struct (16) zero-ref multireg-ret <Microsoft.Cci.SecurityAttribute> ;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V07 tmp1 [V07,T06] ( 3, 2.25) ref -> x1 single-def "CASTCLASS eval op1"
-; V08 tmp2 [V08,T09] ( 3, 1.25) long -> x4 "fgMakeTemp is creating a new local variable"
+; V08 tmp2 [V08,T10] ( 3, 1.25) long -> x4 "fgMakeTemp is creating a new local variable"
; V09 tmp3 [V09,T02] ( 5, 3.75) ref -> x2 class-hnd "spilling QMark2" <<unknown class>> ;* V10 tmp4 [V10 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]> ;* V11 tmp5 [V11 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <Microsoft.Cci.SecurityAttribute> ;* V12 tmp6 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>> ;* V13 tmp7 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>> ; V14 tmp8 [V14,T01] ( 6, 6 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V15 tmp9 [V15,T10] ( 2, 1 ) ref -> x15 "field V05.<Attribute>k__BackingField (fldOffset=0x0)" P-INDEP -; V16 tmp10 [V16,T12] ( 2, 1 ) short -> x1 "field V05.<Action>k__BackingField (fldOffset=0x8)" P-INDEP -; V17 tmp11 [V17,T11] ( 2, 1 ) ref -> x20 single-def "field V10.array (fldOffset=0x0)" P-INDEP
+; V15 tmp9 [V15,T11] ( 2, 1 ) ref -> x15 "field V05.<Attribute>k__BackingField (fldOffset=0x0)" P-INDEP +; V16 tmp10 [V16,T13] ( 2, 1 ) short -> x1 "field V05.<Action>k__BackingField (fldOffset=0x8)" P-INDEP +; V17 tmp11 [V17,T12] ( 2, 1 ) ref -> x19 single-def "field V10.array (fldOffset=0x0)" P-INDEP
;* V18 tmp12 [V18 ] ( 0, 0 ) ref -> zero-ref "field V11.<Attribute>k__BackingField (fldOffset=0x0)" P-DEP ;* V19 tmp13 [V19 ] ( 0, 0 ) short -> zero-ref "field V11.<Action>k__BackingField (fldOffset=0x8)" P-DEP
-; V20 PSPSym [V20,T13] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[V] "PSPSym" -; V21 cse0 [V21,T03] ( 5, 2.50) ref -> x0 multi-def "CSE - aggressive" -; V22 cse1 [V22,T07] ( 4, 2 ) long -> x19 "CSE - aggressive"
+; V20 PSPSym [V20,T14] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[V] "PSPSym" +; V21 cse0 [V21,T09] ( 3, 1.50) ref -> x19 "CSE - moderate" +; V22 cse1 [V22,T03] ( 5, 2.50) ref -> x1 multi-def "CSE - aggressive" +; V23 cse2 [V23,T07] ( 4, 2 ) long -> x19 "CSE - aggressive"
; ; Lcl frame size = 24 @@ -57,14 +58,15 @@ G_M21908_IG03: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b G_M21908_IG04: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz movn w1, #0 str w1, [x0, #0x20]
- ldr x1, [x0, #0x08]
+ ldr x19, [x0, #0x08] + ; gcrRegs +[x19] + ldr x1, [x19, #0x08]
; gcrRegs +[x1]
- ldr x1, [x1, #0x08]
mov x2, x1 ; gcrRegs +[x2] cbz x2, G_M21908_IG11 ;; size=24 bbWeight=0.50 PerfScore 4.50
-G_M21908_IG05: ; bbWeight=0.25, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz
+G_M21908_IG05: ; bbWeight=0.25, gcrefRegs=80006 {x1 x2 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] ldr x3, [x2] movz x4, #0xD1FFAB1E @@ -73,7 +75,7 @@ G_M21908_IG05: ; bbWeight=0.25, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {} cmp x3, x4 beq G_M21908_IG07 ;; size=24 bbWeight=0.25 PerfScore 1.50
-G_M21908_IG06: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+G_M21908_IG06: ; bbWeight=0.12, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x2] mov x0, x4 bl CORINFO_HELP_CHKCASTCLASS_SPECIAL @@ -82,23 +84,17 @@ G_M21908_IG06: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, b mov x2, x0 ; gcrRegs +[x2] ;; size=12 bbWeight=0.12 PerfScore 0.25
-G_M21908_IG07: ; bbWeight=0.50, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref, isz
+G_M21908_IG07: ; bbWeight=0.50, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- ldr x19, [x2, #0x70] - ; gcrRegs +[x19] - cbz x19, G_M21908_IG11 - ldr x0, [fp, #0x18] // [V00 this] - ; gcrRegs +[x0] - ldr x1, [x0, #0x08] - ; gcrRegs +[x1] - ldr x20, [x1, #0x20]
+ ldr x20, [x2, #0x70]
; gcrRegs +[x20]
+ cbz x20, G_M21908_IG11 + ldr x19, [x19, #0x20]
movz x0, #0xD1FFAB1E
- ; gcrRegs -[x0]
movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 bl CORINFO_HELP_NEWSFAST
- ; gcrRegs -[x1-x2] +[x0]
+ ; gcrRegs -[x2] +[x0]
; gcr arg pop 0 mov x21, x0 ; gcrRegs +[x21] @@ -110,18 +106,18 @@ G_M21908_IG07: ; bbWeight=0.50, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, b str w0, [x21, #0x14] add x14, x21, #8 ; byrRegs +[x14]
- mov x15, x19 - ; gcrRegs +[x15] - bl CORINFO_HELP_ASSIGN_REF - ; gcrRegs -[x15 x19] - ; byrRegs -[x14] - add x14, x21, #56 - ; byrRegs +[x14]
mov x15, x20 ; gcrRegs +[x15] bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x15 x20] ; byrRegs -[x14]
+ add x14, x21, #56 + ; byrRegs +[x14] + mov x15, x19 + ; gcrRegs +[x15] + bl CORINFO_HELP_ASSIGN_REF + ; gcrRegs -[x15 x19] + ; byrRegs -[x14]
mov x0, x21 ; gcrRegs +[x0] movz x1, #0xD1FFAB1E // code for <unknown method> @@ -131,20 +127,20 @@ G_M21908_IG07: ; bbWeight=0.50, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, b blr x1 ; gcrRegs -[x21] ; gcr arg pop 0
- ldr x19, [fp, #0x18] // [V00 this] - ; gcrRegs +[x19] - add x14, x19, #24
+ ldr x1, [fp, #0x18] // [V00 this] + ; gcrRegs +[x1] + add x14, x1, #24
; byrRegs +[x14] mov x15, x0 ; gcrRegs +[x15] bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x0 x15] ; byrRegs -[x14]
- mov x0, x19
+ mov x0, x1
; gcrRegs +[x0]
- ;; size=124 bbWeight=0.50 PerfScore 16.50
+ ;; size=116 bbWeight=0.50 PerfScore 14.00
G_M21908_IG08: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x19]
+ ; gcrRegs -[x1]
movn w11, #2 str w11, [x0, #0x20] ldr x0, [x0, #0x18] @@ -157,50 +153,56 @@ G_M21908_IG08: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b ; gcrRegs -[x0] ; gcr arg pop 0 cbz w0, G_M21908_IG09
- ldr x20, [fp, #0x18] // [V00 this] - ; gcrRegs +[x20] - ldr x0, [x20, #0x18]
+ ldr x0, [fp, #0x18] // [V00 this]
; gcrRegs +[x0]
+ ldr x1, [x0, #0x18] + ; gcrRegs +[x1] + mov x0, x1
add x11, x19, #8 ldr x1, [x11]
+ ; gcrRegs -[x1]
blr x1 ; gcr arg pop 0 mov x15, x0 ; gcrRegs +[x15]
- add x14, x20, #40
+ ldr x0, [fp, #0x18] // [V00 this] + add x14, x0, #40
; byrRegs +[x14] bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x0 x15]
+ ; gcrRegs -[x15]
; byrRegs -[x14]
- strh w1, [x20, #0x30] - mov w0, #1 - str w0, [x20, #0x20] - mov w2, w0
+ strh w1, [x0, #0x30] + mov w11, #1 + str w11, [x0, #0x20] + sxtw w2, w11
b G_M21908_IG12
- ;; size=92 bbWeight=0.50 PerfScore 13.50
+ ;; size=100 bbWeight=0.50 PerfScore 14.75
G_M21908_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x20] - movn w0, #0 - ldr x20, [fp, #0x18] // [V00 this] - ; gcrRegs +[x20] - str w0, [x20, #0x20] - ldr x0, [x20, #0x18]
+ ; gcrRegs -[x0] + movn w11, #0 + ldr x0, [fp, #0x18] // [V00 this]
; gcrRegs +[x0]
- cbz x0, G_M21908_IG10
+ str w11, [x0, #0x20] + ldr x1, [x0, #0x18] + ; gcrRegs +[x1] + cbz x1, G_M21908_IG10 + mov x0, x1
add x11, x19, #16 ldr x1, [x11]
+ ; gcrRegs -[x1]
blr x1 ; gcrRegs -[x0] ; gcr arg pop 0
- ;; size=32 bbWeight=0.50 PerfScore 6.00 -G_M21908_IG10: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref - str xzr, [x20, #0x18] - ;; size=4 bbWeight=0.50 PerfScore 0.50
+ ;; size=36 bbWeight=0.50 PerfScore 6.25 +G_M21908_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ldr x0, [fp, #0x18] // [V00 this] + ; gcrRegs +[x0] + str xzr, [x0, #0x18] + ;; size=8 bbWeight=0.50 PerfScore 1.50
G_M21908_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x20] - mov w1, wzr - mov w2, w1 - ;; size=8 bbWeight=0.50 PerfScore 0.50
+ ; gcrRegs -[x0] + mov w2, wzr + ;; size=4 bbWeight=0.50 PerfScore 0.25
G_M21908_IG12: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; GC ptr vars -{V00} mov w0, w2 @@ -238,7 +240,7 @@ G_M21908_IG16: ; bbWeight=0, funclet epilog, nogc, extend ret lr ;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 448, prolog size 24, PerfScore 59.25, instruction count 112, allocated bytes for code 448 (MethodHash=1a3daa6b) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol+<GetSecurityAttributes>d__118:MoveNext():ubyte:this (Tier1)
+; Total bytes of code 452, prolog size 24, PerfScore 59.00, instruction count 113, allocated bytes for code 452 (MethodHash=1a3daa6b) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol+<GetSecurityAttributes>d__118:MoveNext():ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -249,7 +251,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 97 (0x00061) Actual length = 388 (0x000184)
+ Function Length : 98 (0x00062) Actual length = 392 (0x000188)
---- Epilog scopes ---- ---- Scope 0 ...

+16 (+1.39%) : 8134.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (Tier0-FullOpts)

@@ -11,10 +11,10 @@ ; V00 arg0 [V00,T07] ( 22, 23 ) ref -> x19 class-hnd single-def <System.Collections.Generic.List`1[System.String]> ; V01 loc0 [V01,T19] ( 7, 3.50) ref -> x20 class-hnd exact single-def <System.String> ; V02 loc1 [V02 ] ( 20, 54 ) struct (16) [fp-0x48] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Span`1[ushort]>
-; V03 loc2 [V03,T00] ( 39,149.08) int -> x22
+; V03 loc2 [V03,T00] ( 41,183.08) int -> x22
; V04 loc3 [V04,T22] ( 4, 2 ) int -> x0 ;* V05 loc4 [V05 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[ushort]>
-; V06 loc5 [V06,T06] ( 9, 25.50) int -> x21
+; V06 loc5 [V06,T06] ( 9, 25.50) int -> x23
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V08 tmp1 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> ; V09 tmp2 [V09,T04] ( 5, 28 ) ref -> x0 class-hnd exact "impAppendStmt" <System.String> @@ -44,12 +44,12 @@ ; V33 cse0 [V33,T14] ( 3, 10 ) int -> x0 "CSE - aggressive" ; V34 cse1 [V34,T28] ( 3, 1.50) long -> x24 "CSE - moderate" ; V35 cse2 [V35,T31] ( 2, 1 ) int -> x12 "CSE - moderate"
-; V36 cse3 [V36,T01] ( 3, 48 ) long -> x1 "CSE - aggressive"
+; V36 cse3 [V36,T02] ( 3, 48 ) long -> x1 "CSE - aggressive"
; V37 cse4 [V37,T11] ( 3, 12 ) long -> x1 "CSE - aggressive" ; V38 cse5 [V38,T12] ( 3, 12 ) int -> x2 "CSE - aggressive" ; V39 cse6 [V39,T10] ( 3, 12 ) ref -> x1 "CSE - aggressive"
-; V40 cse7 [V40,T03] ( 15, 30.54) int -> x21 "CSE - aggressive" -; V41 cse8 [V41,T02] ( 10, 46 ) byref -> x23 hoist multi-def "CSE - aggressive"
+; V40 cse7 [V40,T01] ( 17, 64.54) int -> x21 "CSE - aggressive" +; V41 cse8 [V41,T03] ( 10, 46 ) byref -> x23 hoist multi-def "CSE - aggressive"
; V42 cse9 [V42,T27] ( 3, 1.50) ref -> x1 "CSE - aggressive" ; V43 cse10 [V43,T17] ( 2, 8 ) int -> x3 "CSE - aggressive" ; V44 cse11 [V44,T13] ( 3, 11.88) int -> x0 "CSE - aggressive" @@ -77,19 +77,19 @@ G_M28069_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=56 bbWeight=1 PerfScore 10.50 G_M28069_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldr w0, [x19, #0x10]
- cbz w0, G_M28069_IG28
+ cbz w0, G_M28069_IG27
;; size=8 bbWeight=1 PerfScore 4.00 G_M28069_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldr x0, [x19, #0x08] ; gcrRegs +[x0] ldr w1, [x0, #0x08] cmp w1, #0
- bls G_M28069_IG30
+ bls G_M28069_IG29
ldr x20, [x0, #0x10] ; gcrRegs +[x20] ldr w21, [x20, #0x08] cmp w21, #100
- bgt G_M28069_IG28
+ bgt G_M28069_IG27
add w0, w21, #2 ; gcrRegs -[x0] mov w1, #2 @@ -116,109 +116,107 @@ G_M28069_IG05: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000 mov x1, sp ;; size=8 bbWeight=0.50 PerfScore 0.50 G_M28069_IG06: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- tbnz w0, #31, G_M28069_IG31
+ tbnz w0, #31, G_M28069_IG30
str x1, [fp, #-0x48] // [V23 tmp16] str w0, [fp, #-0x40] // [V24 tmp17] mov w22, wzr cmp w21, #0
- ble G_M28069_IG15
+ ble G_M28069_IG14
add x23, x20, #12 ; byrRegs +[x23] ;; size=28 bbWeight=0.50 PerfScore 2.75 G_M28069_IG07: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz ldrh w0, [x23, w22, UXTW #2] cmp w0, #39
- bne G_M28069_IG11
+ bne G_M28069_IG10
;; size=12 bbWeight=4 PerfScore 18.00 G_M28069_IG08: ; bbWeight=16, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz ldr w0, [fp, #-0x40] // [V24 tmp17] cmp w22, w0
- bhs G_M28069_IG30
+ bhs G_M28069_IG29
ldr x0, [fp, #-0x48] // [V23 tmp16] ; byrRegs +[x0] ubfiz x1, x22, #1, #32 add x0, x0, x1
+ cmp w22, w21 + bhs G_M28069_IG29
ldrh w1, [x23, x1] strh w1, [x0] add w22, w22, #1 cmp w21, w22
- ble G_M28069_IG09
+ ble G_M28069_IG27 + cmp w22, w21 + bhs G_M28069_IG29
ldrh w0, [x23, w22, UXTW #2] ; byrRegs -[x0] cmp w0, #39 bne G_M28069_IG08
- ;; size=56 bbWeight=16 PerfScore 280.00 -G_M28069_IG09: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz - cmp w21, w22 - bgt G_M28069_IG12 - ;; size=8 bbWeight=2 PerfScore 3.00 -G_M28069_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x19-x20] - ; byrRegs -[x23] - b G_M28069_IG28 - ;; size=4 bbWeight=0.50 PerfScore 0.50 -G_M28069_IG11: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz - ; gcrRegs +[x19-x20] - ; byrRegs +[x23]
+ ;; size=72 bbWeight=16 PerfScore 328.00 +G_M28069_IG09: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref + b G_M28069_IG11 + ;; size=4 bbWeight=4 PerfScore 4.00 +G_M28069_IG10: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
cmp w0, #121
- beq G_M28069_IG14
+ beq G_M28069_IG13
;; size=8 bbWeight=2 PerfScore 3.00
-G_M28069_IG12: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
+G_M28069_IG11: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
ldr w0, [fp, #-0x40] // [V24 tmp17] cmp w22, w0
- bhs G_M28069_IG30
+ bhs G_M28069_IG29
ldr x0, [fp, #-0x48] // [V23 tmp16] ; byrRegs +[x0] ubfiz x1, x22, #1, #32 add x0, x0, x1
+ cmp w22, w21 + bhs G_M28069_IG29
ldrh w1, [x23, x1] strh w1, [x0] add w22, w22, #1 cmp w21, w22 bgt G_M28069_IG07
- ;; size=44 bbWeight=4 PerfScore 52.00 -G_M28069_IG13: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+ ;; size=52 bbWeight=4 PerfScore 58.00 +G_M28069_IG12: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; byrRegs -[x0 x23]
- b G_M28069_IG15
+ b G_M28069_IG14
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M28069_IG14: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG13: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldr w0, [fp, #-0x40] // [V24 tmp17] cmp w22, w0
- bhs G_M28069_IG30
+ bhs G_M28069_IG29
ldr x0, [fp, #-0x48] // [V23 tmp16] ; byrRegs +[x0] mov w1, #121 strh w1, [x0, w22, UXTW #2] ;; size=24 bbWeight=0.50 PerfScore 3.50
-G_M28069_IG15: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG14: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x0] sub w0, w21, #1 cmp w0, w22
- ble G_M28069_IG28
+ ble G_M28069_IG27
add w0, w22, #1 cmp w0, w21
- bhs G_M28069_IG30
+ bhs G_M28069_IG29
add x23, x20, #12 ; byrRegs +[x23] add w0, w22, #1 ubfiz x24, x0, #1, #32 ldrh w0, [x23, x24] cmp w0, #121
- bne G_M28069_IG28
+ bne G_M28069_IG27
add w25, w22, #2 cmp w21, w25
- ble G_M28069_IG16
+ ble G_M28069_IG15
cmp w25, w21
- bhs G_M28069_IG30
+ bhs G_M28069_IG29
ldrh w0, [x23, w25, UXTW #2] cmp w0, #121
- beq G_M28069_IG28
+ beq G_M28069_IG27
;; size=80 bbWeight=0.50 PerfScore 9.25
-G_M28069_IG16: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
+G_M28069_IG15: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
add w0, w22, #3 ldr w1, [fp, #-0x40] // [V24 tmp17] cmp w0, w1
- blt G_M28069_IG17
+ blt G_M28069_IG16
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 @@ -232,11 +230,11 @@ G_M28069_IG16: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800 ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=52 bbWeight=0.50 PerfScore 5.75
-G_M28069_IG17: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
+G_M28069_IG16: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
add w0, w22, #1 ldr w1, [fp, #-0x40] // [V24 tmp17] cmp w0, w1
- bhs G_M28069_IG30
+ bhs G_M28069_IG29
ldr x0, [fp, #-0x48] // [V23 tmp16] ; byrRegs +[x0] mov w1, #121 @@ -244,7 +242,7 @@ G_M28069_IG17: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800 ldr w0, [fp, #-0x40] // [V24 tmp17] ; byrRegs -[x0] cmp w25, w0
- bhs G_M28069_IG30
+ bhs G_M28069_IG29
ldr x0, [fp, #-0x48] // [V23 tmp16] ; byrRegs +[x0] strh w1, [x0, w25, UXTW #2] @@ -252,7 +250,7 @@ G_M28069_IG17: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800 ; byrRegs -[x0] ldr w1, [fp, #-0x40] // [V24 tmp17] cmp w0, w1
- bhs G_M28069_IG30
+ bhs G_M28069_IG29
ldr x0, [fp, #-0x48] // [V23 tmp16] ; byrRegs +[x0] add w1, w22, #3 @@ -260,15 +258,15 @@ G_M28069_IG17: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800 strh w2, [x0, w1, UXTW #2] sxtw w22, w25 cmp w21, w22
- ble G_M28069_IG21 - tbnz w22, #31, G_M28069_IG20
+ ble G_M28069_IG20 + tbnz w22, #31, G_M28069_IG19
;; size=96 bbWeight=0.50 PerfScore 12.50
-G_M28069_IG18: ; bbWeight=3.96, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
+G_M28069_IG17: ; bbWeight=3.96, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
; byrRegs -[x0] add w0, w22, #2 ldr w1, [fp, #-0x40] // [V24 tmp17] cmp w0, w1
- bhs G_M28069_IG30
+ bhs G_M28069_IG29
ldr x1, [fp, #-0x48] // [V23 tmp16] ; byrRegs +[x1] ubfiz x0, x0, #1, #32 @@ -279,32 +277,32 @@ G_M28069_IG18: ; bbWeight=3.96, gcrefRegs=180000 {x19 x20}, byrefRegs=800 strh w1, [x0] add w22, w22, #1 ...

coreclr_tests.run.linux.arm64.checked.mch

-40 (-34.48%) : 322022.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)

@@ -9,83 +9,70 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 3 ) byref -> x0 this single-def
-; V01 arg1 [V01,T00] ( 5, 4.50) ref -> x19 class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 4, 4 ) ref -> x1 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> x1 class-hnd "spilling QMark2" <System.Int32> -; V04 tmp2 [V04,T03] ( 2, 4 ) int -> x20 "impAppendStmt" -; V05 cse0 [V05,T04] ( 4, 2.50) long -> x2 "CSE - aggressive" -; V06 cse1 [V06,T05] ( 3, 2 ) long -> x1 "CSE - aggressive"
+; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> x2 class-hnd "spilling QMark2" <System.Int32> +; V04 tmp2 [V04,T03] ( 2, 4 ) int -> x0 "impAppendStmt" +; V05 cse0 [V05,T04] ( 2, 1 ) long -> x3 "CSE - moderate"
; ; Lcl frame size = 0 G_M40448_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]! - stp x19, x20, [sp, #0x10]
+ stp fp, lr, [sp, #-0x10]!
mov fp, sp
- mov x19, x1 - ; gcrRegs +[x19] - ;; size=16 bbWeight=1 PerfScore 3.00 -G_M40448_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref, isz - ; byrRegs +[x0] - mov x1, x19 - ; gcrRegs +[x1] - cbz x1, G_M40448_IG08
;; size=8 bbWeight=1 PerfScore 1.50
-G_M40448_IG03: ; bbWeight=0.50, gcrefRegs=80002 {x1 x19}, byrefRegs=0001 {x0}, byref, isz - ldr x1, [x1] - ; gcrRegs -[x1] - movz x2, #0xD1FFAB1E - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - cmp x1, x2 - bne G_M40448_IG08 - ;; size=24 bbWeight=0.50 PerfScore 3.00 -G_M40448_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref, isz - ldr w20, [x0] - cmp x1, x2 - bne G_M40448_IG07 - ;; size=12 bbWeight=1 PerfScore 4.50 -G_M40448_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ; byrRegs -[x0] - ldr w0, [x19, #0x08] - cmp w20, w0 - cset x0, eq - ;; size=12 bbWeight=1 PerfScore 4.00 -G_M40448_IG06: ; bbWeight=1, epilog, nogc, extend - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20 - ret lr - ;; size=12 bbWeight=1 PerfScore 3.00 -G_M40448_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref - mov x1, x19
+G_M40448_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0001 {x0}, byref, isz
; gcrRegs +[x1]
- mov x0, x2 - bl CORINFO_HELP_UNBOX - ; gcrRegs -[x1] - b G_M40448_IG05 - ;; size=16 bbWeight=0.50 PerfScore 1.50 -G_M40448_IG08: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x19]
+ ; byrRegs +[x0] + mov x2, x1 + ; gcrRegs +[x2] + cbnz x2, G_M40448_IG05 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M40448_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x1-x2] + ; byrRegs -[x0]
mov w0, wzr
- ;; size=4 bbWeight=0.25 PerfScore 0.12 -G_M40448_IG09: ; bbWeight=0.25, epilog, nogc, extend - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20
+ ;; size=4 bbWeight=1 PerfScore 0.50 +G_M40448_IG04: ; bbWeight=1, epilog, nogc, extend + ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=0.25 PerfScore 0.75
+ ;; size=8 bbWeight=1 PerfScore 2.00 +G_M40448_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0006 {x1 x2}, byrefRegs=0001 {x0}, gcvars, byref, isz + ; gcrRegs +[x1-x2] + ; byrRegs +[x0] + ldr x2, [x2] + ; gcrRegs -[x2] + movz x3, #0xD1FFAB1E + movk x3, #0xD1FFAB1E LSL #16 + movk x3, #0xD1FFAB1E LSL #32 + cmp x2, x3 + bne G_M40448_IG03 + ;; size=24 bbWeight=0.50 PerfScore 3.00 +G_M40448_IG06: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0001 {x0}, byref + ldr w0, [x0] + ; byrRegs -[x0] + ldr w1, [x1, #0x08] + ; gcrRegs -[x1] + cmp w0, w1 + cset x0, eq + ;; size=16 bbWeight=1 PerfScore 7.00 +G_M40448_IG07: ; bbWeight=1, epilog, nogc, extend + ldp fp, lr, [sp], #0x10 + ret lr + ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 116, prolog size 12, PerfScore 21.38, instruction count 29, allocated bytes for code 116 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 76, prolog size 8, PerfScore 17.50, instruction count 19, allocated bytes for code 76 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (Tier1)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 1
Epilog Count : 2 E bit : 0 X bit : 0 Vers : 0
- Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
+ Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -96,10 +83,7 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16] - 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! - E4 end - E4 end
+ 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
E4 end E4 end

-36 (-32.14%) : 450314.dasm - System.UInt16:Equals(System.Object):ubyte:this (Tier1)

@@ -9,82 +9,70 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 3 ) byref -> x0 this single-def
-; V01 arg1 [V01,T00] ( 5, 4.50) ref -> x19 class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 4, 4 ) ref -> x1 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> x1 class-hnd "spilling QMark2" <System.UInt16> -; V04 tmp2 [V04,T03] ( 2, 4 ) int -> x20 "impAppendStmt" -; V05 cse0 [V05,T04] ( 4, 2.50) long -> x2 "CSE - aggressive" -; V06 cse1 [V06,T05] ( 3, 2 ) long -> x1 "CSE - aggressive"
+; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> x2 class-hnd "spilling QMark2" <System.UInt16> +; V04 tmp2 [V04,T03] ( 2, 4 ) int -> x0 "impAppendStmt" +; V05 cse0 [V05,T04] ( 2, 1 ) long -> x3 "CSE - moderate"
; ; Lcl frame size = 0 G_M3539_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]! - stp x19, x20, [sp, #0x10]
+ stp fp, lr, [sp, #-0x10]!
mov fp, sp
- mov x19, x1 - ; gcrRegs +[x19] - ;; size=16 bbWeight=1 PerfScore 3.00 -G_M3539_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref, isz - ; byrRegs +[x0] - mov x1, x19 - ; gcrRegs +[x1] - cbz x1, G_M3539_IG08
;; size=8 bbWeight=1 PerfScore 1.50
-G_M3539_IG03: ; bbWeight=0.50, gcrefRegs=80002 {x1 x19}, byrefRegs=0001 {x0}, byref, isz - ldr x1, [x1] - ; gcrRegs -[x1] - movz x2, #0xD1FFAB1E - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - cmp x1, x2 - bne G_M3539_IG08 - ;; size=24 bbWeight=0.50 PerfScore 3.00 -G_M3539_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref, isz - ldrh w20, [x0] - cmp x1, x2 - beq G_M3539_IG06 - ;; size=12 bbWeight=1 PerfScore 4.50 -G_M3539_IG05: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ; byrRegs -[x0] - mov x1, x19
+G_M3539_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0001 {x0}, byref, isz
; gcrRegs +[x1]
- mov x0, x2 - bl CORINFO_HELP_UNBOX
+ ; byrRegs +[x0] + mov x2, x1 + ; gcrRegs +[x2] + cbz x2, G_M3539_IG04 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M3539_IG03: ; bbWeight=0.50, gcrefRegs=0006 {x1 x2}, byrefRegs=0001 {x0}, byref, isz + ldr x2, [x2] + ; gcrRegs -[x2] + movz x3, #0xD1FFAB1E + movk x3, #0xD1FFAB1E LSL #16 + movk x3, #0xD1FFAB1E LSL #32 + cmp x2, x3 + beq G_M3539_IG06 + ;; size=24 bbWeight=0.50 PerfScore 3.00 +G_M3539_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x1]
- ;; size=12 bbWeight=0.50 PerfScore 1.00 -G_M3539_IG06: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ldrh w0, [x19, #0x08] - cmp w20, w0 - cset x0, eq - ;; size=12 bbWeight=1 PerfScore 4.00 -G_M3539_IG07: ; bbWeight=1, epilog, nogc, extend - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20 - ret lr - ;; size=12 bbWeight=1 PerfScore 3.00 -G_M3539_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x19]
+ ; byrRegs -[x0]
mov w0, wzr
- ;; size=4 bbWeight=0 PerfScore 0.00 -G_M3539_IG09: ; bbWeight=0, epilog, nogc, extend - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20
+ ;; size=4 bbWeight=1 PerfScore 0.50 +G_M3539_IG05: ; bbWeight=1, epilog, nogc, extend + ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=8 bbWeight=1 PerfScore 2.00 +G_M3539_IG06: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0001 {x0}, gcvars, byref + ; gcrRegs +[x1] + ; byrRegs +[x0] + ldrh w0, [x0] + ; byrRegs -[x0] + ldrh w1, [x1, #0x08] + ; gcrRegs -[x1] + cmp w0, w1 + cset x0, eq + ;; size=16 bbWeight=1 PerfScore 7.00 +G_M3539_IG07: ; bbWeight=1, epilog, nogc, extend + ldp fp, lr, [sp], #0x10 + ret lr + ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 112, prolog size 12, PerfScore 20.00, instruction count 28, allocated bytes for code 112 (MethodHash=135df22c) for method System.UInt16:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 76, prolog size 8, PerfScore 17.50, instruction count 19, allocated bytes for code 76 (MethodHash=135df22c) for method System.UInt16:Equals(System.Object):ubyte:this (Tier1)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 1
Epilog Count : 2 E bit : 0 X bit : 0 Vers : 0
- Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
+ Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -95,10 +83,7 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16] - 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! - E4 end - E4 end
+ 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
E4 end E4 end

-36 (-32.14%) : 450318.dasm - System.Int64:Equals(System.Object):ubyte:this (Tier1)

@@ -9,82 +9,70 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 3 ) byref -> x0 this single-def
-; V01 arg1 [V01,T00] ( 5, 4.50) ref -> x19 class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 4, 4 ) ref -> x1 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> x1 class-hnd "spilling QMark2" <System.Int64> -; V04 tmp2 [V04,T03] ( 2, 4 ) long -> x20 "impAppendStmt" -; V05 cse0 [V05,T04] ( 4, 2.50) long -> x2 "CSE - aggressive" -; V06 cse1 [V06,T05] ( 3, 2 ) long -> x1 "CSE - aggressive"
+; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> x2 class-hnd "spilling QMark2" <System.Int64> +; V04 tmp2 [V04,T03] ( 2, 4 ) long -> x0 "impAppendStmt" +; V05 cse0 [V05,T04] ( 2, 1 ) long -> x3 "CSE - moderate"
; ; Lcl frame size = 0 G_M22531_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]! - stp x19, x20, [sp, #0x10]
+ stp fp, lr, [sp, #-0x10]!
mov fp, sp
- mov x19, x1 - ; gcrRegs +[x19] - ;; size=16 bbWeight=1 PerfScore 3.00 -G_M22531_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref, isz - ; byrRegs +[x0] - mov x1, x19 - ; gcrRegs +[x1] - cbz x1, G_M22531_IG08
;; size=8 bbWeight=1 PerfScore 1.50
-G_M22531_IG03: ; bbWeight=0.50, gcrefRegs=80002 {x1 x19}, byrefRegs=0001 {x0}, byref, isz - ldr x1, [x1] - ; gcrRegs -[x1] - movz x2, #0xD1FFAB1E - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - cmp x1, x2 - bne G_M22531_IG08 - ;; size=24 bbWeight=0.50 PerfScore 3.00 -G_M22531_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref, isz - ldr x20, [x0] - cmp x1, x2 - beq G_M22531_IG06 - ;; size=12 bbWeight=1 PerfScore 4.50 -G_M22531_IG05: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ; byrRegs -[x0] - mov x1, x19
+G_M22531_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0001 {x0}, byref, isz
; gcrRegs +[x1]
- mov x0, x2 - bl CORINFO_HELP_UNBOX
+ ; byrRegs +[x0] + mov x2, x1 + ; gcrRegs +[x2] + cbz x2, G_M22531_IG04 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M22531_IG03: ; bbWeight=0.50, gcrefRegs=0006 {x1 x2}, byrefRegs=0001 {x0}, byref, isz + ldr x2, [x2] + ; gcrRegs -[x2] + movz x3, #0xD1FFAB1E + movk x3, #0xD1FFAB1E LSL #16 + movk x3, #0xD1FFAB1E LSL #32 + cmp x2, x3 + beq G_M22531_IG06 + ;; size=24 bbWeight=0.50 PerfScore 3.00 +G_M22531_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x1]
- ;; size=12 bbWeight=0.50 PerfScore 1.00 -G_M22531_IG06: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ldr x0, [x19, #0x08] - cmp x20, x0 - cset x0, eq - ;; size=12 bbWeight=1 PerfScore 4.00 -G_M22531_IG07: ; bbWeight=1, epilog, nogc, extend - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20 - ret lr - ;; size=12 bbWeight=1 PerfScore 3.00 -G_M22531_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x19]
+ ; byrRegs -[x0]
mov w0, wzr
- ;; size=4 bbWeight=0 PerfScore 0.00 -G_M22531_IG09: ; bbWeight=0, epilog, nogc, extend - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20
+ ;; size=4 bbWeight=1 PerfScore 0.50 +G_M22531_IG05: ; bbWeight=1, epilog, nogc, extend + ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=8 bbWeight=1 PerfScore 2.00 +G_M22531_IG06: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0001 {x0}, gcvars, byref + ; gcrRegs +[x1] + ; byrRegs +[x0] + ldr x0, [x0] + ; byrRegs -[x0] + ldr x1, [x1, #0x08] + ; gcrRegs -[x1] + cmp x0, x1 + cset x0, eq + ;; size=16 bbWeight=1 PerfScore 7.00 +G_M22531_IG07: ; bbWeight=1, epilog, nogc, extend + ldp fp, lr, [sp], #0x10 + ret lr + ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 112, prolog size 12, PerfScore 20.00, instruction count 28, allocated bytes for code 112 (MethodHash=0a0ca7fc) for method System.Int64:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 76, prolog size 8, PerfScore 17.50, instruction count 19, allocated bytes for code 76 (MethodHash=0a0ca7fc) for method System.Int64:Equals(System.Object):ubyte:this (Tier1)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 1
Epilog Count : 2 E bit : 0 X bit : 0 Vers : 0
- Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
+ Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -95,10 +83,7 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16] - 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! - E4 end - E4 end
+ 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
E4 end E4 end

+4 (+3.12%) : 450418.dasm - System.String:Equals(System.Object):ubyte:this (Tier1)

@@ -24,29 +24,26 @@ ; ; Lcl frame size = 0
-G_M41351_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M41351_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50 G_M41351_IG02: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x0-x1] cmp x0, x1
- beq G_M41351_IG08 - cbz x1, G_M41351_IG06
+ beq G_M41351_IG09 + cbnz x1, G_M41351_IG07
;; size=12 bbWeight=1 PerfScore 2.50
-G_M41351_IG03: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz - ldr x2, [x1] - movz x3, #0xD1FFAB1E - movk x3, #0xD1FFAB1E LSL #16 - movk x3, #0xD1FFAB1E LSL #32 - cmp x2, x3 - bne G_M41351_IG06 - ;; size=24 bbWeight=0.50 PerfScore 3.00 -G_M41351_IG04: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz - ldr w2, [x0, #0x08] - ldr w3, [x1, #0x08] - cmp w2, w3 - bne G_M41351_IG06
+G_M41351_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0-x1] + mov w0, wzr + ;; size=4 bbWeight=1 PerfScore 0.50 +G_M41351_IG04: ; bbWeight=1, epilog, nogc, extend + ldp fp, lr, [sp], #0x10 + ret lr + ;; size=8 bbWeight=1 PerfScore 2.00 +G_M41351_IG05: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs +[x0-x1]
add x0, x0, #12 ; gcrRegs -[x0] ; byrRegs +[x0] @@ -61,27 +58,37 @@ G_M41351_IG04: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, b ldr x3, [x3] blr x3 ; byrRegs -[x0-x1]
- ;; size=52 bbWeight=1 PerfScore 15.50 -G_M41351_IG05: ; bbWeight=1, epilog, nogc, extend
+ ;; size=36 bbWeight=1 PerfScore 8.00 +G_M41351_IG06: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-G_M41351_IG06: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - mov w0, wzr - ;; size=4 bbWeight=0.25 PerfScore 0.12 -G_M41351_IG07: ; bbWeight=0.25, epilog, nogc, extend - ldp fp, lr, [sp], #0x10 - ret lr - ;; size=8 bbWeight=0.25 PerfScore 0.50 -G_M41351_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M41351_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs +[x0-x1] + ldr x2, [x1] + movz x3, #0xD1FFAB1E + movk x3, #0xD1FFAB1E LSL #16 + movk x3, #0xD1FFAB1E LSL #32 + cmp x2, x3 + bne G_M41351_IG03 + ;; size=24 bbWeight=0.50 PerfScore 3.00 +G_M41351_IG08: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz + ldr w2, [x0, #0x08] + ldr w3, [x1, #0x08] + cmp w2, w3 + bne G_M41351_IG03 + b G_M41351_IG05 + ;; size=20 bbWeight=1 PerfScore 8.50 +G_M41351_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0-x1]
mov w0, #1 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M41351_IG09: ; bbWeight=0, epilog, nogc, extend
+G_M41351_IG10: ; bbWeight=0, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 128, prolog size 8, PerfScore 25.12, instruction count 32, allocated bytes for code 128 (MethodHash=c0685e78) for method System.String:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 132, prolog size 8, PerfScore 28.00, instruction count 33, allocated bytes for code 132 (MethodHash=c0685e78) for method System.String:Equals(System.Object):ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -92,7 +99,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 32 (0x00020) Actual length = 128 (0x000080)
+ Function Length : 33 (0x00021) Actual length = 132 (0x000084)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+4 (+3.85%) : 248642.dasm - Runtime_49101:Test(int,int,int,int,int,int,int,int,int,float,float,float,float,float,float,float,float,float,System.Numerics.Vector3):int (FullOpts)

@@ -26,12 +26,13 @@ ;* V15 arg15 [V15 ] ( 0, 0 ) float -> zero-ref single-def ;* V16 arg16 [V16 ] ( 0, 0 ) float -> zero-ref single-def ;* V17 arg17 [V17 ] ( 0, 0 ) float -> zero-ref single-def
-; V18 arg18 [V18,T02] ( 1, 1 ) simd12 -> [fp+0x20] HFA(float) single-def <System.Numerics.Vector3>
+; V18 arg18 [V18,T03] ( 1, 1 ) simd12 -> [fp+0x20] HFA(float) single-def <System.Numerics.Vector3>
;# V19 OutArgs [V19 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V20 tmp1 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V21 tmp2 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V22 cse0 [V22,T00] ( 3, 3 ) ref -> x1 "CSE - moderate" -; V23 rat0 [V23,T01] ( 3, 6 ) simd16 -> d16 "ReplaceWithLclVar is creating a new local variable"
+; V22 cse0 [V22,T00] ( 2, 2 ) int -> x0 "CSE - aggressive" +; V23 cse1 [V23,T01] ( 3, 1.50) ref -> x1 "CSE - moderate" +; V24 rat0 [V24,T02] ( 3, 6 ) simd16 -> d16 "ReplaceWithLclVar is creating a new local variable"
; ; Lcl frame size = 0 @@ -48,7 +49,10 @@ G_M16340_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, uminp v16.4s, v16.4s, v16.4s umov x0, v16.d[0] cmn x0, #1
- beq G_M16340_IG04
+ cset x0, eq + cbnz w0, G_M16340_IG05 + ;; size=40 bbWeight=1 PerfScore 10.50 +G_M16340_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 @@ -61,22 +65,22 @@ G_M16340_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, blr x2 ; gcrRegs -[x0] mov w0, #101
- ;; size=76 bbWeight=1 PerfScore 18.00 -G_M16340_IG03: ; bbWeight=1, epilog, nogc, extend
+ ;; size=40 bbWeight=0.50 PerfScore 4.00 +G_M16340_IG04: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr
- ;; size=8 bbWeight=1 PerfScore 2.00 -G_M16340_IG04: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=8 bbWeight=0.50 PerfScore 1.00 +G_M16340_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, #100 ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M16340_IG05: ; bbWeight=0.50, epilog, nogc, extend
+G_M16340_IG06: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00 RWD00 dq 3F8000003F800000h, 000000003F800000h
-; Total bytes of code 104, prolog size 8, PerfScore 22.75, instruction count 26, allocated bytes for code 104 (MethodHash=48a0c02b) for method Runtime_49101:Test(int,int,int,int,int,int,int,int,int,float,float,float,float,float,float,float,float,float,System.Numerics.Vector3):int (FullOpts)
+; Total bytes of code 108, prolog size 8, PerfScore 18.25, instruction count 27, allocated bytes for code 108 (MethodHash=48a0c02b) for method Runtime_49101:Test(int,int,int,int,int,int,int,int,int,float,float,float,float,float,float,float,float,float,System.Numerics.Vector3):int (FullOpts)
; ============================================================ Unwind Info: @@ -87,7 +91,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 26 (0x0001a) Actual length = 104 (0x000068)
+ 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 (+3.85%) : 504494.dasm - System.Reflection.RuntimeParameterInfo:GetParameters(System.IRuntimeMethodInfo,System.Reflection.MemberInfo,System.Signature):System.Reflection.ParameterInfo

@@ -9,17 +9,17 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 6, 5 ) ref -> x19 class-hnd single-def <System.IRuntimeMethodInfo>
+; V00 arg0 [V00,T00] ( 6, 5.50) ref -> x19 class-hnd single-def <System.IRuntimeMethodInfo>
; V01 arg1 [V01,T02] ( 3, 3 ) ref -> x20 class-hnd single-def <System.Reflection.MemberInfo> ; V02 arg2 [V02,T03] ( 3, 3 ) ref -> x21 class-hnd single-def <System.Signature> ; V03 loc0 [V03 ] ( 1, 1 ) ref -> [fp+0x10] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.Reflection.ParameterInfo> ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V05 tmp1 [V05,T01] ( 3, 5 ) ref -> x0 class-hnd "spilling QMark2" <<unknown class>> ; V06 tmp2 [V06,T06] ( 2, 1 ) int -> x0
-; V07 tmp3 [V07,T05] ( 3, 2.50) ref -> x0 class-hnd "spilling QMark2" <<unknown class>>
+; V07 tmp3 [V07,T04] ( 3, 4.50) ref -> x0 class-hnd "spilling QMark2" <<unknown class>>
;* V08 tmp4 [V08 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V09 tmp5 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V10 cse0 [V10,T04] ( 3, 3 ) ref -> x1 "CSE - aggressive"
+; V10 cse0 [V10,T05] ( 3, 3 ) ref -> x1 "CSE - aggressive"
; ; Lcl frame size = 8 @@ -39,30 +39,51 @@ G_M25265_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M25265_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz mov x0, x19 ; gcrRegs +[x0]
- cbz x0, G_M25265_IG04
+ cbnz x0, G_M25265_IG08
;; size=8 bbWeight=1 PerfScore 1.50
-G_M25265_IG03: ; bbWeight=0.50, gcrefRegs=380001 {x0 x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M25265_IG03: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x0] + mov x0, x19 + ; gcrRegs +[x0] + cbnz x0, G_M25265_IG06 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M25265_IG04: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x0] + cmp x19, #0 + cset x0, ne + tst w0, #255 + bne G_M25265_IG11 + ;; size=16 bbWeight=0.50 PerfScore 1.25 +G_M25265_IG05: ; bbWeight=0.44, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref + b G_M25265_IG10 + ;; size=4 bbWeight=0.44 PerfScore 0.44 +G_M25265_IG06: ; bbWeight=0.25, gcrefRegs=380001 {x0 x19 x20 x21}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[x0]
ldr x0, [x0] ; gcrRegs -[x0] movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 cmp x0, x1
- beq G_M25265_IG07 - ;; size=24 bbWeight=0.50 PerfScore 3.00 -G_M25265_IG04: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz - mov x0, x19
+ beq G_M25265_IG04 + ;; size=24 bbWeight=0.25 PerfScore 1.50 +G_M25265_IG07: ; bbWeight=0.12, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref + b G_M25265_IG10 + ;; size=4 bbWeight=0.12 PerfScore 0.12 +G_M25265_IG08: ; bbWeight=0.50, gcrefRegs=380001 {x0 x19 x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
- cbnz x0, G_M25265_IG09 - ;; size=8 bbWeight=0.50 PerfScore 0.75 -G_M25265_IG05: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+ ldr x0, [x0]
; gcrRegs -[x0]
- cmp x19, #0 - cset x0, ne - tst w0, #255 - bne G_M25265_IG07 - ;; size=16 bbWeight=0.50 PerfScore 1.25 -G_M25265_IG06: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
+ movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + cmp x0, x1 + bne G_M25265_IG03 + ;; size=24 bbWeight=0.50 PerfScore 3.00 +G_M25265_IG09: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref + b G_M25265_IG11 + ;; size=4 bbWeight=1 PerfScore 1.00 +G_M25265_IG10: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 @@ -75,7 +96,7 @@ G_M25265_IG06: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00 blr x2 ; gcrRegs -[x0] ;; size=36 bbWeight=1 PerfScore 7.50
-G_M25265_IG07: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
+G_M25265_IG11: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
add x3, fp, #16 // [V03 loc0] mov x0, x19 ; gcrRegs +[x0] @@ -91,27 +112,14 @@ G_M25265_IG07: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00 blr x5 ; gcrRegs -[x1-x2 x19-x21] ;; size=40 bbWeight=1 PerfScore 8.00
-G_M25265_IG08: ; bbWeight=1, epilog, nogc, extend
+G_M25265_IG12: ; bbWeight=1, epilog, nogc, extend
ldr x21, [sp, #0x28] ldp x19, x20, [sp, #0x18] ldp fp, lr, [sp], #0x30 ret lr ;; size=16 bbWeight=1 PerfScore 5.00
-G_M25265_IG09: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=380001 {x0 x19 x20 x21}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[x19-x21] - ldr x0, [x0] - ; gcrRegs -[x0] - movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - cmp x0, x1 - beq G_M25265_IG05 - ;; size=24 bbWeight=0.25 PerfScore 1.50 -G_M25265_IG10: ; bbWeight=0.12, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref - b G_M25265_IG06 - ;; size=4 bbWeight=0.12 PerfScore 0.12
-; Total bytes of code 208, prolog size 20, PerfScore 34.62, instruction count 52, allocated bytes for code 208 (MethodHash=500f9d4e) for method System.Reflection.RuntimeParameterInfo:GetParameters(System.IRuntimeMethodInfo,System.Reflection.MemberInfo,System.Signature):System.Reflection.ParameterInfo[] (Tier1)
+; Total bytes of code 216, prolog size 20, PerfScore 36.81, instruction count 54, allocated bytes for code 216 (MethodHash=500f9d4e) for method System.Reflection.RuntimeParameterInfo:GetParameters(System.IRuntimeMethodInfo,System.Reflection.MemberInfo,System.Signature):System.Reflection.ParameterInfo[] (Tier1)
; ============================================================ Unwind Info: @@ -122,7 +130,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 52 (0x00034) Actual length = 208 (0x0000d0)
+ Function Length : 54 (0x00036) Actual length = 216 (0x0000d8)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

libraries.crossgen2.linux.arm64.checked.mch

-48 (-26.09%) : 176291.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)

@@ -8,15 +8,17 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T04] ( 5, 7.50) ref -> x0 class-hnd single-def <System.String> -; V01 arg1 [V01,T02] ( 6, 11 ) ref -> x1 class-hnd single-def <System.String> -; V02 arg2 [V02,T05] ( 4, 6.50) int -> x2 single-def -; V03 arg3 [V03,T07] ( 5, 4.50) int -> x3 single-def -; V04 loc0 [V04,T03] ( 6, 13 ) int -> x5 -; V05 loc1 [V05,T00] ( 11, 27.50) int -> x6
+; V00 arg0 [V00,T04] ( 4, 7 ) ref -> x0 class-hnd single-def <System.String> +; V01 arg1 [V01,T02] ( 4, 10 ) ref -> x1 class-hnd single-def <System.String> +; V02 arg2 [V02,T07] ( 3, 6 ) int -> x2 single-def +; V03 arg3 [V03,T08] ( 5, 4.50) int -> x3 single-def +; V04 loc0 [V04,T01] ( 5, 12 ) int -> x5 +; V05 loc1 [V05,T00] ( 7, 25 ) int -> x6
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 cse0 [V07,T06] ( 5, 7 ) int -> x4 "CSE - aggressive" -; V08 cse1 [V08,T01] ( 6, 13.50) int -> x8 multi-def "CSE - aggressive"
+; V07 cse0 [V07,T05] ( 3, 8.50) int -> x8 "CSE - aggressive" +; V08 cse1 [V08,T06] ( 3, 8.50) int -> x7 "CSE - aggressive" +; V09 cse2 [V09,T09] ( 4, 6.50) int -> x4 "CSE - aggressive" +; V10 cse3 [V10,T03] ( 3, 12 ) int -> x8 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -38,11 +40,11 @@ G_M6389_IG03: ; bbWeight=2, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, by ;; size=4 bbWeight=2 PerfScore 1.00 G_M6389_IG04: ; bbWeight=8, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz cmp w6, w5
- bge G_M6389_IG06
+ bge G_M6389_IG08
;; size=8 bbWeight=8 PerfScore 12.00 G_M6389_IG05: ; bbWeight=4, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz cmp w6, w4
- bhs G_M6389_IG11
+ bhs G_M6389_IG10
add x7, x0, #12 ; byrRegs +[x7] ldrh w7, [x7, w6, UXTW #2] @@ -50,49 +52,30 @@ G_M6389_IG05: ; bbWeight=4, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, by add w8, w2, w6 ldr w9, [x1, #0x08] cmp w8, w9
- bhs G_M6389_IG11
+ bhs G_M6389_IG10
add x9, x1, #12 ; byrRegs +[x9] ldrh w8, [x9, w8, UXTW #2] cmp w7, w8 beq G_M6389_IG03 ;; size=48 bbWeight=4 PerfScore 60.00
-G_M6389_IG06: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
+G_M6389_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0-x1]
; byrRegs -[x9]
- cmp w6, w5 - bge G_M6389_IG09 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M6389_IG07: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz - cmp w6, w4 - bhs G_M6389_IG11 - add x0, x0, #12 - ; gcrRegs -[x0] - ; byrRegs +[x0] - ldrh w0, [x0, w6, UXTW #2] - ; byrRegs -[x0] - add w8, w2, w6 - ldr w3, [x1, #0x08] - cmp w8, w3 - bhs G_M6389_IG11 - add x4, x1, #12 - ; byrRegs +[x4] - ldrh w1, [x4, w8, UXTW #2] - ; gcrRegs -[x1] - sub w0, w0, w1 - ;; size=44 bbWeight=0.50 PerfScore 7.00 -G_M6389_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ sub w0, w7, w8 + ;; size=4 bbWeight=0.50 PerfScore 0.25 +G_M6389_IG07: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M6389_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; byrRegs -[x4]
+G_M6389_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
sub w0, w4, w3 ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M6389_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M6389_IG09: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M6389_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M6389_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
adrp x0, [HIGH RELOC #0xD1FFAB1E] // function address add x0, x0, [LOW RELOC #0xD1FFAB1E] ldr x0, [x0] @@ -101,7 +84,7 @@ G_M6389_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {} brk_unix #0 ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 184, prolog size 8, PerfScore 91.25, instruction count 46, allocated bytes for code 184 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
+; Total bytes of code 136, prolog size 8, PerfScore 83.00, instruction count 34, allocated bytes for code 136 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
; ============================================================ Unwind Info: @@ -112,7 +95,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 46 (0x0002e) Actual length = 184 (0x0000b8)
+ 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)

-36 (-20.45%) : 212588.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan1[uint]):int (FullOpts)

@@ -12,12 +12,14 @@ ;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]> ; V02 loc0 [V02,T00] ( 7, 24.50) int -> x4 ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T01] ( 6, 20 ) int -> x5 "dup spill" -; V05 tmp2 [V05,T05] ( 3, 5.50) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP -; V06 tmp3 [V06,T04] ( 5, 7 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP -; V07 tmp4 [V07,T06] ( 3, 5.50) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP -; V08 tmp5 [V08,T03] ( 6, 7.50) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP -; V09 cse0 [V09,T02] ( 6, 13.50) long -> x6 multi-def "CSE - aggressive"
+; V04 tmp1 [V04,T01] ( 2, 16 ) int -> x4 "dup spill" +; V05 tmp2 [V05,T07] ( 2, 5 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP +; V06 tmp3 [V06,T04] ( 4, 6.50) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP +; V07 tmp4 [V07,T08] ( 2, 5 ) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP +; V08 tmp5 [V08,T03] ( 5, 7 ) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP +; V09 cse0 [V09,T05] ( 3, 8.50) int -> x6 "CSE - aggressive" +; V10 cse1 [V10,T06] ( 3, 8.50) int -> x5 "CSE - aggressive" +; V11 cse2 [V11,T02] ( 3, 12 ) long -> x5 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -34,51 +36,39 @@ G_M264_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs -[x0 x2] cmp w1, w3 blt G_M264_IG11
- b G_M264_IG09
+ b G_M264_IG07
;; size=12 bbWeight=0.50 PerfScore 1.25 G_M264_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref ; byrRegs +[x0 x2] sxtw w4, w3 ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M264_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
- sub w5, w4, #1 - sxtw w4, w5 - tbnz w4, #31, G_M264_IG06
+ sub w4, w4, #1 + tbnz w4, #31, G_M264_IG09
cmp w4, w1 bhs G_M264_IG13
- ubfiz x6, x4, #2, #32 - ldr w7, [x0, x6]
+ ubfiz x5, x4, #2, #32 + ldr w6, [x0, x5]
cmp w4, w3 bhs G_M264_IG13
- ldr w6, [x2, x6] - cmp w7, w6
+ ldr w5, [x2, x5] + cmp w6, w5
beq G_M264_IG05
- ;; size=48 bbWeight=4 PerfScore 54.00 -G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz - tbz w5, #31, G_M264_IG08 - mov w0, wzr - ; byrRegs -[x0]
+ ;; size=44 bbWeight=4 PerfScore 52.00 +G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ; byrRegs -[x0 x2] + cmp w5, w6 + bhi G_M264_IG11
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M264_IG07: ; bbWeight=0.50, epilog, nogc, extend
+G_M264_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov w0, #1 + ;; size=4 bbWeight=0.50 PerfScore 0.25 +G_M264_IG08: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M264_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, gcvars, byref, isz - ; byrRegs +[x0] - cmp w5, w1 - bhs G_M264_IG13 - ubfiz x6, x5, #2, #32 - ldr w0, [x0, x6] - ; byrRegs -[x0] - cmp w5, w3 - bhs G_M264_IG13 - ldr w1, [x2, x6] - cmp w0, w1 - blo G_M264_IG11 - ;; size=36 bbWeight=0.50 PerfScore 5.75 -G_M264_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; byrRegs -[x2] - mov w0, #1
+G_M264_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + mov w0, wzr
;; size=4 bbWeight=0.50 PerfScore 0.25 G_M264_IG10: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x10 @@ -100,7 +90,7 @@ G_M264_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, brk_unix #0 ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 176, prolog size 8, PerfScore 68.50, instruction count 44, allocated bytes for code 176 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
+; Total bytes of code 140, prolog size 8, PerfScore 61.00, instruction count 35, allocated bytes for code 140 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
; ============================================================ Unwind Info: @@ -111,7 +101,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 44 (0x0002c) Actual length = 176 (0x0000b0)
+ 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)

-28 (-9.86%) : 140889.dasm - System.Data.ExpressionParser:ScanDate():this (FullOpts)

@@ -9,14 +9,15 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 11, 21 ) ref -> x0 this class-hnd single-def <System.Data.ExpressionParser>
-; V01 loc0 [V01,T04] ( 6, 14 ) ref -> x3 class-hnd single-def <<unknown class>>
+; V01 loc0 [V01,T04] ( 5, 13 ) ref -> x3 class-hnd single-def <<unknown class>>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T01] ( 3, 24 ) int -> x1 "index expr"
-; V04 tmp2 [V04,T05] ( 3, 6 ) int -> x1 "index expr" -; V05 tmp3 [V05,T06] ( 2, 0 ) ref -> x0 single-def "argument with side effect" -; V06 tmp4 [V06,T07] ( 2, 0 ) ref -> x0 single-def "argument with side effect" -; V07 cse0 [V07,T00] ( 9, 31 ) int -> x19 "CSE - aggressive" -; V08 cse1 [V08,T03] ( 5, 22 ) int -> x2 "CSE - aggressive"
+;* V04 tmp2 [V04,T06] ( 0, 0 ) int -> zero-ref "index expr" +; V05 tmp3 [V05,T07] ( 2, 0 ) ref -> x0 single-def "argument with side effect" +; V06 tmp4 [V06,T08] ( 2, 0 ) ref -> x0 single-def "argument with side effect" +; V07 cse0 [V07,T05] ( 3, 9 ) int -> x2 "CSE - aggressive" +; V08 cse1 [V08,T00] ( 7, 29 ) int -> x19 "CSE - aggressive" +; V09 cse2 [V09,T03] ( 3, 20 ) int -> x2 "CSE - aggressive"
; ; Lcl frame size = 8 @@ -36,22 +37,9 @@ G_M44374_IG03: ; bbWeight=8, gcrefRegs=0009 {x0 x3}, byrefRegs=0000 {}, b str w19, [x0, #0x30] ldr w2, [x3, #0x08] cmp w2, w19
- ble G_M44374_IG05
+ ble G_M44374_IG08
;; size=24 bbWeight=8 PerfScore 72.00 G_M44374_IG04: ; bbWeight=4, gcrefRegs=0009 {x0 x3}, byrefRegs=0000 {}, byref, isz
- sxtw w1, w19 - cmp w1, w2 - bhs G_M44374_IG07 - add x11, x3, #16 - ; byrRegs +[x11] - ldrh w1, [x11, w1, UXTW #2] - cmp w1, #35 - bne G_M44374_IG03 - ;; size=28 bbWeight=4 PerfScore 28.00 -G_M44374_IG05: ; bbWeight=1, gcrefRegs=0009 {x0 x3}, byrefRegs=0000 {}, byref, isz - ; byrRegs -[x11] - cmp w2, w19 - ble G_M44374_IG08
sxtw w1, w19 cmp w1, w2 bhs G_M44374_IG07 @@ -59,13 +47,17 @@ G_M44374_IG05: ; bbWeight=1, gcrefRegs=0009 {x0 x3}, byrefRegs=0000 {}, b ; byrRegs +[x2] ldrh w2, [x2, w1, UXTW #2] ; byrRegs -[x2]
+ cmp w2, #35 + bne G_M44374_IG03 + ;; size=28 bbWeight=4 PerfScore 28.00 +G_M44374_IG05: ; bbWeight=1, gcrefRegs=0009 {x0 x3}, byrefRegs=0000 {}, byref, isz
cmp w2, #35 bne G_M44374_IG09 mov w2, #7 str w2, [x0, #0x38] add w2, w19, #1 str w2, [x0, #0x30]
- ;; size=52 bbWeight=1 PerfScore 11.50
+ ;; size=24 bbWeight=1 PerfScore 4.50
G_M44374_IG06: ; bbWeight=1, epilog, nogc, extend ldr x19, [sp, #0x18] ldp fp, lr, [sp], #0x20 @@ -130,7 +122,7 @@ G_M44374_IG09: ; bbWeight=0, gcrefRegs=0009 {x0 x3}, byrefRegs=0000 {}, b brk_unix #0 ;; size=68 bbWeight=0 PerfScore 0.00
-; Total bytes of code 284, prolog size 12, PerfScore 121.00, instruction count 71, allocated bytes for code 284 (MethodHash=962252a9) for method System.Data.ExpressionParser:ScanDate():this (FullOpts)
+; Total bytes of code 256, prolog size 12, PerfScore 114.00, instruction count 64, allocated bytes for code 256 (MethodHash=962252a9) for method System.Data.ExpressionParser:ScanDate():this (FullOpts)
; ============================================================ Unwind Info: @@ -141,7 +133,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 71 (0x00047) Actual length = 284 (0x00011c)
+ Function Length : 64 (0x00040) Actual length = 256 (0x000100)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+4 (+3.23%) : 137524.dasm - System.Data.SqlTypes.SqlDecimal:Equals(System.Data.SqlTypes.SqlDecimal):ubyte:this (FullOpts)

@@ -15,6 +15,7 @@ ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V04 tmp1 [V04 ] ( 2, 1 ) ubyte -> [fp+0x28] do-not-enreg[X] addr-exposed "field V02.m_value (fldOffset=0x0)" P-DEP ; V05 tmp2 [V05 ] ( 2, 2 ) struct (24) [fp+0x10] do-not-enreg[XS] addr-exposed "by-value struct argument" <System.Data.SqlTypes.SqlDecimal>
+; V06 cse0 [V06,T02] ( 2, 2 ) int -> x11 "CSE - aggressive"
; ; Lcl frame size = 32 @@ -25,8 +26,9 @@ G_M26055_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 { G_M26055_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0003 {x0 x1}, byref, isz ; byrRegs +[x0-x1] ldrb w11, [x1]
- tbz w11, #0, G_M26055_IG05 - ;; size=8 bbWeight=1 PerfScore 4.00
+ and w11, w11, #1 + cbz w11, G_M26055_IG05 + ;; size=12 bbWeight=1 PerfScore 4.50
G_M26055_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0003 {x0 x1}, byref, isz ldrb w11, [x0] tbz w11, #0, G_M26055_IG07 @@ -71,7 +73,7 @@ G_M26055_IG08: ; bbWeight=0.50, epilog, nogc, extend ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 124, prolog size 8, PerfScore 23.25, instruction count 31, allocated bytes for code 124 (MethodHash=bd209a38) for method System.Data.SqlTypes.SqlDecimal:Equals(System.Data.SqlTypes.SqlDecimal):ubyte:this (FullOpts)
+; Total bytes of code 128, prolog size 8, PerfScore 23.75, instruction count 32, allocated bytes for code 128 (MethodHash=bd209a38) for method System.Data.SqlTypes.SqlDecimal:Equals(System.Data.SqlTypes.SqlDecimal):ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -82,7 +84,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 31 (0x0001f) Actual length = 124 (0x00007c)
+ Function Length : 32 (0x00020) Actual length = 128 (0x000080)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+8 (+4.35%) : 37896.dasm - System.Threading.PortableThreadPool:RemoveWaitThread(System.Threading.PortableThreadPool+WaitThread):this (FullOpts)

@@ -11,8 +11,8 @@ ; ; V00 this [V00,T03] ( 4, 3.50) ref -> x0 this class-hnd single-def <System.Threading.PortableThreadPool> ; V01 arg1 [V01,T01] ( 4, 7 ) ref -> x1 class-hnd single-def <System.Threading.PortableThreadPool+WaitThread>
-; V02 loc0 [V02,T00] ( 9, 19.50) ref -> registers class-hnd <System.Threading.PortableThreadPool+WaitThreadNode> -; V03 loc1 [V03,T02] ( 3, 8.50) ref -> x19 class-hnd exact <System.Threading.PortableThreadPool+WaitThreadNode>
+; V02 loc0 [V02,T00] ( 8, 19 ) ref -> registers class-hnd <System.Threading.PortableThreadPool+WaitThreadNode> +; V03 loc1 [V03,T02] ( 3, 8.50) ref -> registers class-hnd exact <System.Threading.PortableThreadPool+WaitThreadNode>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V06 tmp2 [V06 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -56,22 +56,33 @@ G_M1296_IG05: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=80002 { ; gcrRegs +[x1 x19] ldr x0, [x19, #0x10] ; gcrRegs +[x0]
- cbz x0, G_M1296_IG06
+ cbz x0, G_M1296_IG08
ldr x11, [x0, #0x08] ; gcrRegs +[x11] cmp x11, x1 bne G_M1296_IG07 ;; size=20 bbWeight=4 PerfScore 34.00
-G_M1296_IG06: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
+G_M1296_IG06: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x1 x11]
- cbnz x0, G_M1296_IG08
+ mov x14, x19 + ; gcrRegs +[x14] + mov x19, x0 + b G_M1296_IG09 + ;; size=12 bbWeight=0.50 PerfScore 1.00 +G_M1296_IG07: ; bbWeight=2, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref + ; gcrRegs -[x14 x19] +[x1] + mov x19, x0 + ; gcrRegs +[x19] + b G_M1296_IG05 + ;; size=8 bbWeight=2 PerfScore 3.00 +G_M1296_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0-x1 x19]
adrp x1, [HIGH RELOC #0xD1FFAB1E] // const ptr add x1, x1, [LOW RELOC #0xD1FFAB1E] ldr x1, [x1] ldr x1, [x1] ; gcrRegs +[x1] adrp x0, [HIGH RELOC #0xD1FFAB1E] // const ptr
- ; gcrRegs -[x0]
add x0, x0, [LOW RELOC #0xD1FFAB1E] ldr x0, [x0] ldr x0, [x0] @@ -80,36 +91,31 @@ G_M1296_IG06: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 { add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x2, [x11] blr x2
- ; gcrRegs -[x0-x1 x19]
+ ; gcrRegs -[x0-x1]
; gcr arg pop 0
- b G_M1296_IG09 - ;; size=56 bbWeight=0.50 PerfScore 10.50 -G_M1296_IG07: ; bbWeight=2, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref - ; gcrRegs +[x0-x1] - mov x19, x0 - ; gcrRegs +[x19] - b G_M1296_IG05 - ;; size=8 bbWeight=2 PerfScore 3.00 -G_M1296_IG08: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref - ; gcrRegs -[x1] - ldr x15, [x0, #0x10]
+ b G_M1296_IG10 + ;; size=52 bbWeight=0.50 PerfScore 10.00 +G_M1296_IG09: ; bbWeight=0.50, gcrefRegs=84000 {x14 x19}, byrefRegs=0000 {}, byref + ; gcrRegs +[x14 x19] + ldr x15, [x19, #0x10]
; gcrRegs +[x15]
- add x14, x19, #16
+ add x14, x14, #16 + ; gcrRegs -[x14]
; byrRegs +[x14] adrp x12, [HIGH RELOC #0xD1FFAB1E] // CORINFO_HELP_ASSIGN_REF add x12, x12, [LOW RELOC #0xD1FFAB1E] ldr x12, [x12] blr x12
- ; gcrRegs -[x0 x15 x19]
+ ; gcrRegs -[x15 x19]
; byrRegs -[x14] ;; size=24 bbWeight=0.50 PerfScore 4.25
-G_M1296_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M1296_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldr x19, [sp, #0x18] ldp fp, lr, [sp], #0x20 ret lr ;; size=12 bbWeight=0.50 PerfScore 2.00
-; Total bytes of code 184, prolog size 12, PerfScore 70.00, instruction count 46, allocated bytes for code 184 (MethodHash=2a35faef) for method System.Threading.PortableThreadPool:RemoveWaitThread(System.Threading.PortableThreadPool+WaitThread):this (FullOpts)
+; Total bytes of code 192, prolog size 12, PerfScore 70.50, instruction count 48, allocated bytes for code 192 (MethodHash=2a35faef) for method System.Threading.PortableThreadPool:RemoveWaitThread(System.Threading.PortableThreadPool+WaitThread):this (FullOpts)
; ============================================================ Unwind Info: @@ -120,7 +126,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 46 (0x0002e) Actual length = 184 (0x0000b8)
+ Function Length : 48 (0x00030) Actual length = 192 (0x0000c0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+32 (+8.25%) : 42001.dasm - Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)

@@ -8,7 +8,7 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 7, 4.50) ref -> x20 this class-hnd single-def <Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]>
+; V00 this [V00,T01] ( 6, 4 ) ref -> x20 this class-hnd single-def <Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]>
; V01 arg1 [V01,T00] ( 7, 4.75) ref -> x19 class-hnd single-def <System.Object> ; V02 arg2 [V02,T03] ( 3, 2.50) ref -> x21 class-hnd single-def <System.Collections.IComparer> ; V03 loc0 [V03,T04] ( 5, 2.38) ref -> x22 class-hnd exact single-def <Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]> @@ -16,35 +16,37 @@ ;* V05 loc2 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]> ;* V06 loc3 [V06 ] ( 0, 0 ) int -> zero-ref single-def ;* V07 loc4 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]>
-; V08 loc5 [V08,T13] ( 2, 1 ) ref -> x19 class-hnd single-def <System.__Canon> -; V09 loc6 [V09,T14] ( 2, 1 ) ref -> x22 class-hnd single-def <System.__Canon>
+; V08 loc5 [V08,T14] ( 2, 1 ) ref -> x19 class-hnd single-def <System.__Canon> +; V09 loc6 [V09,T15] ( 2, 1 ) ref -> x22 class-hnd single-def <System.__Canon>
;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V11 tmp1 [V11,T09] ( 3, 1.25) long -> x0 "fgMakeTemp is creating a new local variable"
+; V11 tmp1 [V11,T10] ( 3, 1.25) long -> x0 "fgMakeTemp is creating a new local variable"
; V12 tmp2 [V12,T02] ( 3, 4.50) ref -> x0 class-hnd "spilling QMark2" <Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]>
-; V13 tmp3 [V13,T10] ( 3, 1.25) long -> x0 "fgMakeTemp is creating a new local variable"
+; V13 tmp3 [V13,T11] ( 3, 1.25) long -> x0 "fgMakeTemp is creating a new local variable"
; V14 tmp4 [V14,T05] ( 3, 2.50) ref -> x0 class-hnd "spilling QMark2" <Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]>
-; V15 tmp5 [V15,T11] ( 3, 1.25) long -> x0 "fgMakeTemp is creating a new local variable" -;* V16 tmp6 [V16,T12] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]> -;* V17 tmp7 [V17,T15] ( 0, 0 ) int -> zero-ref single-def -; V18 tmp8 [V18,T08] ( 3, 1.50) int -> x19
+; V15 tmp5 [V15,T12] ( 3, 1.25) long -> x0 "fgMakeTemp is creating a new local variable" +;* V16 tmp6 [V16,T13] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]> +;* V17 tmp7 [V17,T16] ( 0, 0 ) int -> zero-ref single-def +; V18 tmp8 [V18,T09] ( 3, 1.50) int -> x19
; V19 tmp9 [V19,T06] ( 2, 2 ) int -> x0 "Single return block return value" ; V20 tmp10 [V20,T07] ( 2, 2 ) long -> x0 "argument with side effect"
+; V21 cse0 [V21,T08] ( 5, 1.50) long -> x23 multi-def "CSE - moderate"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M56277_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x40]!
- stp x19, x20, [sp, #0x20] - stp x21, x22, [sp, #0x30]
+ stp x19, x20, [sp, #0x18] + stp x21, x22, [sp, #0x28] + str x23, [sp, #0x38]
mov fp, sp
- str x0, [fp, #0x18]
+ str x0, [fp, #0x10]
mov x20, x0 ; gcrRegs +[x20] mov x19, x1 ; gcrRegs +[x19] mov x21, x2 ; gcrRegs +[x21]
- ;; size=32 bbWeight=1 PerfScore 6.00
+ ;; size=36 bbWeight=1 PerfScore 7.00
G_M56277_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz mov x0, x19 ; gcrRegs +[x0] @@ -52,7 +54,8 @@ G_M56277_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00 ;; size=8 bbWeight=1 PerfScore 1.50 G_M56277_IG03: ; bbWeight=0.25, gcrefRegs=380001 {x0 x19 x20 x21}, byrefRegs=0000 {}, byref, isz ldr x22, [x0]
- ldr x0, [x20]
+ ldr x23, [x20] + mov x0, x23
; gcrRegs -[x0] adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] @@ -61,7 +64,7 @@ G_M56277_IG03: ; bbWeight=0.25, gcrefRegs=380001 {x0 x19 x20 x21}, byrefR ; gcr arg pop 0 cmp x22, x0 beq G_M56277_IG05
- ;; size=32 bbWeight=0.25 PerfScore 3.12
+ ;; size=36 bbWeight=0.25 PerfScore 3.25
G_M56277_IG04: ; bbWeight=0.12, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref mov x1, x19 ; gcrRegs +[x1] @@ -84,7 +87,8 @@ G_M56277_IG06: ; bbWeight=0.50, gcrefRegs=700000 {x20 x21 x22}, byrefRegs ;; size=4 bbWeight=0.50 PerfScore 0.50 G_M56277_IG07: ; bbWeight=0.25, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref, isz ldr x19, [x22]
- ldr x0, [x20]
+ ldr x23, [x20] + mov x0, x23
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x1, [x11] @@ -92,7 +96,7 @@ G_M56277_IG07: ; bbWeight=0.25, gcrefRegs=700000 {x20 x21 x22}, byrefRegs ; gcr arg pop 0 cmp x19, x0 beq G_M56277_IG09
- ;; size=32 bbWeight=0.25 PerfScore 3.12
+ ;; size=36 bbWeight=0.25 PerfScore 3.25
G_M56277_IG08: ; bbWeight=0.12, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref mov x1, x22 ; gcrRegs +[x1] @@ -111,7 +115,7 @@ G_M56277_IG09: ; bbWeight=0.50, gcrefRegs=700000 {x20 x21 x22}, byrefRegs ldr x19, [x20, #0x08] ; gcrRegs +[x19] ldr x22, [x22, #0x08]
- ldr x0, [x20]
+ mov x0, x23
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x1, [x11] @@ -126,14 +130,15 @@ G_M56277_IG09: ; bbWeight=0.50, gcrefRegs=700000 {x20 x21 x22}, byrefRegs adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x4, [x11]
- ;; size=64 bbWeight=0.50 PerfScore 10.75
+ ;; size=64 bbWeight=0.50 PerfScore 9.50
G_M56277_IG10: ; bbWeight=0.50, epilog, nogc, extend
- ldp x21, x22, [sp, #0x30] - ldp x19, x20, [sp, #0x20]
+ ldr x23, [sp, #0x38] + ldp x21, x22, [sp, #0x28] + ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x40 br x4 ; gcr arg pop 0
- ;; size=16 bbWeight=0.50 PerfScore 2.00
+ ;; size=20 bbWeight=0.50 PerfScore 3.00
G_M56277_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[x1-x3 x19 x21-x22] mov w0, #1 @@ -144,11 +149,12 @@ G_M56277_IG12: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {} mov w0, #1 ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M56277_IG13: ; bbWeight=0.50, epilog, nogc, extend
- ldp x21, x22, [sp, #0x30] - ldp x19, x20, [sp, #0x20]
+ ldr x23, [sp, #0x38] + ldp x21, x22, [sp, #0x28] + ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x40 ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.00
+ ;; size=20 bbWeight=0.50 PerfScore 3.00
G_M56277_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs +[x19] mov x0, x19 @@ -183,28 +189,31 @@ G_M56277_IG17: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {} movn w0, #0 ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M56277_IG18: ; bbWeight=0.50, epilog, nogc, extend
- ldp x21, x22, [sp, #0x30] - ldp x19, x20, [sp, #0x20]
+ ldr x23, [sp, #0x38] + ldp x21, x22, [sp, #0x28] + ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x40 ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.00
+ ;; size=20 bbWeight=0.50 PerfScore 3.00
G_M56277_IG19: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref mov w0, wzr ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M56277_IG20: ; bbWeight=0.50, epilog, nogc, extend
- ldp x21, x22, [sp, #0x30] - ldp x19, x20, [sp, #0x20]
+ ldr x23, [sp, #0x38] + ldp x21, x22, [sp, #0x28] + ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x40 ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.00
+ ;; size=20 bbWeight=0.50 PerfScore 3.00
G_M56277_IG21: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, epilog, nogc
- ldp x21, x22, [sp, #0x30] - ldp x19, x20, [sp, #0x20]
+ ldr x23, [sp, #0x38] + ldp x21, x22, [sp, #0x28] + ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x40 ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.00
+ ;; size=20 bbWeight=0.50 PerfScore 3.00
-; Total bytes of code 388, prolog size 32, PerfScore 44.31, instruction count 97, allocated bytes for code 388 (MethodHash=ba80242a) for method Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
+; Total bytes of code 420, prolog size 36, PerfScore 49.31, instruction count 105, allocated bytes for code 420 (MethodHash=ba80242a) for method Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
; ============================================================ Unwind Info: @@ -215,7 +224,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 97 (0x00061) Actual length = 388 (0x000184)
+ Function Length : 105 (0x00069) Actual length = 420 (0x0001a4)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -235,10 +244,9 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
+ D1 07 save_reg X#4 Z#7 (0x07); str x23, [sp, #56]
E6 save_next
- C8 04 save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
+ C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]! E4 end
- E4 end - E4 end

libraries.pmi.linux.arm64.checked.mch

-48 (-27.91%) : 177575.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)

@@ -7,15 +7,17 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T04] ( 5, 7.50) ref -> x0 class-hnd single-def <System.String> -; V01 arg1 [V01,T02] ( 6, 11 ) ref -> x1 class-hnd single-def <System.String> -; V02 arg2 [V02,T05] ( 4, 6.50) int -> x2 single-def -; V03 arg3 [V03,T07] ( 5, 4.50) int -> x3 single-def -; V04 loc0 [V04,T03] ( 6, 13 ) int -> x5 -; V05 loc1 [V05,T00] ( 11, 27.50) int -> x6
+; V00 arg0 [V00,T04] ( 4, 7 ) ref -> x0 class-hnd single-def <System.String> +; V01 arg1 [V01,T02] ( 4, 10 ) ref -> x1 class-hnd single-def <System.String> +; V02 arg2 [V02,T07] ( 3, 6 ) int -> x2 single-def +; V03 arg3 [V03,T08] ( 5, 4.50) int -> x3 single-def +; V04 loc0 [V04,T01] ( 5, 12 ) int -> x5 +; V05 loc1 [V05,T00] ( 7, 25 ) int -> x6
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 cse0 [V07,T06] ( 5, 7 ) int -> x4 "CSE - aggressive" -; V08 cse1 [V08,T01] ( 6, 13.50) int -> x8 multi-def "CSE - aggressive"
+; V07 cse0 [V07,T05] ( 3, 8.50) int -> x8 "CSE - aggressive" +; V08 cse1 [V08,T06] ( 3, 8.50) int -> x7 "CSE - aggressive" +; V09 cse2 [V09,T09] ( 4, 6.50) int -> x4 "CSE - aggressive" +; V10 cse3 [V10,T03] ( 3, 12 ) int -> x8 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -37,11 +39,11 @@ G_M6389_IG03: ; bbWeight=2, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, by ;; size=4 bbWeight=2 PerfScore 1.00 G_M6389_IG04: ; bbWeight=8, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz cmp w6, w5
- bge G_M6389_IG06
+ bge G_M6389_IG08
;; size=8 bbWeight=8 PerfScore 12.00 G_M6389_IG05: ; bbWeight=4, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz cmp w6, w4
- bhs G_M6389_IG11
+ bhs G_M6389_IG10
add x7, x0, #12 ; byrRegs +[x7] ldrh w7, [x7, w6, UXTW #2] @@ -49,55 +51,36 @@ G_M6389_IG05: ; bbWeight=4, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, by add w8, w2, w6 ldr w9, [x1, #0x08] cmp w8, w9
- bhs G_M6389_IG11
+ bhs G_M6389_IG10
add x9, x1, #12 ; byrRegs +[x9] ldrh w8, [x9, w8, UXTW #2] cmp w7, w8 beq G_M6389_IG03 ;; size=48 bbWeight=4 PerfScore 60.00
-G_M6389_IG06: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
+G_M6389_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0-x1]
; byrRegs -[x9]
- cmp w6, w5 - bge G_M6389_IG09 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M6389_IG07: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz - cmp w6, w4 - bhs G_M6389_IG11 - add x0, x0, #12 - ; gcrRegs -[x0] - ; byrRegs +[x0] - ldrh w0, [x0, w6, UXTW #2] - ; byrRegs -[x0] - add w8, w2, w6 - ldr w3, [x1, #0x08] - cmp w8, w3 - bhs G_M6389_IG11 - add x4, x1, #12 - ; byrRegs +[x4] - ldrh w1, [x4, w8, UXTW #2] - ; gcrRegs -[x1] - sub w0, w0, w1 - ;; size=44 bbWeight=0.50 PerfScore 7.00 -G_M6389_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ sub w0, w7, w8 + ;; size=4 bbWeight=0.50 PerfScore 0.25 +G_M6389_IG07: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M6389_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; byrRegs -[x4]
+G_M6389_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
sub w0, w4, w3 ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M6389_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M6389_IG09: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M6389_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M6389_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 172, prolog size 8, PerfScore 91.25, instruction count 43, allocated bytes for code 172 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
+; Total bytes of code 124, prolog size 8, PerfScore 83.00, instruction count 31, allocated bytes for code 124 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
; ============================================================ Unwind Info: @@ -108,7 +91,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 43 (0x0002b) Actual length = 172 (0x0000ac)
+ Function Length : 31 (0x0001f) Actual length = 124 (0x00007c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-36 (-21.95%) : 265493.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan1[uint]):int (FullOpts)

@@ -11,12 +11,14 @@ ;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]> ; V02 loc0 [V02,T00] ( 7, 24.50) int -> x4 ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T01] ( 6, 20 ) int -> x5 "dup spill" -; V05 tmp2 [V05,T05] ( 3, 5.50) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP -; V06 tmp3 [V06,T04] ( 5, 7 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP -; V07 tmp4 [V07,T06] ( 3, 5.50) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP -; V08 tmp5 [V08,T03] ( 6, 7.50) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP -; V09 cse0 [V09,T02] ( 6, 13.50) long -> x6 multi-def "CSE - aggressive"
+; V04 tmp1 [V04,T01] ( 2, 16 ) int -> x4 "dup spill" +; V05 tmp2 [V05,T07] ( 2, 5 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP +; V06 tmp3 [V06,T04] ( 4, 6.50) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP +; V07 tmp4 [V07,T08] ( 2, 5 ) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP +; V08 tmp5 [V08,T03] ( 5, 7 ) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP +; V09 cse0 [V09,T05] ( 3, 8.50) int -> x6 "CSE - aggressive" +; V10 cse1 [V10,T06] ( 3, 8.50) int -> x5 "CSE - aggressive" +; V11 cse2 [V11,T02] ( 3, 12 ) long -> x5 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -33,51 +35,39 @@ G_M264_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs -[x0 x2] cmp w1, w3 blt G_M264_IG11
- b G_M264_IG09
+ b G_M264_IG07
;; size=12 bbWeight=0.50 PerfScore 1.25 G_M264_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref ; byrRegs +[x0 x2] sxtw w4, w3 ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M264_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
- sub w5, w4, #1 - sxtw w4, w5 - tbnz w4, #31, G_M264_IG06
+ sub w4, w4, #1 + tbnz w4, #31, G_M264_IG09
cmp w4, w1 bhs G_M264_IG13
- ubfiz x6, x4, #2, #32 - ldr w7, [x0, x6]
+ ubfiz x5, x4, #2, #32 + ldr w6, [x0, x5]
cmp w4, w3 bhs G_M264_IG13
- ldr w6, [x2, x6] - cmp w7, w6
+ ldr w5, [x2, x5] + cmp w6, w5
beq G_M264_IG05
- ;; size=48 bbWeight=4 PerfScore 54.00 -G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz - tbz w5, #31, G_M264_IG08 - mov w0, wzr - ; byrRegs -[x0]
+ ;; size=44 bbWeight=4 PerfScore 52.00 +G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ; byrRegs -[x0 x2] + cmp w5, w6 + bhi G_M264_IG11
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M264_IG07: ; bbWeight=0.50, epilog, nogc, extend
+G_M264_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov w0, #1 + ;; size=4 bbWeight=0.50 PerfScore 0.25 +G_M264_IG08: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M264_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, gcvars, byref, isz - ; byrRegs +[x0] - cmp w5, w1 - bhs G_M264_IG13 - ubfiz x6, x5, #2, #32 - ldr w0, [x0, x6] - ; byrRegs -[x0] - cmp w5, w3 - bhs G_M264_IG13 - ldr w1, [x2, x6] - cmp w0, w1 - blo G_M264_IG11 - ;; size=36 bbWeight=0.50 PerfScore 5.75 -G_M264_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; byrRegs -[x2] - mov w0, #1
+G_M264_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + mov w0, wzr
;; size=4 bbWeight=0.50 PerfScore 0.25 G_M264_IG10: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x10 @@ -96,7 +86,7 @@ G_M264_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 164, prolog size 8, PerfScore 68.50, instruction count 41, allocated bytes for code 164 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
+; Total bytes of code 128, prolog size 8, PerfScore 61.00, instruction count 32, allocated bytes for code 128 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
; ============================================================ Unwind Info: @@ -107,7 +97,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
+ Function Length : 32 (0x00020) Actual length = 128 (0x000080)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-36 (-18.75%) : 199462.dasm - System.Data.Odbc.OdbcParameter:GetParameterScale(System.Object):ubyte:this (FullOpts)

@@ -7,99 +7,83 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 4, 3 ) ref -> x20 this class-hnd single-def <System.Data.Odbc.OdbcParameter> -; V01 arg1 [V01,T00] ( 6, 4.25) ref -> x19 class-hnd single-def <System.Object>
+; V00 this [V00,T01] ( 4, 3 ) ref -> x19 this class-hnd single-def <System.Data.Odbc.OdbcParameter> +; V01 arg1 [V01,T00] ( 5, 4 ) ref -> x1 class-hnd single-def <System.Object>
; V02 loc0 [V02,T04] ( 3, 1.50) ubyte -> x0 single-def ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V04 tmp1 [V04,T02] ( 3, 4.50) ref -> x0 class-hnd "spilling QMark2" <System.Decimal> ; V05 tmp2 [V05,T03] ( 3, 3 ) ref -> x0 single-def "arr expr" ; V06 cse0 [V06,T05] ( 3, 1.50) int -> x1 "CSE - moderate"
-; V07 cse1 [V07,T06] ( 4, 1.25) long -> x0 "CSE - moderate" -; V08 cse2 [V08,T07] ( 3, 1 ) long -> x1 "CSE - moderate"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M19923_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x20]!
- stp x19, x20, [sp, #0x10]
+ str x19, [sp, #0x18]
mov fp, sp
- mov x20, x0 - ; gcrRegs +[x20] - mov x19, x1
+ mov x19, x0
; gcrRegs +[x19]
- ;; size=20 bbWeight=1 PerfScore 3.50 -G_M19923_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz - mov x0, x19
+ ;; size=16 bbWeight=1 PerfScore 3.00 +G_M19923_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[x1] + mov x0, x1
; gcrRegs +[x0] cbz x0, G_M19923_IG04 ;; size=8 bbWeight=1 PerfScore 1.50
-G_M19923_IG03: ; bbWeight=0.25, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz - ldr x1, [x0] - movz x0, #0xD1FFAB1E
+G_M19923_IG03: ; bbWeight=0.25, gcrefRegs=80003 {x0 x1 x19}, byrefRegs=0000 {}, byref, isz + ldr x0, [x0]
; gcrRegs -[x0]
- movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - cmp x1, x0 - beq G_M19923_IG06 - ;; size=24 bbWeight=0.25 PerfScore 1.50 -G_M19923_IG04: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref - ; gcrRegs -[x19] - ldrb w0, [x20, #0xAD] - ;; size=4 bbWeight=0.50 PerfScore 1.50 -G_M19923_IG05: ; bbWeight=0.50, epilog, nogc, extend - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20 - ret lr - ;; size=12 bbWeight=0.50 PerfScore 1.50 -G_M19923_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[x19] - cmp x1, x0 - beq G_M19923_IG08 - ;; size=8 bbWeight=0.50 PerfScore 0.75 -G_M19923_IG07: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref - mov x1, x19 - ; gcrRegs +[x1] - movz x2, #0xD1FFAB1E // code for CORINFO_HELP_UNBOX
+ movz x2, #0xD1FFAB1E
movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32
- ldr x2, [x2] - blr x2 - ; gcrRegs -[x1]
+ cmp x0, x2 + beq G_M19923_IG06
;; size=24 bbWeight=0.25 PerfScore 1.50
-G_M19923_IG08: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz - ldp x0, x1, [x19, #0x08]
+G_M19923_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + ; gcrRegs -[x1] + ldrb w0, [x19, #0xAD] + ;; size=4 bbWeight=0.50 PerfScore 1.50 +G_M19923_IG05: ; bbWeight=0.50, epilog, nogc, extend + ldr x19, [sp, #0x18] + ldp fp, lr, [sp], #0x20 + ret lr + ;; size=12 bbWeight=0.50 PerfScore 2.00 +G_M19923_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs +[x1] + ldp x0, x1, [x1, #0x08] + ; gcrRegs -[x1]
movz x2, #0xD1FFAB1E // code for System.Decimal:GetBits(System.Decimal):int[] movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x19] +[x0]
+ ; gcrRegs +[x0]
ldr w1, [x0, #0x08] cmp w1, #3
- bls G_M19923_IG10
+ bls G_M19923_IG08
ldr w0, [x0, #0x1C] ; gcrRegs -[x0] and w0, w0, #0xD1FFAB1E asr w0, w0, #16 uxtb w0, w0
- ldrb w1, [x20, #0xAD]
+ ldrb w1, [x19, #0xAD]
cmp w1, #0
- ble G_M19923_IG09
+ ble G_M19923_IG07
cmp w1, w0 blt G_M19923_IG04 ;; size=72 bbWeight=0.50 PerfScore 12.50
-G_M19923_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[x20] - ldp x19, x20, [sp, #0x10]
+G_M19923_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + ; gcrRegs -[x19] + ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20 ret lr
- ;; size=12 bbWeight=0.50 PerfScore 1.50 -G_M19923_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=12 bbWeight=0.50 PerfScore 2.00 +G_M19923_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 192, prolog size 12, PerfScore 25.75, instruction count 48, allocated bytes for code 192 (MethodHash=b6bbb22c) for method System.Data.Odbc.OdbcParameter:GetParameterScale(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 156, prolog size 12, PerfScore 24.00, instruction count 39, allocated bytes for code 156 (MethodHash=b6bbb22c) for method System.Data.Odbc.OdbcParameter:GetParameterScale(System.Object):ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -110,7 +94,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 48 (0x00030) Actual length = 192 (0x0000c0)
+ Function Length : 39 (0x00027) Actual length = 156 (0x00009c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -121,7 +105,7 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
+ D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! E4 end E4 end

+8 (+4.65%) : 229728.dasm - System.ComponentModel.TypeConverter+SimplePropertyDescriptor:ResetValue(System.Object):this (FullOpts)

@@ -7,27 +7,29 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 6, 6 ) ref -> x19 this class-hnd single-def <System.ComponentModel.TypeConverter+SimplePropertyDescriptor> -; V01 arg1 [V01,T03] ( 3, 3 ) ref -> x20 class-hnd single-def <System.Object>
+; V00 this [V00,T00] ( 6, 5 ) ref -> x19 this class-hnd single-def <System.ComponentModel.TypeConverter+SimplePropertyDescriptor> +; V01 arg1 [V01,T03] ( 3, 2.50) ref -> x20 class-hnd single-def <System.Object>
;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <<unknown class>> ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V04 tmp1 [V04,T04] ( 3, 4.25) ref -> x1 single-def "CASTCLASS eval op1"
-; V05 tmp2 [V05,T06] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable" -; V06 tmp3 [V06,T00] ( 6, 8.75) ref -> x0 class-hnd "spilling QMark2" <<unknown class>> -; V07 tmp4 [V07,T02] ( 3, 6 ) ref -> x0 single-def "argument with side effect" -; V08 tmp5 [V08,T05] ( 2, 4 ) ref -> x2 single-def "argument with side effect"
+; V05 tmp2 [V05,T06] ( 3, 1.25) long -> x2 "fgMakeTemp is creating a new local variable" +; V06 tmp3 [V06,T02] ( 5, 5.75) ref -> x0 class-hnd "spilling QMark2" <<unknown class>> +; V07 tmp4 [V07,T01] ( 3, 6 ) ref -> x0 single-def "argument with side effect" +; V08 tmp5 [V08,T05] ( 2, 2 ) ref -> x2 single-def "argument with side effect" +; V09 cse0 [V09,T07] ( 3, 1 ) long -> x21 "CSE - moderate"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M9521_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]! - stp x19, x20, [sp, #0x10]
+ stp fp, lr, [sp, #-0x30]! + stp x19, x20, [sp, #0x18] + str x21, [sp, #0x28]
mov fp, sp mov x19, x0 ; gcrRegs +[x19] mov x20, x1 ; gcrRegs +[x20]
- ;; size=20 bbWeight=1 PerfScore 3.50
+ ;; size=24 bbWeight=1 PerfScore 4.50
G_M9521_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz mov x0, x19 ; gcrRegs +[x0] @@ -47,22 +49,21 @@ G_M9521_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {} cbz x0, G_M9521_IG07 ;; size=56 bbWeight=1 PerfScore 23.50 G_M9521_IG03: ; bbWeight=0.25, gcrefRegs=180003 {x0 x1 x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr x2, [x0] - movz x3, #0xD1FFAB1E - movk x3, #0xD1FFAB1E LSL #16 - movk x3, #0xD1FFAB1E LSL #32 - cmp x2, x3
+ ldr x21, [x0] + movz x2, #0xD1FFAB1E + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + cmp x21, x2
beq G_M9521_IG05 ;; size=24 bbWeight=0.25 PerfScore 1.50 G_M9521_IG04: ; bbWeight=0.12, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=0000 {}, byref ; gcrRegs -[x0]
- mov x0, x3
+ mov x0, x2
bl CORINFO_HELP_CHKCASTCLASS_SPECIAL ; gcrRegs -[x1] +[x0] ;; size=8 bbWeight=0.12 PerfScore 0.19
-G_M9521_IG05: ; bbWeight=1, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref - ldr x1, [x0] - ldr x1, [x1, #0x48]
+G_M9521_IG05: ; bbWeight=0.50, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref + ldr x1, [x21, #0x48]
ldr x1, [x1, #0x38] blr x1 mov x2, x0 @@ -73,20 +74,22 @@ G_M9521_IG05: ; bbWeight=1, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 ldr x3, [x19] ldr x3, [x3, #0x60] ldr x3, [x3, #0x30]
- ;; size=40 bbWeight=1 PerfScore 20.50 -G_M9521_IG06: ; bbWeight=1, epilog, nogc, extend - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20
+ ;; size=36 bbWeight=0.50 PerfScore 8.75 +G_M9521_IG06: ; bbWeight=0.50, epilog, nogc, extend + ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x30
br x3
- ;; size=12 bbWeight=1 PerfScore 3.00
+ ;; size=16 bbWeight=0.50 PerfScore 2.50
G_M9521_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; gcrRegs -[x0-x2 x19-x20]
- ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20
+ ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 1.50
+ ;; size=16 bbWeight=0.50 PerfScore 2.50
-; Total bytes of code 172, prolog size 12, PerfScore 53.69, instruction count 43, allocated bytes for code 172 (MethodHash=ff5fdace) for method System.ComponentModel.TypeConverter+SimplePropertyDescriptor:ResetValue(System.Object):this (FullOpts)
+; Total bytes of code 180, prolog size 16, PerfScore 43.44, instruction count 45, allocated bytes for code 180 (MethodHash=ff5fdace) for method System.ComponentModel.TypeConverter+SimplePropertyDescriptor:ResetValue(System.Object):this (FullOpts)
; ============================================================ Unwind Info: @@ -97,7 +100,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 43 (0x0002b) Actual length = 172 (0x0000ac)
+ Function Length : 45 (0x0002d) Actual length = 180 (0x0000b4)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -108,10 +111,9 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16] - 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! - E4 end - E4 end
+ D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40] + C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24] + 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
E4 end E4 end

+8 (+7.14%) : 159880.dasm - System.Xml.DocumentXPathNavigator:get_ValueDocument():System.String:this (FullOpts)

@@ -13,16 +13,18 @@ ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Xml.XmlDocument> ; V04 tmp2 [V04,T03] ( 3, 4.25) ref -> x1 single-def "CASTCLASS eval op1"
-; V05 tmp3 [V05,T04] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable" -; V06 tmp4 [V06,T00] ( 6, 8.75) ref -> x0 class-hnd "spilling QMark2" <System.Xml.XmlElement> -; V07 tmp5 [V07,T01] ( 3, 6 ) ref -> x0 single-def "argument with side effect"
+; V05 tmp3 [V05,T04] ( 3, 1.25) long -> x2 "fgMakeTemp is creating a new local variable" +; V06 tmp4 [V06,T01] ( 5, 5.75) ref -> x0 class-hnd "spilling QMark2" <System.Xml.XmlElement> +; V07 tmp5 [V07,T00] ( 3, 6 ) ref -> x0 single-def "argument with side effect" +; V08 cse0 [V08,T05] ( 3, 1 ) long -> x19 "CSE - moderate"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M56653_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x10]!
+ stp fp, lr, [sp, #-0x20]! + str x19, [sp, #0x18]
mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50
+ ;; size=12 bbWeight=1 PerfScore 2.50
G_M56653_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x0] ldr x0, [x0, #0x08] @@ -36,28 +38,28 @@ G_M56653_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre cbz x0, G_M56653_IG07 ;; size=32 bbWeight=1 PerfScore 15.00 G_M56653_IG03: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
- ldr x2, [x0] - movz x3, #0xD1FFAB1E - movk x3, #0xD1FFAB1E LSL #16 - movk x3, #0xD1FFAB1E LSL #32 - cmp x2, x3
+ ldr x19, [x0] + movz x2, #0xD1FFAB1E + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + cmp x19, x2
beq G_M56653_IG05 ;; size=24 bbWeight=0.25 PerfScore 1.50 G_M56653_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref ; gcrRegs -[x0]
- mov x0, x3
+ mov x0, x2
bl CORINFO_HELP_CHKCASTCLASS_SPECIAL ; gcrRegs -[x1] +[x0] ;; size=8 bbWeight=0.12 PerfScore 0.19
-G_M56653_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref - ldr x1, [x0] - ldr x1, [x1, #0x70]
+G_M56653_IG05: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref + ldr x1, [x19, #0x70]
ldr x1, [x1, #0x18]
- ;; size=12 bbWeight=1 PerfScore 9.00 -G_M56653_IG06: ; bbWeight=1, epilog, nogc, extend - ldp fp, lr, [sp], #0x10
+ ;; size=8 bbWeight=0.50 PerfScore 3.00 +G_M56653_IG06: ; bbWeight=0.50, epilog, nogc, extend + ldr x19, [sp, #0x18] + ldp fp, lr, [sp], #0x20
br x1
- ;; size=8 bbWeight=1 PerfScore 2.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
G_M56653_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[x0] movz x0, #0xD1FFAB1E @@ -65,22 +67,23 @@ G_M56653_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000 movk x0, #0xD1FFAB1E LSL #32 ;; size=12 bbWeight=0.50 PerfScore 0.75 G_M56653_IG08: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
+ ldr x19, [sp, #0x18] + ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
-; Total bytes of code 112, prolog size 8, PerfScore 30.94, instruction count 28, allocated bytes for code 112 (MethodHash=6dd022b2) for method System.Xml.DocumentXPathNavigator:get_ValueDocument():System.String:this (FullOpts)
+; Total bytes of code 120, prolog size 12, PerfScore 26.94, instruction count 30, allocated bytes for code 120 (MethodHash=6dd022b2) for method System.Xml.DocumentXPathNavigator:get_ValueDocument():System.String:this (FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 1
+ Code Words : 2
Epilog Count : 2 E bit : 0 X bit : 0 Vers : 0
- Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
+ Function Length : 30 (0x0001e) Actual length = 120 (0x000078)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -91,7 +94,10 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
+ D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24] + 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! + E4 end + E4 end
E4 end E4 end

+8 (+7.69%) : 172035.dasm - Microsoft.Build.Internal.ProjectXmlUtilities:GetAttributeValue(Microsoft.Build.Construction.XmlElementWithLocation,System.String):System.String (FullOpts)

@@ -8,20 +8,22 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T01] ( 4, 4 ) ref -> x0 class-hnd single-def <Microsoft.Build.Construction.XmlElementWithLocation> -; V01 arg1 [V01,T03] ( 3, 3 ) ref -> x1 class-hnd single-def <System.String>
+; V00 arg0 [V00,T00] ( 4, 4 ) ref -> x0 class-hnd single-def <Microsoft.Build.Construction.XmlElementWithLocation> +; V01 arg1 [V01,T02] ( 3, 3 ) ref -> x1 class-hnd single-def <System.String>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T02] ( 3, 6 ) ref -> x1 single-def "CASTCLASS eval op1" -; V04 tmp2 [V04,T04] ( 3, 3 ) long -> x3 "fgMakeTemp is creating a new local variable" -; V05 tmp3 [V05,T00] ( 6, 8.50) ref -> x0 class-hnd "spilling QMark2" <Microsoft.Build.Construction.XmlAttributeWithLocation>
+; V03 tmp1 [V03,T03] ( 3, 4.25) ref -> x1 single-def "CASTCLASS eval op1" +; V04 tmp2 [V04,T04] ( 3, 1.25) long -> x2 "fgMakeTemp is creating a new local variable" +; V05 tmp3 [V05,T01] ( 5, 5.75) ref -> x0 class-hnd "spilling QMark2" <Microsoft.Build.Construction.XmlAttributeWithLocation>
;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline return value spill temp" <System.String>
+; V07 cse0 [V07,T05] ( 3, 1 ) long -> x19 "CSE - moderate"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M36414_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x10]!
+ stp fp, lr, [sp, #-0x20]! + str x19, [sp, #0x18]
mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50
+ ;; size=12 bbWeight=1 PerfScore 2.50
G_M36414_IG02: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x0-x1] ldr x2, [x0] @@ -34,28 +36,28 @@ G_M36414_IG02: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, b cbz x0, G_M36414_IG07 ;; size=24 bbWeight=1 PerfScore 11.50 G_M36414_IG03: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
- ldr x2, [x0] - movz x3, #0xD1FFAB1E - movk x3, #0xD1FFAB1E LSL #16 - movk x3, #0xD1FFAB1E LSL #32 - cmp x2, x3
+ ldr x19, [x0] + movz x2, #0xD1FFAB1E + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + cmp x19, x2
beq G_M36414_IG05 ;; size=24 bbWeight=0.25 PerfScore 1.50
-G_M36414_IG04: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+G_M36414_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
- mov x0, x3
+ mov x0, x2
bl CORINFO_HELP_CHKCASTCLASS_SPECIAL ; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=1 PerfScore 1.50
+ ;; size=8 bbWeight=0.12 PerfScore 0.19
G_M36414_IG05: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
- ldr x1, [x0] - ldr x1, [x1, #0x48]
+ ldr x1, [x19, #0x48]
ldr x1, [x1, #0x30]
- ;; size=12 bbWeight=0.50 PerfScore 4.50
+ ;; size=8 bbWeight=0.50 PerfScore 3.00
G_M36414_IG06: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
+ ldr x19, [sp, #0x18] + ldp fp, lr, [sp], #0x20
br x1
- ;; size=8 bbWeight=0.50 PerfScore 1.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
G_M36414_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[x0] movz x0, #0xD1FFAB1E @@ -63,22 +65,23 @@ G_M36414_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000 movk x0, #0xD1FFAB1E LSL #32 ;; size=12 bbWeight=0.50 PerfScore 0.75 G_M36414_IG08: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
+ ldr x19, [sp, #0x18] + ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
-; Total bytes of code 104, prolog size 8, PerfScore 23.25, instruction count 26, allocated bytes for code 104 (MethodHash=f66a71c1) for method Microsoft.Build.Internal.ProjectXmlUtilities:GetAttributeValue(Microsoft.Build.Construction.XmlElementWithLocation,System.String):System.String (FullOpts)
+; Total bytes of code 112, prolog size 12, PerfScore 23.44, instruction count 28, allocated bytes for code 112 (MethodHash=f66a71c1) for method Microsoft.Build.Internal.ProjectXmlUtilities:GetAttributeValue(Microsoft.Build.Construction.XmlElementWithLocation,System.String):System.String (FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 1
+ Code Words : 2
Epilog Count : 2 E bit : 0 X bit : 0 Vers : 0
- Function Length : 26 (0x0001a) Actual length = 104 (0x000068)
+ Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -89,7 +92,10 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
+ D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24] + 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! + E4 end + E4 end
E4 end E4 end

libraries_tests.run.linux.arm64.Release.mch

-40 (-34.48%) : 291278.dasm - System.UInt64:Equals(System.Object):ubyte:this (Tier1)

@@ -9,83 +9,70 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 3 ) byref -> x0 this single-def
-; V01 arg1 [V01,T00] ( 5, 4.50) ref -> x19 class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 4, 4 ) ref -> x1 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> x1 class-hnd "spilling QMark2" <System.UInt64> -; V04 tmp2 [V04,T03] ( 2, 4 ) long -> x20 "impAppendStmt" -; V05 cse0 [V05,T04] ( 4, 2.50) long -> x2 "CSE - aggressive" -; V06 cse1 [V06,T05] ( 3, 2 ) long -> x1 "CSE - aggressive"
+; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> x2 class-hnd "spilling QMark2" <System.UInt64> +; V04 tmp2 [V04,T03] ( 2, 4 ) long -> x0 "impAppendStmt" +; V05 cse0 [V05,T04] ( 2, 1 ) long -> x3 "CSE - moderate"
; ; Lcl frame size = 0 G_M48470_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]! - stp x19, x20, [sp, #0x10]
+ stp fp, lr, [sp, #-0x10]!
mov fp, sp
- mov x19, x1 - ; gcrRegs +[x19] - ;; size=16 bbWeight=1 PerfScore 3.00 -G_M48470_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref, isz - ; byrRegs +[x0] - mov x1, x19 - ; gcrRegs +[x1] - cbz x1, G_M48470_IG08
;; size=8 bbWeight=1 PerfScore 1.50
-G_M48470_IG03: ; bbWeight=0.50, gcrefRegs=80002 {x1 x19}, byrefRegs=0001 {x0}, byref, isz - ldr x1, [x1] - ; gcrRegs -[x1] - movz x2, #0xD1FFAB1E - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - cmp x1, x2 - bne G_M48470_IG08 - ;; size=24 bbWeight=0.50 PerfScore 3.00 -G_M48470_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref, isz - ldr x20, [x0] - cmp x1, x2 - bne G_M48470_IG07 - ;; size=12 bbWeight=1 PerfScore 4.50 -G_M48470_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ; byrRegs -[x0] - ldr x0, [x19, #0x08] - cmp x20, x0 - cset x0, eq - ;; size=12 bbWeight=1 PerfScore 4.00 -G_M48470_IG06: ; bbWeight=1, epilog, nogc, extend - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20 - ret lr - ;; size=12 bbWeight=1 PerfScore 3.00 -G_M48470_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref - mov x1, x19
+G_M48470_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0001 {x0}, byref, isz
; gcrRegs +[x1]
- mov x0, x2 - bl CORINFO_HELP_UNBOX - ; gcrRegs -[x1] - b G_M48470_IG05 - ;; size=16 bbWeight=0.50 PerfScore 1.50 -G_M48470_IG08: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x19]
+ ; byrRegs +[x0] + mov x2, x1 + ; gcrRegs +[x2] + cbnz x2, G_M48470_IG05 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M48470_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x1-x2] + ; byrRegs -[x0]
mov w0, wzr
- ;; size=4 bbWeight=0.25 PerfScore 0.12 -G_M48470_IG09: ; bbWeight=0.25, epilog, nogc, extend - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20
+ ;; size=4 bbWeight=1 PerfScore 0.50 +G_M48470_IG04: ; bbWeight=1, epilog, nogc, extend + ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=0.25 PerfScore 0.75
+ ;; size=8 bbWeight=1 PerfScore 2.00 +G_M48470_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0006 {x1 x2}, byrefRegs=0001 {x0}, gcvars, byref, isz + ; gcrRegs +[x1-x2] + ; byrRegs +[x0] + ldr x2, [x2] + ; gcrRegs -[x2] + movz x3, #0xD1FFAB1E + movk x3, #0xD1FFAB1E LSL #16 + movk x3, #0xD1FFAB1E LSL #32 + cmp x2, x3 + bne G_M48470_IG03 + ;; size=24 bbWeight=0.50 PerfScore 3.00 +G_M48470_IG06: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0001 {x0}, byref + ldr x0, [x0] + ; byrRegs -[x0] + ldr x1, [x1, #0x08] + ; gcrRegs -[x1] + cmp x0, x1 + cset x0, eq + ;; size=16 bbWeight=1 PerfScore 7.00 +G_M48470_IG07: ; bbWeight=1, epilog, nogc, extend + ldp fp, lr, [sp], #0x10 + ret lr + ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 116, prolog size 12, PerfScore 21.38, instruction count 29, allocated bytes for code 116 (MethodHash=a80142a9) for method System.UInt64:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 76, prolog size 8, PerfScore 17.50, instruction count 19, allocated bytes for code 76 (MethodHash=a80142a9) for method System.UInt64:Equals(System.Object):ubyte:this (Tier1)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 1
Epilog Count : 2 E bit : 0 X bit : 0 Vers : 0
- Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
+ Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -96,10 +83,7 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16] - 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! - E4 end - E4 end
+ 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
E4 end E4 end

-40 (-34.48%) : 478310.dasm - System.UInt16:Equals(System.Object):ubyte:this (Tier1)

@@ -9,83 +9,70 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 3 ) byref -> x0 this single-def
-; V01 arg1 [V01,T00] ( 5, 4.50) ref -> x19 class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 4, 4 ) ref -> x1 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> x1 class-hnd "spilling QMark2" <System.UInt16> -; V04 tmp2 [V04,T03] ( 2, 4 ) int -> x20 "impAppendStmt" -; V05 cse0 [V05,T04] ( 4, 2.50) long -> x2 "CSE - aggressive" -; V06 cse1 [V06,T05] ( 3, 2 ) long -> x1 "CSE - aggressive"
+; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> x2 class-hnd "spilling QMark2" <System.UInt16> +; V04 tmp2 [V04,T03] ( 2, 4 ) int -> x0 "impAppendStmt" +; V05 cse0 [V05,T04] ( 2, 1 ) long -> x3 "CSE - moderate"
; ; Lcl frame size = 0 G_M3539_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]! - stp x19, x20, [sp, #0x10]
+ stp fp, lr, [sp, #-0x10]!
mov fp, sp
- mov x19, x1 - ; gcrRegs +[x19] - ;; size=16 bbWeight=1 PerfScore 3.00 -G_M3539_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref, isz - ; byrRegs +[x0] - mov x1, x19 - ; gcrRegs +[x1] - cbz x1, G_M3539_IG08
;; size=8 bbWeight=1 PerfScore 1.50
-G_M3539_IG03: ; bbWeight=0.50, gcrefRegs=80002 {x1 x19}, byrefRegs=0001 {x0}, byref, isz - ldr x1, [x1] - ; gcrRegs -[x1] - movz x2, #0xD1FFAB1E - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - cmp x1, x2 - bne G_M3539_IG08 - ;; size=24 bbWeight=0.50 PerfScore 3.00 -G_M3539_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref, isz - ldrh w20, [x0] - cmp x1, x2 - bne G_M3539_IG07 - ;; size=12 bbWeight=1 PerfScore 4.50 -G_M3539_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ; byrRegs -[x0] - ldrh w0, [x19, #0x08] - cmp w20, w0 - cset x0, eq - ;; size=12 bbWeight=1 PerfScore 4.00 -G_M3539_IG06: ; bbWeight=1, epilog, nogc, extend - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20 - ret lr - ;; size=12 bbWeight=1 PerfScore 3.00 -G_M3539_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref - mov x1, x19
+G_M3539_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0001 {x0}, byref, isz
; gcrRegs +[x1]
- mov x0, x2 - bl CORINFO_HELP_UNBOX - ; gcrRegs -[x1] - b G_M3539_IG05 - ;; size=16 bbWeight=0.50 PerfScore 1.50 -G_M3539_IG08: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x19]
+ ; byrRegs +[x0] + mov x2, x1 + ; gcrRegs +[x2] + cbnz x2, G_M3539_IG05 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M3539_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x1-x2] + ; byrRegs -[x0]
mov w0, wzr
- ;; size=4 bbWeight=0.25 PerfScore 0.12 -G_M3539_IG09: ; bbWeight=0.25, epilog, nogc, extend - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20
+ ;; size=4 bbWeight=1 PerfScore 0.50 +G_M3539_IG04: ; bbWeight=1, epilog, nogc, extend + ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=0.25 PerfScore 0.75
+ ;; size=8 bbWeight=1 PerfScore 2.00 +G_M3539_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0006 {x1 x2}, byrefRegs=0001 {x0}, gcvars, byref, isz + ; gcrRegs +[x1-x2] + ; byrRegs +[x0] + ldr x2, [x2] + ; gcrRegs -[x2] + movz x3, #0xD1FFAB1E + movk x3, #0xD1FFAB1E LSL #16 + movk x3, #0xD1FFAB1E LSL #32 + cmp x2, x3 + bne G_M3539_IG03 + ;; size=24 bbWeight=0.50 PerfScore 3.00 +G_M3539_IG06: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0001 {x0}, byref + ldrh w0, [x0] + ; byrRegs -[x0] + ldrh w1, [x1, #0x08] + ; gcrRegs -[x1] + cmp w0, w1 + cset x0, eq + ;; size=16 bbWeight=1 PerfScore 7.00 +G_M3539_IG07: ; bbWeight=1, epilog, nogc, extend + ldp fp, lr, [sp], #0x10 + ret lr + ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 116, prolog size 12, PerfScore 21.38, instruction count 29, allocated bytes for code 116 (MethodHash=135df22c) for method System.UInt16:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 76, prolog size 8, PerfScore 17.50, instruction count 19, allocated bytes for code 76 (MethodHash=135df22c) for method System.UInt16:Equals(System.Object):ubyte:this (Tier1)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 1
Epilog Count : 2 E bit : 0 X bit : 0 Vers : 0
- Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
+ Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -96,10 +83,7 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16] - 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! - E4 end - E4 end
+ 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
E4 end E4 end

-40 (-34.48%) : 365580.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)

@@ -9,83 +9,70 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 3 ) byref -> x0 this single-def
-; V01 arg1 [V01,T00] ( 5, 4.50) ref -> x19 class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 4, 4 ) ref -> x1 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> x1 class-hnd "spilling QMark2" <System.Int32> -; V04 tmp2 [V04,T03] ( 2, 4 ) int -> x20 "impAppendStmt" -; V05 cse0 [V05,T04] ( 4, 2.50) long -> x2 "CSE - aggressive" -; V06 cse1 [V06,T05] ( 3, 2 ) long -> x1 "CSE - aggressive"
+; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> x2 class-hnd "spilling QMark2" <System.Int32> +; V04 tmp2 [V04,T03] ( 2, 4 ) int -> x0 "impAppendStmt" +; V05 cse0 [V05,T04] ( 2, 1 ) long -> x3 "CSE - moderate"
; ; Lcl frame size = 0 G_M40448_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]! - stp x19, x20, [sp, #0x10]
+ stp fp, lr, [sp, #-0x10]!
mov fp, sp
- mov x19, x1 - ; gcrRegs +[x19] - ;; size=16 bbWeight=1 PerfScore 3.00 -G_M40448_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref, isz - ; byrRegs +[x0] - mov x1, x19 - ; gcrRegs +[x1] - cbz x1, G_M40448_IG08
;; size=8 bbWeight=1 PerfScore 1.50
-G_M40448_IG03: ; bbWeight=0.50, gcrefRegs=80002 {x1 x19}, byrefRegs=0001 {x0}, byref, isz - ldr x1, [x1] - ; gcrRegs -[x1] - movz x2, #0xD1FFAB1E - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - cmp x1, x2 - bne G_M40448_IG08 - ;; size=24 bbWeight=0.50 PerfScore 3.00 -G_M40448_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref, isz - ldr w20, [x0] - cmp x1, x2 - bne G_M40448_IG07 - ;; size=12 bbWeight=1 PerfScore 4.50 -G_M40448_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ; byrRegs -[x0] - ldr w0, [x19, #0x08] - cmp w20, w0 - cset x0, eq - ;; size=12 bbWeight=1 PerfScore 4.00 -G_M40448_IG06: ; bbWeight=1, epilog, nogc, extend - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20 - ret lr - ;; size=12 bbWeight=1 PerfScore 3.00 -G_M40448_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref - mov x1, x19
+G_M40448_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0001 {x0}, byref, isz
; gcrRegs +[x1]
- mov x0, x2 - bl CORINFO_HELP_UNBOX - ; gcrRegs -[x1] - b G_M40448_IG05 - ;; size=16 bbWeight=0.50 PerfScore 1.50 -G_M40448_IG08: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x19]
+ ; byrRegs +[x0] + mov x2, x1 + ; gcrRegs +[x2] + cbnz x2, G_M40448_IG05 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M40448_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x1-x2] + ; byrRegs -[x0]
mov w0, wzr
- ;; size=4 bbWeight=0.25 PerfScore 0.12 -G_M40448_IG09: ; bbWeight=0.25, epilog, nogc, extend - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20
+ ;; size=4 bbWeight=1 PerfScore 0.50 +G_M40448_IG04: ; bbWeight=1, epilog, nogc, extend + ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=0.25 PerfScore 0.75
+ ;; size=8 bbWeight=1 PerfScore 2.00 +G_M40448_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0006 {x1 x2}, byrefRegs=0001 {x0}, gcvars, byref, isz + ; gcrRegs +[x1-x2] + ; byrRegs +[x0] + ldr x2, [x2] + ; gcrRegs -[x2] + movz x3, #0xD1FFAB1E + movk x3, #0xD1FFAB1E LSL #16 + movk x3, #0xD1FFAB1E LSL #32 + cmp x2, x3 + bne G_M40448_IG03 + ;; size=24 bbWeight=0.50 PerfScore 3.00 +G_M40448_IG06: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0001 {x0}, byref + ldr w0, [x0] + ; byrRegs -[x0] + ldr w1, [x1, #0x08] + ; gcrRegs -[x1] + cmp w0, w1 + cset x0, eq + ;; size=16 bbWeight=1 PerfScore 7.00 +G_M40448_IG07: ; bbWeight=1, epilog, nogc, extend + ldp fp, lr, [sp], #0x10 + ret lr + ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 116, prolog size 12, PerfScore 21.38, instruction count 29, allocated bytes for code 116 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 76, prolog size 8, PerfScore 17.50, instruction count 19, allocated bytes for code 76 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (Tier1)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 1
Epilog Count : 2 E bit : 0 X bit : 0 Vers : 0
- Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
+ Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -96,10 +83,7 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16] - 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! - E4 end - E4 end
+ 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
E4 end E4 end

+16 (+6.78%) : 265603.dasm - System.Diagnostics.Activity:set_Current(System.Diagnostics.Activity) (Tier1)

@@ -5,38 +5,86 @@ ; optimized using Dynamic PGO ; fp based frame ; fully interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 6
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 6
; 1 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 6, 4 ) ref -> x19 class-hnd single-def <System.Diagnostics.Activity> ;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T03] ( 4, 2 ) int -> x20 -; V03 tmp2 [V03,T04] ( 2, 2 ) ubyte -> x0 "Inline stloc first use temp" -; V04 tmp3 [V04,T01] ( 3, 6 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V05 tmp4 [V05,T02] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
+; V02 tmp1 [V02,T01] ( 5, 2 ) int -> x20 +; V03 tmp2 [V03,T02] ( 4, 2 ) ubyte -> x21 "Inline stloc first use temp" +; V04 tmp3 [V04,T03] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V05 tmp4 [V05,T04] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M63445_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]! - stp x19, x20, [sp, #0x10]
+ stp fp, lr, [sp, #-0x30]! + stp x19, x20, [sp, #0x18] + str x21, [sp, #0x28]
mov fp, sp mov x19, x0 ; gcrRegs +[x19]
- ;; size=16 bbWeight=1 PerfScore 3.00
+ ;; size=20 bbWeight=1 PerfScore 4.00
G_M63445_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz cbnz x19, G_M63445_IG07 mov w20, #1 ;; size=8 bbWeight=1 PerfScore 1.50 G_M63445_IG03: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- uxtb w0, w20 - cbnz w0, G_M63445_IG04
+ uxtb w21, w20 + cbz w21, G_M63445_IG09 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M63445_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + mov x0, x19 + ; gcrRegs +[x0] + movz x1, #0xD1FFAB1E // code for System.Diagnostics.Activity:SetCurrent(System.Diagnostics.Activity) + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + ldr x1, [x1] + ;; size=20 bbWeight=1 PerfScore 5.00 +G_M63445_IG05: ; bbWeight=1, epilog, nogc, extend + ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x30 + br x1 + ; gcr arg pop 0 + ;; size=16 bbWeight=1 PerfScore 5.00 +G_M63445_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + ; gcrRegs -[x0 x19] + ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x30 + ret lr + ;; size=16 bbWeight=0 PerfScore 0.00 +G_M63445_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs +[x19] + mov x0, x19 + ; gcrRegs +[x0] + movz x1, #0xD1FFAB1E // code for System.Diagnostics.Activity:get_Id():System.String:this + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + ldr x1, [x1] + blr x1 + ; gcr arg pop 0 + cbz x0, G_M63445_IG08 + ldrb w0, [x19, #0xA4] + ; gcrRegs -[x0] + tst w0, #128 + cset x20, eq + b G_M63445_IG03 + ;; size=44 bbWeight=0 PerfScore 0.00 +G_M63445_IG08: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + mov w20, wzr + uxtb w21, w20 + cbnz w21, G_M63445_IG04 + ;; size=12 bbWeight=0 PerfScore 0.00 +G_M63445_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x19]
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 bl CORINFO_HELP_NEWSFAST
- ; gcrRegs -[x19] +[x0]
+ ; gcrRegs +[x0]
; gcr arg pop 0 mov x19, x0 ; gcrRegs +[x19] @@ -71,51 +119,9 @@ G_M63445_IG03: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; gcrRegs -[x0 x19] ; gcr arg pop 0 b G_M63445_IG06
- ;; size=116 bbWeight=1 PerfScore 25.00 -G_M63445_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ; gcrRegs +[x19] - mov x0, x19 - ; gcrRegs +[x0] - movz x1, #0xD1FFAB1E // code for System.Diagnostics.Activity:SetCurrent(System.Diagnostics.Activity) - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - ldr x1, [x1] - ;; size=20 bbWeight=1 PerfScore 5.00 -G_M63445_IG05: ; bbWeight=1, epilog, nogc, extend - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20 - br x1 - ; gcr arg pop 0 - ;; size=12 bbWeight=1 PerfScore 3.00 -G_M63445_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[x0 x19] - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20 - ret lr - ;; size=12 bbWeight=0 PerfScore 0.00 -G_M63445_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[x19] - mov x0, x19 - ; gcrRegs +[x0] - movz x1, #0xD1FFAB1E // code for System.Diagnostics.Activity:get_Id():System.String:this - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - ldr x1, [x1] - blr x1 - ; gcr arg pop 0 - cbz x0, G_M63445_IG08 - ldrb w0, [x19, #0xA4] - ; gcrRegs -[x0] - tst w0, #128 - cset x20, eq - b G_M63445_IG03 - ;; size=44 bbWeight=0 PerfScore 0.00 -G_M63445_IG08: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - mov w20, wzr - b G_M63445_IG03 - ;; size=8 bbWeight=0 PerfScore 0.00
+ ;; size=108 bbWeight=0 PerfScore 0.00
-; Total bytes of code 236, prolog size 16, PerfScore 37.50, instruction count 59, allocated bytes for code 236 (MethodHash=ccea082a) for method System.Diagnostics.Activity:set_Current(System.Diagnostics.Activity) (Tier1)
+; Total bytes of code 252, prolog size 20, PerfScore 17.00, instruction count 63, allocated bytes for code 252 (MethodHash=ccea082a) for method System.Diagnostics.Activity:set_Current(System.Diagnostics.Activity) (Tier1)
; ============================================================ Unwind Info: @@ -126,7 +132,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 59 (0x0003b) Actual length = 236 (0x0000ec)
+ Function Length : 63 (0x0003f) Actual length = 252 (0x0000fc)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -137,10 +143,9 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16] - 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! - E4 end - E4 end
+ D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40] + C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24] + 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
E4 end E4 end

+24 (+7.14%) : 210067.dasm - System.Collections.Tests.IEnumerableGenericTests1[System.Collections.Generic.KeyValuePair2[System.Canon,System.Canon]]:b55_2(System.Collections.Generic.IEnumerator1[System.Collections.Generic.KeyValuePair2[System.Canon,System.Canon]],System.Collections.Generic.KeyValuePair`2[System.Canon,System.__Canon][],int):this (Tier1)

@@ -10,8 +10,8 @@ ; Final local variable assignments ; ; V00 this [V00,T03] ( 5, 3 ) ref -> x0 this class-hnd single-def <System.Collections.Tests.IEnumerable_Generic_Tests`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]>
-; V01 arg1 [V01,T00] ( 13, 4.10) ref -> x19 class-hnd single-def <System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]> -; V02 arg2 [V02,T01] ( 8, 4 ) ref -> x2 class-hnd single-def <System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon][]>
+; V01 arg1 [V01,T01] ( 13, 3.90) ref -> x19 class-hnd single-def <System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]> +; V02 arg2 [V02,T00] ( 8, 4 ) ref -> x2 class-hnd single-def <System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon][]>
; V03 arg3 [V03,T02] ( 4, 3.80) int -> x3 single-def ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Collections.Frozen.FrozenDictionary`2+Enumerator[System.String,System.String]> @@ -22,20 +22,23 @@ ;* V10 tmp6 [V10 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V11 tmp7 [V11 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V12 tmp8 [V12 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+; V13 cse0 [V13,T04] ( 4, 0.80) long -> x20 multi-def "CSE - moderate" +; V14 cse1 [V14,T05] ( 4, 0.80) long -> x21 multi-def "CSE - moderate"
; ; Lcl frame size = 8 G_M58438_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]! - str x19, [sp, #0x18]
+ stp fp, lr, [sp, #-0x30]! + stp x19, x20, [sp, #0x18] + str x21, [sp, #0x28]
mov fp, sp mov x19, x1 ; gcrRegs +[x19]
- ;; size=16 bbWeight=1 PerfScore 3.00
+ ;; size=20 bbWeight=1 PerfScore 4.00
G_M58438_IG02: ; bbWeight=1, gcrefRegs=80005 {x0 x2 x19}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x0 x2] cmp w3, #1
- beq G_M58438_IG07
+ beq G_M58438_IG08
;; size=8 bbWeight=1 PerfScore 1.50 G_M58438_IG03: ; bbWeight=0.80, gcrefRegs=80005 {x0 x2 x19}, byrefRegs=0000 {}, byref, isz cmp w3, #3 @@ -54,11 +57,12 @@ G_M58438_IG04: ; bbWeight=0.60, gcrefRegs=80005 {x0 x2 x19}, byrefRegs=00 ldr x7, [x7] ;; size=36 bbWeight=0.60 PerfScore 5.70 G_M58438_IG05: ; bbWeight=0.60, epilog, nogc, extend
- ldr x19, [sp, #0x18] - ldp fp, lr, [sp], #0x20
+ ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x30
br x7 ; gcr arg pop 0
- ;; size=12 bbWeight=0.60 PerfScore 2.40
+ ;; size=16 bbWeight=0.60 PerfScore 3.00
G_M58438_IG06: ; bbWeight=0.20, gcVars=0000000000000000 {}, gcrefRegs=80005 {x0 x2 x19}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs -[x1] ldr w4, [x2, #0x08] @@ -74,24 +78,17 @@ G_M58438_IG06: ; bbWeight=0.20, gcVars=0000000000000000 {}, gcrefRegs=800 blr x7 ; gcrRegs -[x0-x2] ; gcr arg pop 0
- ldr x0, [x19] - movz x11, #0xD1FFAB1E - movk x11, #0xD1FFAB1E LSL #16 - movk x11, #0xD1FFAB1E LSL #32 - cmp x0, x11 - beq G_M58438_IG11 - mov x0, x19 - ; gcrRegs +[x0] - movz x11, #0xD1FFAB1E // code for <unknown method> - movk x11, #0xD1FFAB1E LSL #16 - movk x11, #0xD1FFAB1E LSL #32 - ldr x1, [x11] - blr x1 - ; gcrRegs -[x0] - ; gcr arg pop 0 - b G_M58438_IG08 - ;; size=92 bbWeight=0.20 PerfScore 4.70 -G_M58438_IG07: ; bbWeight=0.20, gcrefRegs=80005 {x0 x2 x19}, byrefRegs=0000 {}, byref, isz
+ ldr x20, [x19] + movz x21, #0xD1FFAB1E + movk x21, #0xD1FFAB1E LSL #16 + movk x21, #0xD1FFAB1E LSL #32 + cmp x20, x21 + bne G_M58438_IG14 + ;; size=64 bbWeight=0.20 PerfScore 3.30 +G_M58438_IG07: ; bbWeight=0.10, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + b G_M58438_IG13 + ;; size=4 bbWeight=0.10 PerfScore 0.10 +G_M58438_IG08: ; bbWeight=0.20, gcrefRegs=80005 {x0 x2 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0 x2] ldr w4, [x2, #0x08] lsr w4, w4, #1 @@ -107,12 +104,19 @@ G_M58438_IG07: ; bbWeight=0.20, gcrefRegs=80005 {x0 x2 x19}, byrefRegs=00 blr x7 ; gcrRegs -[x0-x2] ; gcr arg pop 0
- ldr x0, [x19] - movz x11, #0xD1FFAB1E - movk x11, #0xD1FFAB1E LSL #16 - movk x11, #0xD1FFAB1E LSL #32 - cmp x0, x11 - beq G_M58438_IG10
+ ldr x20, [x19] + movz x21, #0xD1FFAB1E + movk x21, #0xD1FFAB1E LSL #16 + movk x21, #0xD1FFAB1E LSL #32 + cmp x20, x21 + bne G_M58438_IG10 + ;; size=68 bbWeight=0.20 PerfScore 3.50 +G_M58438_IG09: ; bbWeight=0.10, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + movn w0, #0 + str w0, [x19, #0x18] + b G_M58438_IG15 + ;; size=12 bbWeight=0.10 PerfScore 0.25 +G_M58438_IG10: ; bbWeight=0.10, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x0, x19 ; gcrRegs +[x0] movz x11, #0xD1FFAB1E // code for <unknown method> @@ -122,8 +126,8 @@ G_M58438_IG07: ; bbWeight=0.20, gcrefRegs=80005 {x0 x2 x19}, byrefRegs=00 blr x1 ; gcrRegs -[x0] ; gcr arg pop 0
- ;; size=92 bbWeight=0.20 PerfScore 4.70 -G_M58438_IG08: ; bbWeight=0.10, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ;; size=24 bbWeight=0.10 PerfScore 0.60 +G_M58438_IG11: ; bbWeight=0.10, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x0, x19 ; gcrRegs +[x0] movz x11, #0xD1FFAB1E // code for <unknown method> @@ -131,33 +135,43 @@ G_M58438_IG08: ; bbWeight=0.10, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, movk x11, #0xD1FFAB1E LSL #32 ldr x1, [x11] ;; size=20 bbWeight=0.10 PerfScore 0.50
-G_M58438_IG09: ; bbWeight=0.10, epilog, nogc, extend - ldr x19, [sp, #0x18] - ldp fp, lr, [sp], #0x20
+G_M58438_IG12: ; bbWeight=0.10, epilog, nogc, extend + ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x30
br x1 ; gcr arg pop 0
- ;; size=12 bbWeight=0.10 PerfScore 0.40 -G_M58438_IG10: ; bbWeight=0.10, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=16 bbWeight=0.10 PerfScore 0.50 +G_M58438_IG13: ; bbWeight=0.10, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] movn w0, #0 str w0, [x19, #0x18]
- b G_M58438_IG12
+ b G_M58438_IG15
;; size=12 bbWeight=0.10 PerfScore 0.25
-G_M58438_IG11: ; bbWeight=0.10, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - movn w0, #0 - str w0, [x19, #0x18] - ;; size=8 bbWeight=0.10 PerfScore 0.15 -G_M58438_IG12: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M58438_IG14: ; bbWeight=0.10, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + mov x0, x19 + ; gcrRegs +[x0] + movz x11, #0xD1FFAB1E // code for <unknown method> + movk x11, #0xD1FFAB1E LSL #16 + movk x11, #0xD1FFAB1E LSL #32 + ldr x1, [x11] + blr x1 + ; gcrRegs -[x0] + ; gcr arg pop 0 + b G_M58438_IG11 + ;; size=28 bbWeight=0.10 PerfScore 0.70 +G_M58438_IG15: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
movn w0, #0 str w0, [x19, #0x18] ;; size=8 bbWeight=0 PerfScore 0.00
-G_M58438_IG13: ; bbWeight=0, epilog, nogc, extend - ldr x19, [sp, #0x18] - ldp fp, lr, [sp], #0x20
+G_M58438_IG16: ; bbWeight=0, epilog, nogc, extend + ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 336, prolog size 16, PerfScore 24.50, instruction count 84, allocated bytes for code 336 (MethodHash=69031bb9) for method System.Collections.Tests.IEnumerable_Generic_Tests`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:<IEnumerable_Generic_Enumerator_Reset>b__55_2(System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon][],int):this (Tier1)
+; Total bytes of code 360, prolog size 20, PerfScore 25.10, instruction count 90, allocated bytes for code 360 (MethodHash=69031bb9) for method System.Collections.Tests.IEnumerable_Generic_Tests`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:<IEnumerable_Generic_Enumerator_Reset>b__55_2(System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon][],int):this (Tier1)
; ============================================================ Unwind Info: @@ -168,7 +182,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 84 (0x00054) Actual length = 336 (0x000150)
+ Function Length : 90 (0x0005a) Actual length = 360 (0x000168)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -182,10 +196,9 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24] - 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! - E4 end - E4 end
+ D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40] + C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24] + 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
E4 end E4 end

+12 (+7.50%) : 178668.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbolExtensions:IsVerifierReference(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):ubyte (Tier1)

@@ -9,27 +9,29 @@ ; 1 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 7, 5.92) ref -> x19 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
+; V00 arg0 [V00,T00] ( 7, 5.46) ref -> x19 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V02 tmp1 [V02,T03] ( 2, 2 ) int -> x0 "guarded devirt return temp" ;* V03 tmp2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol>
-; V04 tmp3 [V04,T04] ( 3, 2.46) int -> x20 "guarded devirt return temp"
+; V04 tmp3 [V04,T04] ( 3, 2 ) int -> x20 "guarded devirt return temp"
;* V05 tmp4 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol>
-; V06 tmp5 [V06,T05] ( 4, 1.64) ubyte -> x0 "Inline stloc first use temp"
+; V06 tmp5 [V06,T06] ( 4, 1.64) ubyte -> x0 "Inline stloc first use temp"
;* V07 tmp6 [V07 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V08 tmp7 [V08 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V09 cse0 [V09,T01] ( 3, 3 ) long -> x20 "CSE - aggressive" -; V10 cse1 [V10,T02] ( 3, 3 ) long -> x1 "CSE - aggressive"
+; V09 cse0 [V09,T02] ( 3, 2.54) long -> x21 "CSE - aggressive" +; V10 cse1 [V10,T01] ( 3, 3 ) long -> x1 "CSE - aggressive" +; V11 cse2 [V11,T05] ( 2, 2 ) long -> x0 "CSE - moderate"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M28367_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]! - stp x19, x20, [sp, #0x10]
+ stp fp, lr, [sp, #-0x30]! + stp x19, x20, [sp, #0x18] + str x21, [sp, #0x28]
mov fp, sp mov x19, x0 ; gcrRegs +[x19]
- ;; size=16 bbWeight=1 PerfScore 3.00
+ ;; size=20 bbWeight=1 PerfScore 4.00
G_M28367_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldr x1, [x19] movz x0, #0xD1FFAB1E @@ -44,52 +46,56 @@ G_M28367_IG03: ; bbWeight=0.46, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, and w0, w0, #15 cmp w0, #5 ccmp w0, #10, z, ne
- beq G_M28367_IG09
+ beq G_M28367_IG10
;; size=24 bbWeight=0.46 PerfScore 2.99 G_M28367_IG04: ; bbWeight=0.26, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz cmp w0, #6
- beq G_M28367_IG09
+ beq G_M28367_IG10
;; size=8 bbWeight=0.26 PerfScore 0.39 G_M28367_IG05: ; bbWeight=0.46, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref ldr w0, [x19, #0x88] asr w0, w0, #10 and w20, w0, #15
- b G_M28367_IG07
+ b G_M28367_IG08
;; size=16 bbWeight=0.46 PerfScore 2.53 G_M28367_IG06: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz mov x0, x19 ; gcrRegs +[x0]
- ldr x20, [x1, #0xA8] - ldr x1, [x20, #0x18]
+ ldr x21, [x1, #0xA8] + ldr x1, [x21, #0x18]
blr x1 ; gcrRegs -[x0]
- cbz w0, G_M28367_IG09
+ cbz w0, G_M28367_IG10 + ;; size=20 bbWeight=1 PerfScore 8.50 +G_M28367_IG07: ; bbWeight=0.54, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x0, x19 ; gcrRegs +[x0]
- ldr x1, [x20, #0x28]
+ ldr x1, [x21, #0x28]
blr x1 ; gcrRegs -[x0 x19] sxtw w20, w0
- ;; size=36 bbWeight=1 PerfScore 13.50 -G_M28367_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=16 bbWeight=0.54 PerfScore 2.70 +G_M28367_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
cmp w20, #11 cset x0, ne ;; size=8 bbWeight=1 PerfScore 1.00
-G_M28367_IG08: ; bbWeight=1, epilog, nogc, extend - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20
+G_M28367_IG09: ; bbWeight=1, epilog, nogc, extend + ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=1 PerfScore 3.00 -G_M28367_IG09: ; bbWeight=0.46, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=16 bbWeight=1 PerfScore 5.00 +G_M28367_IG10: ; bbWeight=0.46, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, wzr ;; size=4 bbWeight=0.46 PerfScore 0.23
-G_M28367_IG10: ; bbWeight=0.46, epilog, nogc, extend - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20
+G_M28367_IG11: ; bbWeight=0.46, epilog, nogc, extend + ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=0.46 PerfScore 1.38
+ ;; size=16 bbWeight=0.46 PerfScore 2.30
-; Total bytes of code 160, prolog size 12, PerfScore 34.02, instruction count 40, allocated bytes for code 160 (MethodHash=cff59130) for method Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbolExtensions:IsVerifierReference(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):ubyte (Tier1)
+; Total bytes of code 172, prolog size 16, PerfScore 35.64, instruction count 43, allocated bytes for code 172 (MethodHash=cff59130) for method Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbolExtensions:IsVerifierReference(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):ubyte (Tier1)
; ============================================================ Unwind Info: @@ -100,7 +106,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 40 (0x00028) Actual length = 160 (0x0000a0)
+ Function Length : 43 (0x0002b) Actual length = 172 (0x0000ac)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -111,10 +117,9 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16] - 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! - E4 end - E4 end
+ D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40] + C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24] + 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
E4 end E4 end

librariestestsnotieredcompilation.run.linux.arm64.Release.mch

-40 (-32.26%) : 193142.dasm - System.Runtime.Serialization.Formatters.Tests.StructContainingArraysOfOtherStructs:Equals(System.Object):ubyte:this (FullOpts)

@@ -8,93 +8,72 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 2.50) byref -> x0 this single-def
-; V01 arg1 [V01,T00] ( 5, 3.75) ref -> x19 class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 4, 3.50) ref -> x1 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 4.50) ref -> x1 class-hnd "spilling QMark2" <System.Runtime.Serialization.Formatters.Tests.StructContainingArraysOfOtherStructs> -; V04 tmp2 [V04,T03] ( 2, 2 ) ref -> x20 class-hnd exact single-def "impAppendStmt" <System.Runtime.Serialization.Formatters.Tests.StructContainingOtherStructs[]> -; V05 cse0 [V05,T04] ( 4, 1.25) long -> x2 "CSE - moderate" -; V06 cse1 [V06,T05] ( 3, 1 ) long -> x1 "CSE - moderate"
+; V03 tmp1 [V03,T01] ( 3, 4.50) ref -> x2 class-hnd "spilling QMark2" <System.Runtime.Serialization.Formatters.Tests.StructContainingArraysOfOtherStructs> +; V04 tmp2 [V04,T03] ( 2, 2 ) ref -> x0 class-hnd exact single-def "impAppendStmt" <System.Runtime.Serialization.Formatters.Tests.StructContainingOtherStructs[]>
; ; Lcl frame size = 0
-G_M20050_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG - stp fp, lr, [sp, #-0x20]! - stp x19, x20, [sp, #0x10]
+G_M20050_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG + stp fp, lr, [sp, #-0x10]!
mov fp, sp
- mov x19, x1 - ; gcrRegs +[x19] - ;; size=16 bbWeight=1 PerfScore 3.00 -G_M20050_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref, isz - ; byrRegs +[x0] - mov x1, x19 - ; gcrRegs +[x1] - cbz x1, G_M20050_IG04
;; size=8 bbWeight=1 PerfScore 1.50
-G_M20050_IG03: ; bbWeight=0.25, gcrefRegs=80002 {x1 x19}, byrefRegs=0001 {x0}, byref, isz - ldr x1, [x1] - ; gcrRegs -[x1] - movz x2, #0xD1FFAB1E - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - cmp x1, x2
+G_M20050_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0001 {x0}, byref, isz + ; gcrRegs +[x1] + ; byrRegs +[x0] + mov x2, x1 + ; gcrRegs +[x2] + cbz x2, G_M20050_IG04 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M20050_IG03: ; bbWeight=0.25, gcrefRegs=0006 {x1 x2}, byrefRegs=0001 {x0}, byref, isz + ldr x2, [x2] + ; gcrRegs -[x2] + movz x3, #0xD1FFAB1E + movk x3, #0xD1FFAB1E LSL #16 + movk x3, #0xD1FFAB1E LSL #32 + cmp x2, x3
beq G_M20050_IG06 ;; size=24 bbWeight=0.25 PerfScore 1.50 G_M20050_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19]
+ ; gcrRegs -[x1]
; byrRegs -[x0] mov w0, wzr ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M20050_IG05: ; bbWeight=0.50, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20
+ ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 1.50 -G_M20050_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, gcvars, byref, isz - ; gcrRegs +[x19]
+ ;; size=8 bbWeight=0.50 PerfScore 1.00 +G_M20050_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0001 {x0}, gcvars, byref + ; gcrRegs +[x1]
; byrRegs +[x0]
- ldr x20, [x0] - ; gcrRegs +[x20] - cmp x1, x2 - beq G_M20050_IG08 - ;; size=12 bbWeight=0.50 PerfScore 2.25 -G_M20050_IG07: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref - ; byrRegs -[x0] - mov x1, x19 - ; gcrRegs +[x1] - mov x0, x2 - bl CORINFO_HELP_UNBOX - ; gcrRegs -[x1] - ; gcr arg pop 0 - ;; size=12 bbWeight=0.25 PerfScore 0.50 -G_M20050_IG08: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref - ldr x1, [x19, #0x08] - ; gcrRegs +[x1] - mov x0, x20
+ ldr x0, [x0]
; gcrRegs +[x0]
+ ; byrRegs -[x0] + ldr x1, [x1, #0x08]
movz x2, #0xD1FFAB1E // code for System.Runtime.Serialization.Formatters.Tests.EqualityHelpers:ArraysAreEqual[System.Runtime.Serialization.Formatters.Tests.StructContainingOtherStructs](System.Runtime.Serialization.Formatters.Tests.StructContainingOtherStructs[],System.Runtime.Serialization.Formatters.Tests.StructContainingOtherStructs[]):ubyte movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2]
- ;; size=24 bbWeight=0.50 PerfScore 4.00 -G_M20050_IG09: ; bbWeight=0.50, epilog, nogc, extend - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20
+ ;; size=24 bbWeight=0.50 PerfScore 5.25 +G_M20050_IG07: ; bbWeight=0.50, epilog, nogc, extend + ldp fp, lr, [sp], #0x10
br x2 ; gcr arg pop 0
- ;; size=12 bbWeight=0.50 PerfScore 1.50
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 124, prolog size 16, PerfScore 16.00, instruction count 31, allocated bytes for code 124 (MethodHash=8ccbb1ad) for method System.Runtime.Serialization.Formatters.Tests.StructContainingArraysOfOtherStructs:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 84, prolog size 8, PerfScore 12.00, instruction count 21, allocated bytes for code 84 (MethodHash=8ccbb1ad) for method System.Runtime.Serialization.Formatters.Tests.StructContainingArraysOfOtherStructs:Equals(System.Object):ubyte:this (FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 1
Epilog Count : 2 E bit : 0 X bit : 0 Vers : 0
- Function Length : 31 (0x0001f) Actual length = 124 (0x00007c)
+ 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) @@ -105,10 +84,7 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16] - 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! - E4 end - E4 end
+ 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
E4 end E4 end

-48 (-27.91%) : 129025.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)

@@ -7,15 +7,17 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T04] ( 5, 7.50) ref -> x0 class-hnd single-def <System.String> -; V01 arg1 [V01,T02] ( 6, 11 ) ref -> x1 class-hnd single-def <System.String> -; V02 arg2 [V02,T05] ( 4, 6.50) int -> x2 single-def -; V03 arg3 [V03,T07] ( 5, 4.50) int -> x3 single-def -; V04 loc0 [V04,T03] ( 6, 13 ) int -> x5 -; V05 loc1 [V05,T00] ( 11, 27.50) int -> x6
+; V00 arg0 [V00,T04] ( 4, 7 ) ref -> x0 class-hnd single-def <System.String> +; V01 arg1 [V01,T02] ( 4, 10 ) ref -> x1 class-hnd single-def <System.String> +; V02 arg2 [V02,T07] ( 3, 6 ) int -> x2 single-def +; V03 arg3 [V03,T08] ( 5, 4.50) int -> x3 single-def +; V04 loc0 [V04,T01] ( 5, 12 ) int -> x5 +; V05 loc1 [V05,T00] ( 7, 25 ) int -> x6
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 cse0 [V07,T06] ( 5, 7 ) int -> x4 "CSE - aggressive" -; V08 cse1 [V08,T01] ( 6, 13.50) int -> x8 multi-def "CSE - aggressive"
+; V07 cse0 [V07,T05] ( 3, 8.50) int -> x8 "CSE - aggressive" +; V08 cse1 [V08,T06] ( 3, 8.50) int -> x7 "CSE - aggressive" +; V09 cse2 [V09,T09] ( 4, 6.50) int -> x4 "CSE - aggressive" +; V10 cse3 [V10,T03] ( 3, 12 ) int -> x8 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -37,11 +39,11 @@ G_M6389_IG03: ; bbWeight=2, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, by ;; size=4 bbWeight=2 PerfScore 1.00 G_M6389_IG04: ; bbWeight=8, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz cmp w6, w5
- bge G_M6389_IG06
+ bge G_M6389_IG08
;; size=8 bbWeight=8 PerfScore 12.00 G_M6389_IG05: ; bbWeight=4, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz cmp w6, w4
- bhs G_M6389_IG11
+ bhs G_M6389_IG10
add x7, x0, #12 ; byrRegs +[x7] ldrh w7, [x7, w6, UXTW #2] @@ -49,55 +51,36 @@ G_M6389_IG05: ; bbWeight=4, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, by add w8, w2, w6 ldr w9, [x1, #0x08] cmp w8, w9
- bhs G_M6389_IG11
+ bhs G_M6389_IG10
add x9, x1, #12 ; byrRegs +[x9] ldrh w8, [x9, w8, UXTW #2] cmp w7, w8 beq G_M6389_IG03 ;; size=48 bbWeight=4 PerfScore 60.00
-G_M6389_IG06: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
+G_M6389_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0-x1]
; byrRegs -[x9]
- cmp w6, w5 - bge G_M6389_IG09 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M6389_IG07: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz - cmp w6, w4 - bhs G_M6389_IG11 - add x0, x0, #12 - ; gcrRegs -[x0] - ; byrRegs +[x0] - ldrh w0, [x0, w6, UXTW #2] - ; byrRegs -[x0] - add w8, w2, w6 - ldr w3, [x1, #0x08] - cmp w8, w3 - bhs G_M6389_IG11 - add x4, x1, #12 - ; byrRegs +[x4] - ldrh w1, [x4, w8, UXTW #2] - ; gcrRegs -[x1] - sub w0, w0, w1 - ;; size=44 bbWeight=0.50 PerfScore 7.00 -G_M6389_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ sub w0, w7, w8 + ;; size=4 bbWeight=0.50 PerfScore 0.25 +G_M6389_IG07: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M6389_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; byrRegs -[x4]
+G_M6389_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
sub w0, w4, w3 ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M6389_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M6389_IG09: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M6389_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M6389_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 172, prolog size 8, PerfScore 91.25, instruction count 43, allocated bytes for code 172 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
+; Total bytes of code 124, prolog size 8, PerfScore 83.00, instruction count 31, allocated bytes for code 124 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
; ============================================================ Unwind Info: @@ -108,7 +91,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 43 (0x0002b) Actual length = 172 (0x0000ac)
+ Function Length : 31 (0x0001f) Actual length = 124 (0x00007c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-36 (-21.95%) : 31503.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan1[uint]):int (FullOpts)

@@ -11,12 +11,14 @@ ;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]> ; V02 loc0 [V02,T00] ( 7, 24.50) int -> x4 ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T01] ( 6, 20 ) int -> x5 "dup spill" -; V05 tmp2 [V05,T05] ( 3, 5.50) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP -; V06 tmp3 [V06,T04] ( 5, 7 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP -; V07 tmp4 [V07,T06] ( 3, 5.50) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP -; V08 tmp5 [V08,T03] ( 6, 7.50) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP -; V09 cse0 [V09,T02] ( 6, 13.50) long -> x6 multi-def "CSE - aggressive"
+; V04 tmp1 [V04,T01] ( 2, 16 ) int -> x4 "dup spill" +; V05 tmp2 [V05,T07] ( 2, 5 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP +; V06 tmp3 [V06,T04] ( 4, 6.50) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP +; V07 tmp4 [V07,T08] ( 2, 5 ) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP +; V08 tmp5 [V08,T03] ( 5, 7 ) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP +; V09 cse0 [V09,T05] ( 3, 8.50) int -> x6 "CSE - aggressive" +; V10 cse1 [V10,T06] ( 3, 8.50) int -> x5 "CSE - aggressive" +; V11 cse2 [V11,T02] ( 3, 12 ) long -> x5 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -33,51 +35,39 @@ G_M264_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs -[x0 x2] cmp w1, w3 blt G_M264_IG11
- b G_M264_IG09
+ b G_M264_IG07
;; size=12 bbWeight=0.50 PerfScore 1.25 G_M264_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref ; byrRegs +[x0 x2] sxtw w4, w3 ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M264_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
- sub w5, w4, #1 - sxtw w4, w5 - tbnz w4, #31, G_M264_IG06
+ sub w4, w4, #1 + tbnz w4, #31, G_M264_IG09
cmp w4, w1 bhs G_M264_IG13
- ubfiz x6, x4, #2, #32 - ldr w7, [x0, x6]
+ ubfiz x5, x4, #2, #32 + ldr w6, [x0, x5]
cmp w4, w3 bhs G_M264_IG13
- ldr w6, [x2, x6] - cmp w7, w6
+ ldr w5, [x2, x5] + cmp w6, w5
beq G_M264_IG05
- ;; size=48 bbWeight=4 PerfScore 54.00 -G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz - tbz w5, #31, G_M264_IG08 - mov w0, wzr - ; byrRegs -[x0]
+ ;; size=44 bbWeight=4 PerfScore 52.00 +G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ; byrRegs -[x0 x2] + cmp w5, w6 + bhi G_M264_IG11
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M264_IG07: ; bbWeight=0.50, epilog, nogc, extend
+G_M264_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov w0, #1 + ;; size=4 bbWeight=0.50 PerfScore 0.25 +G_M264_IG08: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M264_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, gcvars, byref, isz - ; byrRegs +[x0] - cmp w5, w1 - bhs G_M264_IG13 - ubfiz x6, x5, #2, #32 - ldr w0, [x0, x6] - ; byrRegs -[x0] - cmp w5, w3 - bhs G_M264_IG13 - ldr w1, [x2, x6] - cmp w0, w1 - blo G_M264_IG11 - ;; size=36 bbWeight=0.50 PerfScore 5.75 -G_M264_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; byrRegs -[x2] - mov w0, #1
+G_M264_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + mov w0, wzr
;; size=4 bbWeight=0.50 PerfScore 0.25 G_M264_IG10: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x10 @@ -96,7 +86,7 @@ G_M264_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 164, prolog size 8, PerfScore 68.50, instruction count 41, allocated bytes for code 164 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
+; Total bytes of code 128, prolog size 8, PerfScore 61.00, instruction count 32, allocated bytes for code 128 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
; ============================================================ Unwind Info: @@ -107,7 +97,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
+ Function Length : 32 (0x00020) Actual length = 128 (0x000080)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+20 (+4.42%) : 20907.dasm - System.Formats.Asn1.AsnDecoder:DecodeLength(System.ReadOnlySpan`1[ubyte],int,byref,byref):int (FullOpts)

@@ -13,36 +13,37 @@ ; V02 arg2 [V02,T09] ( 5, 4 ) byref -> x19 single-def ; V03 arg3 [V03,T01] ( 12, 14.50) byref -> x4 single-def ; V04 loc0 [V04,T13] ( 6, 3 ) ubyte -> x5
-; V05 loc1 [V05,T07] ( 6, 8 ) ubyte -> x3 -; V06 loc2 [V06,T11] ( 5, 5.50) ubyte -> x2 -; V07 loc3 [V07,T03] ( 7, 14 ) int -> x5 -; V08 loc4 [V08,T02] ( 5, 14.50) int -> x6 -; V09 loc5 [V09,T04] ( 4, 12 ) ubyte -> x8
+; V05 loc1 [V05,T07] ( 6, 8 ) ubyte -> x20 +; V06 loc2 [V06,T12] ( 4, 3.50) ubyte -> x21 +; V07 loc3 [V07,T03] ( 7, 14 ) int -> x2 +; V08 loc4 [V08,T02] ( 5, 14.50) int -> x3 +; V09 loc5 [V09,T04] ( 4, 12 ) ubyte -> x22
;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V11 tmp1 [V11,T14] ( 3, 3 ) int -> x5 "Span.get_Item index" ; V12 tmp2 [V12,T15] ( 3, 1.50) int -> x2
-; V13 tmp3 [V13,T00] ( 3, 24 ) int -> x8 "Span.get_Item index" -; V14 tmp4 [V14 ] ( 3, 3 ) struct ( 8) [fp+0x20] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]> -; V15 tmp5 [V15 ] ( 3, 3 ) struct ( 8) [fp+0x18] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]> -; V16 tmp6 [V16,T12] ( 4, 4 ) int -> x0 "Single return block return value"
+; V13 tmp3 [V13,T00] ( 3, 24 ) int -> x6 "Span.get_Item index" +; V14 tmp4 [V14 ] ( 3, 3 ) struct ( 8) [fp+0x18] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]> +; V15 tmp5 [V15 ] ( 3, 3 ) struct ( 8) [fp+0x10] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]> +; V16 tmp6 [V16,T11] ( 4, 4 ) int -> x0 "Single return block return value"
; V17 tmp7 [V17,T08] ( 3, 5.50) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP ; V18 tmp8 [V18,T06] ( 5, 7 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V19 tmp9 [V19 ] ( 3, 3 ) ubyte -> [fp+0x20] do-not-enreg[X] addr-exposed "field V14.hasValue (fldOffset=0x0)" P-DEP -; V20 tmp10 [V20 ] ( 3, 3 ) int -> [fp+0x24] do-not-enreg[X] addr-exposed "field V14.value (fldOffset=0x4)" P-DEP -; V21 tmp11 [V21 ] ( 3, 3 ) ubyte -> [fp+0x18] do-not-enreg[X] addr-exposed "field V15.hasValue (fldOffset=0x0)" P-DEP -; V22 tmp12 [V22 ] ( 3, 3 ) int -> [fp+0x1C] do-not-enreg[X] addr-exposed "field V15.value (fldOffset=0x4)" P-DEP -; V23 cse0 [V23,T05] ( 3, 12 ) int -> x7 "CSE - aggressive"
+; V19 tmp9 [V19 ] ( 3, 3 ) ubyte -> [fp+0x18] do-not-enreg[X] addr-exposed "field V14.hasValue (fldOffset=0x0)" P-DEP +; V20 tmp10 [V20 ] ( 3, 3 ) int -> [fp+0x1C] do-not-enreg[X] addr-exposed "field V14.value (fldOffset=0x4)" P-DEP +; V21 tmp11 [V21 ] ( 3, 3 ) ubyte -> [fp+0x10] do-not-enreg[X] addr-exposed "field V15.hasValue (fldOffset=0x0)" P-DEP +; V22 tmp12 [V22 ] ( 3, 3 ) int -> [fp+0x14] do-not-enreg[X] addr-exposed "field V15.value (fldOffset=0x4)" P-DEP +; V23 cse0 [V23,T05] ( 3, 12 ) int -> x5 "CSE - aggressive"
; V24 cse1 [V24,T16] ( 3, 1.50) int -> x3 "CSE - moderate" ;
-; Lcl frame size = 24
+; Lcl frame size = 16
G_M45882_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]! - str x19, [sp, #0x28]
+ stp fp, lr, [sp, #-0x40]! + stp x19, x20, [sp, #0x20] + stp x21, x22, [sp, #0x30]
mov fp, sp mov x19, x3 ; byrRegs +[x19]
- ;; size=16 bbWeight=1 PerfScore 3.00
+ ;; size=20 bbWeight=1 PerfScore 4.00
G_M45882_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80011 {x0 x4 x19}, byref, isz ; byrRegs +[x0 x4] str xzr, [x19] @@ -66,16 +67,17 @@ G_M45882_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80011 {x0 x4 ; byrRegs -[x0] ;; size=52 bbWeight=0.50 PerfScore 7.00 G_M45882_IG04: ; bbWeight=0.50, epilog, nogc, extend
- ldr x19, [sp, #0x28] - ldp fp, lr, [sp], #0x30
+ ldp x21, x22, [sp, #0x30] + ldp x19, x20, [sp, #0x20] + ldp fp, lr, [sp], #0x40
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 2.00
+ ;; size=16 bbWeight=0.50 PerfScore 2.00
G_M45882_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=80011 {x0 x4 x19}, gcvars, byref, isz ; byrRegs +[x0] cmp w5, #128 bge G_M45882_IG06
- str xzr, [fp, #0x18] // [V15 tmp5] - add x0, fp, #24 // [V15 tmp5]
+ str xzr, [fp, #0x10] // [V15 tmp5] + add x0, fp, #16 // [V15 tmp5]
; byrRegs -[x0] mov w1, w5 movz x2, #0xD1FFAB1E // code for <unknown method> @@ -85,7 +87,7 @@ G_M45882_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000 blr x2 ; byrRegs -[x4] ; gcr arg pop 0
- ldr x0, [fp, #0x18] // [V15 tmp5]
+ ldr x0, [fp, #0x10] // [V15 tmp5]
str x0, [x19] b G_M45882_IG22 ;; size=52 bbWeight=0.50 PerfScore 6.50 @@ -101,9 +103,9 @@ G_M45882_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80011 {x0 x4 G_M45882_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80011 {x0 x4 x19}, byref, isz ; byrRegs +[x0] and w3, w5, #0xD1FFAB1E
- uxtb w3, w3 - add w5, w3, #1 - cmp w5, w1
+ uxtb w20, w3 + add w3, w20, #1 + cmp w3, w1
ble G_M45882_IG10 str wzr, [x4] ;; size=24 bbWeight=0.50 PerfScore 2.00 @@ -112,10 +114,11 @@ G_M45882_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr mov w0, wzr ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M45882_IG09: ; bbWeight=0.50, epilog, nogc, extend
- ldr x19, [sp, #0x28] - ldp fp, lr, [sp], #0x30
+ ldp x21, x22, [sp, #0x30] + ldp x19, x20, [sp, #0x20] + ldp fp, lr, [sp], #0x40
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 2.00
+ ;; size=16 bbWeight=0.50 PerfScore 2.00
G_M45882_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=80011 {x0 x4 x19}, gcvars, byref, isz ; byrRegs +[x0 x4 x19] cmp w2, #2 @@ -128,9 +131,9 @@ G_M45882_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80011 {x0 x4 mov w2, #1 ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M45882_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80011 {x0 x4 x19}, byref, isz
- uxtb w2, w2 - cbz w2, G_M45882_IG14 - cmp w3, #4
+ uxtb w21, w2 + cbz w21, G_M45882_IG14 + cmp w20, #4
ble G_M45882_IG14 ;; size=16 bbWeight=0.50 PerfScore 1.50 G_M45882_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {x4}, byref @@ -141,43 +144,43 @@ G_M45882_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {x4}, b ;; size=12 bbWeight=0.50 PerfScore 1.25 G_M45882_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80011 {x0 x4 x19}, byref, isz ; byrRegs +[x0 x19]
- mov w5, wzr - mov w6, wzr - cmp w3, #0
+ mov w2, wzr + mov w3, wzr + cmp w20, #0
ble G_M45882_IG19 ;; size=16 bbWeight=0.50 PerfScore 1.25 G_M45882_IG15: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80011 {x0 x4 x19}, byref, isz
- ldr w7, [x4] - sxtw w8, w7 - cmp w8, w1
+ ldr w5, [x4] + sxtw w6, w5 + cmp w6, w1
bhs G_M45882_IG25
- ldrb w8, [x0, w8, UXTW #2] - add w7, w7, #1 - str w7, [x4] - cbnz w5, G_M45882_IG18
+ ldrb w22, [x0, w6, UXTW #2] + add w5, w5, #1 + str w5, [x4] + cbnz w2, G_M45882_IG18
;; size=32 bbWeight=4 PerfScore 42.00 G_M45882_IG16: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=80011 {x0 x4 x19}, byref, isz
- cbz w2, G_M45882_IG17 - cbz w8, G_M45882_IG20 - ;; size=8 bbWeight=2 PerfScore 4.00
+ cbz w21, G_M45882_IG17 + cbz w22, G_M45882_IG20 + b G_M45882_IG18 + ;; size=12 bbWeight=2 PerfScore 6.00
G_M45882_IG17: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=80011 {x0 x4 x19}, byref, isz
- cbnz w2, G_M45882_IG18 - cbz w8, G_M45882_IG18 - sub w7, w3, w6 - cmp w7, #4
+ cbz w22, G_M45882_IG18 + sub w5, w20, w3 + cmp w5, #4
bgt G_M45882_IG13
- ;; size=20 bbWeight=2 PerfScore 8.00
+ ;; size=16 bbWeight=2 PerfScore 6.00
G_M45882_IG18: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80011 {x0 x4 x19}, byref, isz
- orr w5, w8, w5, LSL #8 - add w6, w6, #1 - cmp w6, w3
+ orr w2, w22, w2, LSL #8 + add w3, w3, #1 + cmp w3, w20
blt G_M45882_IG15 ;; size=16 bbWeight=4 PerfScore 12.00 G_M45882_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80010 {x4 x19}, byref, isz ; byrRegs -[x0]
- tbnz w5, #31, G_M45882_IG13 - cbz w2, G_M45882_IG21 - cmp w5, #128
+ tbnz w2, #31, G_M45882_IG13 + cbz w21, G_M45882_IG21 + cmp w2, #128
bhs G_M45882_IG21 ;; size=16 bbWeight=0.50 PerfScore 1.75 G_M45882_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {x4}, byref @@ -188,16 +191,16 @@ G_M45882_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {x4}, b ;; size=12 bbWeight=0.50 PerfScore 1.25 G_M45882_IG21: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref ; byrRegs -[x4] +[x19]
- str xzr, [fp, #0x20] // [V14 tmp4] - add x0, fp, #32 // [V14 tmp4] - mov w1, w5
+ str xzr, [fp, #0x18] // [V14 tmp4] + add x0, fp, #24 // [V14 tmp4] + mov w1, w2
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2 ; gcr arg pop 0
- ldr x0, [fp, #0x20] // [V14 tmp4]
+ ldr x0, [fp, #0x18] // [V14 tmp4]
str x0, [x19] ;; size=40 bbWeight=0.50 PerfScore 5.25 G_M45882_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref @@ -205,22 +208,24 @@ G_M45882_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr mov w0, #5 ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M45882_IG23: ; bbWeight=0.50, epilog, nogc, extend
- ldr x19, [sp, #0x28] - ldp fp, lr, [sp], #0x30
+ ldp x21, x22, [sp, #0x30] + ldp x19, x20, [sp, #0x20] + ldp fp, lr, [sp], #0x40
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 2.00
+ ;; size=16 bbWeight=0.50 PerfScore 2.00
G_M45882_IG24: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ldr x19, [sp, #0x28] - ldp fp, lr, [sp], #0x30
+ ldp x21, x22, [sp, #0x30] + ldp x19, x20, [sp, #0x20] + ldp fp, lr, [sp], #0x40
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 2.00
+ ;; size=16 bbWeight=0.50 PerfScore 2.00
G_M45882_IG25: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 452, prolog size 16, PerfScore 112.25, instruction count 113, allocated bytes for code 452 (MethodHash=0a754cc5) for method System.Formats.Asn1.AsnDecoder:DecodeLength(System.ReadOnlySpan`1[ubyte],int,byref,byref):int (FullOpts)
+; Total bytes of code 472, prolog size 20, PerfScore 113.25, instruction count 118, allocated bytes for code 472 (MethodHash=0a754cc5) for method System.Formats.Asn1.AsnDecoder:DecodeLength(System.ReadOnlySpan`1[ubyte],int,byref,byref):int (FullOpts)
; ============================================================ Unwind Info: ...

+12 (+6.00%) : 171843.dasm - System.Xml.XmlDocument:get_SchemaInfo():System.Xml.Schema.IXmlSchemaInfo:this (FullOpts)

@@ -13,16 +13,18 @@ ; V02 loc1 [V02,T04] ( 3, 1.50) int -> x0 ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V04 tmp1 [V04,T02] ( 3, 2.25) ref -> x1 single-def "CASTCLASS eval op1"
-; V05 tmp2 [V05,T05] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable" -; V06 tmp3 [V06,T01] ( 6, 4.75) ref -> x0 class-hnd "spilling QMark2" <System.Xml.XmlElement>
+; V05 tmp2 [V05,T05] ( 3, 1.25) long -> x2 "fgMakeTemp is creating a new local variable" +; V06 tmp3 [V06,T01] ( 5, 3.75) ref -> x0 class-hnd "spilling QMark2" <System.Xml.XmlElement>
; V07 tmp4 [V07,T03] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
+; V08 cse0 [V08,T06] ( 3, 1 ) long -> x19 "CSE - moderate"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M33783_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x10]!
+ stp fp, lr, [sp, #-0x20]! + str x19, [sp, #0x18]
mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50
+ ;; size=12 bbWeight=1 PerfScore 2.50
G_M33783_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x0] ldrb w1, [x0, #0xD1FFAB1E] @@ -39,22 +41,21 @@ G_M33783_IG03: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b cbz x0, G_M33783_IG10 ;; size=28 bbWeight=0.50 PerfScore 6.00 G_M33783_IG04: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
- ldr x2, [x0] - movz x3, #0xD1FFAB1E - movk x3, #0xD1FFAB1E LSL #16 - movk x3, #0xD1FFAB1E LSL #32 - cmp x2, x3
+ ldr x19, [x0] + movz x2, #0xD1FFAB1E + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + cmp x19, x2
beq G_M33783_IG06 ;; size=24 bbWeight=0.25 PerfScore 1.50 G_M33783_IG05: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref ; gcrRegs -[x0]
- mov x0, x3
+ mov x0, x2
bl CORINFO_HELP_CHKCASTCLASS_SPECIAL ; gcrRegs -[x1] +[x0] ;; size=8 bbWeight=0.12 PerfScore 0.19 G_M33783_IG06: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- ldr x1, [x0] - ldr x1, [x1, #0x78]
+ ldr x1, [x19, #0x78]
ldr x1, [x1] blr x1 movz x11, #0xD1FFAB1E // code for <unknown method> @@ -72,11 +73,12 @@ G_M33783_IG06: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b movk x0, #0xD1FFAB1E LSL #32 ldr x0, [x0] ; gcrRegs +[x0]
- ;; size=68 bbWeight=0.50 PerfScore 11.50
+ ;; size=64 bbWeight=0.50 PerfScore 10.00
G_M33783_IG07: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
+ ldr x19, [sp, #0x18] + ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
G_M33783_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[x0] movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> @@ -86,9 +88,10 @@ G_M33783_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000 ; gcrRegs +[x0] ;; size=16 bbWeight=0.50 PerfScore 2.25 G_M33783_IG09: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
+ ldr x19, [sp, #0x18] + ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
G_M33783_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[x0] movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> @@ -98,22 +101,23 @@ G_M33783_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000 ; gcrRegs +[x0] ;; size=16 bbWeight=0.50 PerfScore 2.25 G_M33783_IG11: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
+ ldr x19, [sp, #0x18] + ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
-; Total bytes of code 200, prolog size 8, PerfScore 32.19, instruction count 50, allocated bytes for code 200 (MethodHash=26627c08) for method System.Xml.XmlDocument:get_SchemaInfo():System.Xml.Schema.IXmlSchemaInfo:this (FullOpts)
+; Total bytes of code 212, prolog size 12, PerfScore 34.69, instruction count 53, allocated bytes for code 212 (MethodHash=26627c08) for method System.Xml.XmlDocument:get_SchemaInfo():System.Xml.Schema.IXmlSchemaInfo:this (FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 1
+ Code Words : 2
Epilog Count : 3 E bit : 0 X bit : 0 Vers : 0
- Function Length : 50 (0x00032) Actual length = 200 (0x0000c8)
+ Function Length : 53 (0x00035) Actual length = 212 (0x0000d4)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -127,7 +131,10 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
+ D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24] + 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! + E4 end + E4 end
E4 end E4 end

+8 (+7.14%) : 166959.dasm - System.Xml.DocumentXPathNavigator:get_ValueDocument():System.String:this (FullOpts)

@@ -13,16 +13,18 @@ ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Xml.XmlDocument> ; V04 tmp2 [V04,T03] ( 3, 4.25) ref -> x1 single-def "CASTCLASS eval op1"
-; V05 tmp3 [V05,T04] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable" -; V06 tmp4 [V06,T00] ( 6, 8.75) ref -> x0 class-hnd "spilling QMark2" <System.Xml.XmlElement> -; V07 tmp5 [V07,T01] ( 3, 6 ) ref -> x0 single-def "argument with side effect"
+; V05 tmp3 [V05,T04] ( 3, 1.25) long -> x2 "fgMakeTemp is creating a new local variable" +; V06 tmp4 [V06,T01] ( 5, 5.75) ref -> x0 class-hnd "spilling QMark2" <System.Xml.XmlElement> +; V07 tmp5 [V07,T00] ( 3, 6 ) ref -> x0 single-def "argument with side effect" +; V08 cse0 [V08,T05] ( 3, 1 ) long -> x19 "CSE - moderate"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M56653_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x10]!
+ stp fp, lr, [sp, #-0x20]! + str x19, [sp, #0x18]
mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50
+ ;; size=12 bbWeight=1 PerfScore 2.50
G_M56653_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x0] ldr x0, [x0, #0x08] @@ -36,28 +38,28 @@ G_M56653_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre cbz x0, G_M56653_IG07 ;; size=32 bbWeight=1 PerfScore 15.00 G_M56653_IG03: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
- ldr x2, [x0] - movz x3, #0xD1FFAB1E - movk x3, #0xD1FFAB1E LSL #16 - movk x3, #0xD1FFAB1E LSL #32 - cmp x2, x3
+ ldr x19, [x0] + movz x2, #0xD1FFAB1E + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + cmp x19, x2
beq G_M56653_IG05 ;; size=24 bbWeight=0.25 PerfScore 1.50 G_M56653_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref ; gcrRegs -[x0]
- mov x0, x3
+ mov x0, x2
bl CORINFO_HELP_CHKCASTCLASS_SPECIAL ; gcrRegs -[x1] +[x0] ;; size=8 bbWeight=0.12 PerfScore 0.19
-G_M56653_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref - ldr x1, [x0] - ldr x1, [x1, #0x70]
+G_M56653_IG05: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref + ldr x1, [x19, #0x70]
ldr x1, [x1, #0x18]
- ;; size=12 bbWeight=1 PerfScore 9.00 -G_M56653_IG06: ; bbWeight=1, epilog, nogc, extend - ldp fp, lr, [sp], #0x10
+ ;; size=8 bbWeight=0.50 PerfScore 3.00 +G_M56653_IG06: ; bbWeight=0.50, epilog, nogc, extend + ldr x19, [sp, #0x18] + ldp fp, lr, [sp], #0x20
br x1
- ;; size=8 bbWeight=1 PerfScore 2.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
G_M56653_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[x0] movz x0, #0xD1FFAB1E @@ -65,22 +67,23 @@ G_M56653_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000 movk x0, #0xD1FFAB1E LSL #32 ;; size=12 bbWeight=0.50 PerfScore 0.75 G_M56653_IG08: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
+ ldr x19, [sp, #0x18] + ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
-; Total bytes of code 112, prolog size 8, PerfScore 30.94, instruction count 28, allocated bytes for code 112 (MethodHash=6dd022b2) for method System.Xml.DocumentXPathNavigator:get_ValueDocument():System.String:this (FullOpts)
+; Total bytes of code 120, prolog size 12, PerfScore 26.94, instruction count 30, allocated bytes for code 120 (MethodHash=6dd022b2) for method System.Xml.DocumentXPathNavigator:get_ValueDocument():System.String:this (FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 1
+ Code Words : 2
Epilog Count : 2 E bit : 0 X bit : 0 Vers : 0
- Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
+ Function Length : 30 (0x0001e) Actual length = 120 (0x000078)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -91,7 +94,10 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
+ D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24] + 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! + E4 end + E4 end
E4 end E4 end

realworld.run.linux.arm64.checked.mch

-16 (-5.56%) : 21734.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckConstantBounds(byte,Microsoft.CodeAnalysis.ConstantValue,byref):ubyte (FullOpts)

@@ -11,18 +11,16 @@ ; V00 arg0 [V00,T02] ( 4, 3 ) byte -> x21 single-def ; V01 arg1 [V01,T00] ( 5, 4.50) ref -> x19 class-hnd single-def <Microsoft.CodeAnalysis.ConstantValue> ; V02 arg2 [V02,T01] ( 5, 3.50) byref -> x20 single-def
-; V03 loc0 [V03,T03] ( 8, 3.50) ref -> x19 class-hnd single-def <<unknown class>>
+; V03 loc0 [V03,T03] ( 7, 3.25) ref -> x19 class-hnd single-def <<unknown class>>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V05 tmp1 [V05,T04] ( 3, 2.50) ref -> x1 class-hnd "spilling QMark2" <System.Decimal>
-; V06 cse0 [V06,T06] ( 4, 1.25) long -> x0 "CSE - moderate" -; V07 cse1 [V07,T05] ( 5, 2 ) long -> x22 multi-def "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
-G_M8747_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M8747_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x10] - stp x21, x22, [sp, #0x20]
+ stp x19, x20, [sp, #0x18] + str x21, [sp, #0x28]
mov fp, sp mov w21, w0 mov x19, x1 @@ -47,11 +45,11 @@ G_M8747_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, mov w0, #1 ;; size=8 bbWeight=0.50 PerfScore 0.75 G_M8747_IG04: ; bbWeight=0.50, epilog, nogc, extend
- ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10]
+ ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30 ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.00
+ ;; size=16 bbWeight=0.50 PerfScore 2.50
G_M8747_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, gcvars, byref, isz ; gcrRegs +[x19] mov x0, x19 @@ -70,20 +68,20 @@ G_M8747_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=8000 ;; size=36 bbWeight=0.50 PerfScore 4.00 G_M8747_IG06: ; bbWeight=0.25, gcrefRegs=80002 {x1 x19}, byrefRegs=100000 {x20}, byref, isz ; gcrRegs -[x0]
- ldr x22, [x1]
+ ldr x1, [x1] + ; gcrRegs -[x1]
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- cmp x22, x0
+ cmp x1, x0
beq G_M8747_IG11 ;; size=24 bbWeight=0.25 PerfScore 1.50 G_M8747_IG07: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
- ; gcrRegs -[x1] - ldr x22, [x19] - movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - cmp x22, x1
+ ldr x1, [x19] + movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32 + cmp x1, x0
beq G_M8747_IG09 ;; size=24 bbWeight=0.50 PerfScore 3.00 G_M8747_IG08: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref @@ -106,23 +104,13 @@ G_M8747_IG09: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=100000 {x ldr x2, [x2] ;; size=28 bbWeight=0.50 PerfScore 4.25 G_M8747_IG10: ; bbWeight=0.50, epilog, nogc, extend
- ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10]
+ ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30 br x2
- ;; size=16 bbWeight=0.50 PerfScore 2.00 -G_M8747_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, gcvars, byref, isz
+ ;; size=16 bbWeight=0.50 PerfScore 2.50 +G_M8747_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, gcvars, byref
; byrRegs -[x1]
- cmp x22, x0 - beq G_M8747_IG13 - ;; size=8 bbWeight=0.50 PerfScore 0.75 -G_M8747_IG12: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref - mov x1, x19 - ; gcrRegs +[x1] - bl CORINFO_HELP_UNBOX - ; gcrRegs -[x1] - ;; size=8 bbWeight=0.25 PerfScore 0.38 -G_M8747_IG13: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
ldp x1, x2, [x19, #0x08] sxtb w0, w21 mov x3, x20 @@ -132,14 +120,14 @@ G_M8747_IG13: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=100000 {x movk x4, #0xD1FFAB1E LSL #32 ldr x4, [x4] ;; size=28 bbWeight=0.50 PerfScore 4.75
-G_M8747_IG14: ; bbWeight=0.50, epilog, nogc, extend - ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10]
+G_M8747_IG12: ; bbWeight=0.50, epilog, nogc, extend + ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30 br x4
- ;; size=16 bbWeight=0.50 PerfScore 2.00
+ ;; size=16 bbWeight=0.50 PerfScore 2.50
-; Total bytes of code 288, prolog size 16, PerfScore 43.12, instruction count 72, allocated bytes for code 288 (MethodHash=9544ddd4) for method Microsoft.CodeAnalysis.CSharp.Binder:CheckConstantBounds(byte,Microsoft.CodeAnalysis.ConstantValue,byref):ubyte (FullOpts)
+; Total bytes of code 272, prolog size 16, PerfScore 43.50, instruction count 68, allocated bytes for code 272 (MethodHash=9544ddd4) for method Microsoft.CodeAnalysis.CSharp.Binder:CheckConstantBounds(byte,Microsoft.CodeAnalysis.ConstantValue,byref):ubyte (FullOpts)
; ============================================================ Unwind Info: @@ -150,7 +138,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 72 (0x00048) Actual length = 288 (0x000120)
+ Function Length : 68 (0x00044) Actual length = 272 (0x000110)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -164,10 +152,9 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- E6 save_next - C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
+ D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40] + C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]! E4 end E4 end
- E4 end

-16 (-5.41%) : 947.dasm - System.Number:RoundNumber(byref,int,ubyte) (FullOpts)

@@ -8,19 +8,21 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T04] ( 10, 7.50) byref -> x19 single-def
+; V00 arg0 [V00,T05] ( 10, 7.50) byref -> x19 single-def
; V01 arg1 [V01,T02] ( 5, 11.50) int -> x1 single-def
-; V02 arg2 [V02,T05] ( 3, 2.50) ubyte -> x3 single-def
+; V02 arg2 [V02,T07] ( 3, 2.50) ubyte -> x3 single-def
; V03 loc0 [V03,T01] ( 8, 15.50) long -> x20
-; V04 loc1 [V04,T00] ( 19, 44 ) int -> x21
+; V04 loc1 [V04,T00] ( 16, 41 ) int -> x21
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T07] ( 3, 3 ) byref -> x0 single-def "dup spill" -; V07 tmp2 [V07,T08] ( 3, 3 ) long -> x0 "dup spill"
+; V06 tmp1 [V06,T09] ( 3, 3 ) byref -> x0 single-def "dup spill" +; V07 tmp2 [V07,T11] ( 2, 2 ) long -> x0 "dup spill"
;* V08 tmp3 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-; V09 tmp4 [V09,T09] ( 2, 2 ) byref -> x20 single-def "field V08._reference (fldOffset=0x0)" P-INDEP
+; V09 tmp4 [V09,T10] ( 2, 2 ) byref -> x20 single-def "field V08._reference (fldOffset=0x0)" P-INDEP
;* V10 tmp5 [V10 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP
-; V11 tmp6 [V11,T06] ( 2, 4 ) long -> x20 "Cast away GC" -; V12 cse0 [V12,T03] ( 3, 10 ) int -> x0 "CSE - aggressive"
+; V11 tmp6 [V11,T08] ( 2, 4 ) long -> x20 "Cast away GC" +; V12 cse0 [V12,T06] ( 3, 8.50) int -> x1 "CSE - aggressive" +; V13 cse1 [V13,T03] ( 4, 10.50) int -> x0 "CSE - aggressive" +; V14 cse2 [V14,T04] ( 3, 10 ) int -> x0 "CSE - aggressive"
; ; Lcl frame size = 8 @@ -69,26 +71,22 @@ G_M4398_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, b G_M4398_IG09 ;; size=40 bbWeight=0.50 PerfScore 5.75 G_M4398_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
- sub w21, w21, #1
+ sxtw w21, w0
;; size=4 bbWeight=2 PerfScore 1.00 G_M4398_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
- cmp w21, #0 - ble G_M4398_IG10 - sub w0, w21, #1 - ldrb w0, [x20, w0, SXTW #2] - cmp w0, #57 - beq G_M4398_IG08 - ;; size=24 bbWeight=4 PerfScore 26.00 -G_M4398_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
cmp w21, #0 ble G_M4398_IG11 sub w0, w21, #1
+ ldrb w1, [x20, w0, SXTW #2] + cmp w1, #57 + beq G_M4398_IG08 + ;; size=24 bbWeight=4 PerfScore 26.00 +G_M4398_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
add x0, x20, w0, SXTW
- ldrb w1, [x0]
add w1, w1, #1 strb w1, [x0] b G_M4398_IG14
- ;; size=32 bbWeight=0.50 PerfScore 4.25
+ ;; size=16 bbWeight=0.50 PerfScore 1.75
G_M4398_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref add x0, x19, #4 ; byrRegs +[x0] @@ -142,7 +140,7 @@ G_M4398_IG17: ; bbWeight=1, epilog, nogc, extend ret lr ;; size=16 bbWeight=1 PerfScore 5.00
-; Total bytes of code 296, prolog size 24, PerfScore 124.25, instruction count 74, allocated bytes for code 296 (MethodHash=4357eed1) for method System.Number:RoundNumber(byref,int,ubyte) (FullOpts)
+; Total bytes of code 280, prolog size 24, PerfScore 121.75, instruction count 70, allocated bytes for code 280 (MethodHash=4357eed1) for method System.Number:RoundNumber(byref,int,ubyte) (FullOpts)
; ============================================================ Unwind Info: @@ -153,7 +151,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 74 (0x0004a) Actual length = 296 (0x000128)
+ Function Length : 70 (0x00046) Actual length = 280 (0x000118)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-12 (-4.35%) : 18849.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)

@@ -15,8 +15,8 @@ ; V04 loc3 [V04,T01] ( 8, 25 ) int -> x1 ;* V05 loc4 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ubyte]> ;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T04] ( 2, 16 ) int -> x1 "dup spill" -; V08 tmp2 [V08,T03] ( 3, 17 ) int -> x0 "dup spill"
+; V07 tmp1 [V07,T03] ( 2, 16 ) int -> x1 "dup spill" +; V08 tmp2 [V08,T04] ( 2, 16 ) int -> x1 "dup spill"
; V09 tmp3 [V09,T05] ( 2, 16 ) int -> x7 "dup spill" ; V10 tmp4 [V10,T06] ( 2, 16 ) int -> x6 "dup spill" ; V11 tmp5 [V11,T07] ( 2, 16 ) int -> x7 "dup spill" @@ -109,26 +109,23 @@ G_M61853_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000 bne G_M61853_IG13 ;; size=8 bbWeight=0.50 PerfScore 0.75 G_M61853_IG09: ; bbWeight=4, gcrefRegs=0008 {x3}, byrefRegs=0020 {x5}, byref, isz
- sub w0, w1, #1 - sxtw w1, w0
+ sub w1, w1, #1
cmp w1, #0
- ble G_M61853_IG10
+ ble G_M61853_IG13
add w7, w7, #1 cmp w7, w4 bhs G_M61853_IG15 ldrh w6, [x5, w7, UXTW #2]
- sub w2, w6, #48 - cmp w2, #9
+ sub w0, w6, #48 + cmp w0, #9
bls G_M61853_IG09
- ;; size=44 bbWeight=4 PerfScore 38.00 -G_M61853_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ;; size=40 bbWeight=4 PerfScore 36.00 +G_M61853_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x3] ; byrRegs -[x5]
- cmp w0, #0 - ble G_M61853_IG13
cmp w6, #125 cset x2, eq
- ;; size=16 bbWeight=0.50 PerfScore 1.25
+ ;; size=8 bbWeight=0.50 PerfScore 0.50
G_M61853_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref uxtb w0, w2 ;; size=4 bbWeight=0.50 PerfScore 0.25 @@ -149,7 +146,7 @@ G_M61853_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 276, prolog size 8, PerfScore 106.00, instruction count 69, allocated bytes for code 276 (MethodHash=38980e62) for method System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
+; Total bytes of code 264, prolog size 8, PerfScore 103.25, instruction count 66, allocated bytes for code 264 (MethodHash=38980e62) for method System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -160,7 +157,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 69 (0x00045) Actual length = 276 (0x000114)
+ Function Length : 66 (0x00042) Actual length = 264 (0x000108)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+4 (+0.89%) : 28915.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol+d__118:MoveNext():ubyte:this (FullOpts)

@@ -8,29 +8,30 @@ ; 0 inlinees with PGO data; 6 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 17, 9.50) ref -> [fp+0x18] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol+<GetSecurityAttributes>d__118> -; V01 loc0 [V01,T04] ( 4, 2.50) ubyte -> registers
+; V00 this [V00,T00] ( 16, 9 ) ref -> [fp+0x18] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol+<GetSecurityAttributes>d__118> +; V01 loc0 [V01,T04] ( 4, 2.50) ubyte -> x2
; V02 loc1 [V02,T05] ( 3, 2.50) int -> x1 single-def ;* V03 loc2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <<unknown class>>
-; V04 loc3 [V04,T08] ( 3, 1.50) ref -> x19 class-hnd exact single-def <Microsoft.CodeAnalysis.SecurityWellKnownAttributeData>
+; V04 loc3 [V04,T08] ( 3, 1.50) ref -> x20 class-hnd exact single-def <Microsoft.CodeAnalysis.SecurityWellKnownAttributeData>
;* V05 loc4 [V05 ] ( 0, 0 ) struct (16) zero-ref multireg-ret <Microsoft.Cci.SecurityAttribute> ;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V07 tmp1 [V07,T06] ( 3, 2.25) ref -> x1 single-def "CASTCLASS eval op1"
-; V08 tmp2 [V08,T09] ( 3, 1.25) long -> x4 "fgMakeTemp is creating a new local variable"
+; V08 tmp2 [V08,T10] ( 3, 1.25) long -> x4 "fgMakeTemp is creating a new local variable"
; V09 tmp3 [V09,T02] ( 5, 3.75) ref -> x2 class-hnd "spilling QMark2" <<unknown class>> ;* V10 tmp4 [V10 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]> ;* V11 tmp5 [V11 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <Microsoft.Cci.SecurityAttribute> ;* V12 tmp6 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>> ;* V13 tmp7 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>> ; V14 tmp8 [V14,T01] ( 6, 6 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V15 tmp9 [V15,T10] ( 2, 1 ) ref -> x15 "field V05.<Attribute>k__BackingField (fldOffset=0x0)" P-INDEP -; V16 tmp10 [V16,T12] ( 2, 1 ) short -> x1 "field V05.<Action>k__BackingField (fldOffset=0x8)" P-INDEP -; V17 tmp11 [V17,T11] ( 2, 1 ) ref -> x20 single-def "field V10.array (fldOffset=0x0)" P-INDEP
+; V15 tmp9 [V15,T11] ( 2, 1 ) ref -> x15 "field V05.<Attribute>k__BackingField (fldOffset=0x0)" P-INDEP +; V16 tmp10 [V16,T13] ( 2, 1 ) short -> x1 "field V05.<Action>k__BackingField (fldOffset=0x8)" P-INDEP +; V17 tmp11 [V17,T12] ( 2, 1 ) ref -> x19 single-def "field V10.array (fldOffset=0x0)" P-INDEP
;* V18 tmp12 [V18 ] ( 0, 0 ) ref -> zero-ref "field V11.<Attribute>k__BackingField (fldOffset=0x0)" P-DEP ;* V19 tmp13 [V19 ] ( 0, 0 ) short -> zero-ref "field V11.<Action>k__BackingField (fldOffset=0x8)" P-DEP
-; V20 PSPSym [V20,T13] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[V] "PSPSym" -; V21 cse0 [V21,T03] ( 5, 2.50) ref -> x0 multi-def "CSE - aggressive" -; V22 cse1 [V22,T07] ( 4, 2 ) long -> x19 "CSE - aggressive"
+; V20 PSPSym [V20,T14] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[V] "PSPSym" +; V21 cse0 [V21,T09] ( 3, 1.50) ref -> x19 "CSE - moderate" +; V22 cse1 [V22,T03] ( 5, 2.50) ref -> x1 multi-def "CSE - aggressive" +; V23 cse2 [V23,T07] ( 4, 2 ) long -> x19 "CSE - aggressive"
; ; Lcl frame size = 24 @@ -57,14 +58,15 @@ G_M21908_IG03: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b G_M21908_IG04: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz movn w1, #0 str w1, [x0, #0x20]
- ldr x1, [x0, #0x08]
+ ldr x19, [x0, #0x08] + ; gcrRegs +[x19] + ldr x1, [x19, #0x08]
; gcrRegs +[x1]
- ldr x1, [x1, #0x08]
mov x2, x1 ; gcrRegs +[x2] cbz x2, G_M21908_IG11 ;; size=24 bbWeight=0.50 PerfScore 4.50
-G_M21908_IG05: ; bbWeight=0.25, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz
+G_M21908_IG05: ; bbWeight=0.25, gcrefRegs=80006 {x1 x2 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] ldr x3, [x2] movz x4, #0xD1FFAB1E @@ -73,7 +75,7 @@ G_M21908_IG05: ; bbWeight=0.25, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {} cmp x3, x4 beq G_M21908_IG07 ;; size=24 bbWeight=0.25 PerfScore 1.50
-G_M21908_IG06: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+G_M21908_IG06: ; bbWeight=0.12, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x2] mov x0, x4 bl CORINFO_HELP_CHKCASTCLASS_SPECIAL @@ -82,23 +84,17 @@ G_M21908_IG06: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, b mov x2, x0 ; gcrRegs +[x2] ;; size=12 bbWeight=0.12 PerfScore 0.25
-G_M21908_IG07: ; bbWeight=0.50, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref, isz
+G_M21908_IG07: ; bbWeight=0.50, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- ldr x19, [x2, #0x70] - ; gcrRegs +[x19] - cbz x19, G_M21908_IG11 - ldr x0, [fp, #0x18] // [V00 this] - ; gcrRegs +[x0] - ldr x1, [x0, #0x08] - ; gcrRegs +[x1] - ldr x20, [x1, #0x20]
+ ldr x20, [x2, #0x70]
; gcrRegs +[x20]
+ cbz x20, G_M21908_IG11 + ldr x19, [x19, #0x20]
movz x0, #0xD1FFAB1E
- ; gcrRegs -[x0]
movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 bl CORINFO_HELP_NEWSFAST
- ; gcrRegs -[x1-x2] +[x0]
+ ; gcrRegs -[x2] +[x0]
; gcr arg pop 0 mov x21, x0 ; gcrRegs +[x21] @@ -110,18 +106,18 @@ G_M21908_IG07: ; bbWeight=0.50, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, b str w0, [x21, #0x14] add x14, x21, #8 ; byrRegs +[x14]
- mov x15, x19 - ; gcrRegs +[x15] - bl CORINFO_HELP_ASSIGN_REF - ; gcrRegs -[x15 x19] - ; byrRegs -[x14] - add x14, x21, #56 - ; byrRegs +[x14]
mov x15, x20 ; gcrRegs +[x15] bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x15 x20] ; byrRegs -[x14]
+ add x14, x21, #56 + ; byrRegs +[x14] + mov x15, x19 + ; gcrRegs +[x15] + bl CORINFO_HELP_ASSIGN_REF + ; gcrRegs -[x15 x19] + ; byrRegs -[x14]
mov x0, x21 ; gcrRegs +[x0] movz x1, #0xD1FFAB1E // code for <unknown method> @@ -131,20 +127,20 @@ G_M21908_IG07: ; bbWeight=0.50, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, b blr x1 ; gcrRegs -[x21] ; gcr arg pop 0
- ldr x19, [fp, #0x18] // [V00 this] - ; gcrRegs +[x19] - add x14, x19, #24
+ ldr x1, [fp, #0x18] // [V00 this] + ; gcrRegs +[x1] + add x14, x1, #24
; byrRegs +[x14] mov x15, x0 ; gcrRegs +[x15] bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x0 x15] ; byrRegs -[x14]
- mov x0, x19
+ mov x0, x1
; gcrRegs +[x0]
- ;; size=124 bbWeight=0.50 PerfScore 16.50
+ ;; size=116 bbWeight=0.50 PerfScore 14.00
G_M21908_IG08: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x19]
+ ; gcrRegs -[x1]
movn w11, #2 str w11, [x0, #0x20] ldr x0, [x0, #0x18] @@ -157,50 +153,56 @@ G_M21908_IG08: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b ; gcrRegs -[x0] ; gcr arg pop 0 cbz w0, G_M21908_IG09
- ldr x20, [fp, #0x18] // [V00 this] - ; gcrRegs +[x20] - ldr x0, [x20, #0x18]
+ ldr x0, [fp, #0x18] // [V00 this]
; gcrRegs +[x0]
+ ldr x1, [x0, #0x18] + ; gcrRegs +[x1] + mov x0, x1
add x11, x19, #8 ldr x1, [x11]
+ ; gcrRegs -[x1]
blr x1 ; gcr arg pop 0 mov x15, x0 ; gcrRegs +[x15]
- add x14, x20, #40
+ ldr x0, [fp, #0x18] // [V00 this] + add x14, x0, #40
; byrRegs +[x14] bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x0 x15]
+ ; gcrRegs -[x15]
; byrRegs -[x14]
- strh w1, [x20, #0x30] - mov w0, #1 - str w0, [x20, #0x20] - mov w2, w0
+ strh w1, [x0, #0x30] + mov w11, #1 + str w11, [x0, #0x20] + sxtw w2, w11
b G_M21908_IG12
- ;; size=92 bbWeight=0.50 PerfScore 13.50
+ ;; size=100 bbWeight=0.50 PerfScore 14.75
G_M21908_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x20] - movn w0, #0 - ldr x20, [fp, #0x18] // [V00 this] - ; gcrRegs +[x20] - str w0, [x20, #0x20] - ldr x0, [x20, #0x18]
+ ; gcrRegs -[x0] + movn w11, #0 + ldr x0, [fp, #0x18] // [V00 this]
; gcrRegs +[x0]
- cbz x0, G_M21908_IG10
+ str w11, [x0, #0x20] + ldr x1, [x0, #0x18] + ; gcrRegs +[x1] + cbz x1, G_M21908_IG10 + mov x0, x1
add x11, x19, #16 ldr x1, [x11]
+ ; gcrRegs -[x1]
blr x1 ; gcrRegs -[x0] ; gcr arg pop 0
- ;; size=32 bbWeight=0.50 PerfScore 6.00 -G_M21908_IG10: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref - str xzr, [x20, #0x18] - ;; size=4 bbWeight=0.50 PerfScore 0.50
+ ;; size=36 bbWeight=0.50 PerfScore 6.25 +G_M21908_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ldr x0, [fp, #0x18] // [V00 this] + ; gcrRegs +[x0] + str xzr, [x0, #0x18] + ;; size=8 bbWeight=0.50 PerfScore 1.50
G_M21908_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x20] - mov w1, wzr - mov w2, w1 - ;; size=8 bbWeight=0.50 PerfScore 0.50
+ ; gcrRegs -[x0] + mov w2, wzr + ;; size=4 bbWeight=0.50 PerfScore 0.25
G_M21908_IG12: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; GC ptr vars -{V00} mov w0, w2 @@ -238,7 +240,7 @@ G_M21908_IG16: ; bbWeight=0, funclet epilog, nogc, extend ret lr ;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 448, prolog size 24, PerfScore 59.25, instruction count 112, allocated bytes for code 448 (MethodHash=1a3daa6b) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol+<GetSecurityAttributes>d__118:MoveNext():ubyte:this (FullOpts)
+; Total bytes of code 452, prolog size 24, PerfScore 59.00, instruction count 113, allocated bytes for code 452 (MethodHash=1a3daa6b) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol+<GetSecurityAttributes>d__118:MoveNext():ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -249,7 +251,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 97 (0x00061) Actual length = 388 (0x000184)
+ Function Length : 98 (0x00062) Actual length = 392 (0x000188)
---- Epilog scopes ---- ---- Scope 0 ...

+16 (+1.32%) : 30883.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)

@@ -11,16 +11,16 @@ ; V00 arg0 [V00,T07] ( 22, 23 ) ref -> x19 class-hnd single-def <System.Collections.Generic.List`1[System.String]> ; V01 loc0 [V01,T20] ( 7, 3.50) ref -> x20 class-hnd exact single-def <System.String> ; V02 loc1 [V02 ] ( 20, 54 ) struct (16) [fp-0x48] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Span`1[ushort]>
-; V03 loc2 [V03,T00] ( 39,149.08) int -> x22
+; V03 loc2 [V03,T00] ( 41,183.08) int -> x22
; V04 loc3 [V04,T23] ( 4, 2 ) int -> x0 ;* V05 loc4 [V05 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[ushort]>
-; V06 loc5 [V06,T06] ( 9, 25.50) int -> x21
+; V06 loc5 [V06,T06] ( 9, 25.50) int -> x23
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V08 tmp1 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V09 tmp2 [V09,T04] ( 5, 28 ) ref -> x22 class-hnd exact "impAppendStmt" <System.String>
+; V09 tmp2 [V09,T04] ( 5, 28 ) ref -> x21 class-hnd exact "impAppendStmt" <System.String>
; V10 tmp3 [V10,T26] ( 2, 2 ) long -> x1 "Inlining Arg" ; V11 tmp4 [V11,T25] ( 2, 2 ) ref -> x2 class-hnd exact single-def "Inlining Arg" <System.String>
-; V12 tmp5 [V12,T05] ( 5, 28 ) ref -> x23 class-hnd "Inlining Arg" <System.__Canon>
+; V12 tmp5 [V12,T05] ( 5, 28 ) ref -> x22 class-hnd "Inlining Arg" <System.__Canon>
; V13 tmp6 [V13,T15] ( 2, 4 ) ubyte -> x0 "Inline return value spill temp" ; V14 tmp7 [V14,T17] ( 2, 8 ) byref -> x0 "impAppendStmt" ; V15 tmp8 [V15,T27] ( 3, 1.50) ref -> x14 class-hnd single-def "Inline stloc first use temp" <<unknown class>> @@ -38,12 +38,12 @@ ; V27 cse0 [V27,T14] ( 3, 10 ) int -> x0 "CSE - aggressive" ; V28 cse1 [V28,T28] ( 3, 1.50) long -> x24 "CSE - moderate" ; V29 cse2 [V29,T31] ( 2, 1 ) int -> x12 "CSE - moderate"
-; V30 cse3 [V30,T01] ( 3, 48 ) long -> x1 "CSE - aggressive"
+; V30 cse3 [V30,T02] ( 3, 48 ) long -> x1 "CSE - aggressive"
; V31 cse4 [V31,T11] ( 3, 12 ) long -> x1 "CSE - aggressive" ; V32 cse5 [V32,T12] ( 3, 12 ) int -> x0 "CSE - aggressive" ; V33 cse6 [V33,T10] ( 3, 12 ) ref -> x1 "CSE - aggressive"
-; V34 cse7 [V34,T03] ( 15, 30.54) int -> x21 "CSE - aggressive" -; V35 cse8 [V35,T02] ( 10, 46 ) byref -> x23 hoist multi-def "CSE - aggressive"
+; V34 cse7 [V34,T01] ( 17, 64.54) int -> x21 "CSE - aggressive" +; V35 cse8 [V35,T03] ( 10, 46 ) byref -> x23 hoist multi-def "CSE - aggressive"
; V36 cse9 [V36,T16] ( 4, 8 ) int -> x24 "CSE - aggressive" ; V37 cse10 [V37,T18] ( 2, 8 ) int -> x3 "CSE - aggressive" ; V38 cse11 [V38,T13] ( 3, 11.88) int -> x0 "CSE - aggressive" @@ -71,19 +71,19 @@ G_M28069_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=56 bbWeight=1 PerfScore 10.50 G_M28069_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldr w0, [x19, #0x10]
- cbz w0, G_M28069_IG27
+ cbz w0, G_M28069_IG26
;; size=8 bbWeight=1 PerfScore 4.00 G_M28069_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldr x0, [x19, #0x08] ; gcrRegs +[x0] ldr w1, [x0, #0x08] cmp w1, #0
- bls G_M28069_IG29
+ bls G_M28069_IG28
ldr x20, [x0, #0x10] ; gcrRegs +[x20] ldr w21, [x20, #0x08] cmp w21, #100
- bgt G_M28069_IG27
+ bgt G_M28069_IG26
add w0, w21, #2 ; gcrRegs -[x0] mov w1, #2 @@ -110,105 +110,103 @@ G_M28069_IG05: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000 mov x1, sp ;; size=8 bbWeight=0.50 PerfScore 0.50 G_M28069_IG06: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- tbnz w0, #31, G_M28069_IG30
+ tbnz w0, #31, G_M28069_IG29
str x1, [fp, #-0x48] // [V17 tmp10] str w0, [fp, #-0x40] // [V18 tmp11] mov w22, wzr cmp w21, #0
- ble G_M28069_IG15
+ ble G_M28069_IG14
add x23, x20, #12 ; byrRegs +[x23] ;; size=28 bbWeight=0.50 PerfScore 2.75 G_M28069_IG07: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz ldrh w0, [x23, w22, UXTW #2] cmp w0, #39
- bne G_M28069_IG11
+ bne G_M28069_IG10
;; size=12 bbWeight=4 PerfScore 18.00 G_M28069_IG08: ; bbWeight=16, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz ldr w0, [fp, #-0x40] // [V18 tmp11] cmp w22, w0
- bhs G_M28069_IG29
+ bhs G_M28069_IG28
ldr x0, [fp, #-0x48] // [V17 tmp10] ; byrRegs +[x0] ubfiz x1, x22, #1, #32 add x0, x0, x1
+ cmp w22, w21 + bhs G_M28069_IG28
ldrh w1, [x23, x1] strh w1, [x0] add w22, w22, #1 cmp w21, w22
- ble G_M28069_IG09
+ ble G_M28069_IG26 + cmp w22, w21 + bhs G_M28069_IG28
ldrh w0, [x23, w22, UXTW #2] ; byrRegs -[x0] cmp w0, #39 bne G_M28069_IG08
- ;; size=56 bbWeight=16 PerfScore 280.00 -G_M28069_IG09: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz - cmp w21, w22 - bgt G_M28069_IG12 - ;; size=8 bbWeight=2 PerfScore 3.00 -G_M28069_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x19-x20] - ; byrRegs -[x23] - b G_M28069_IG27 - ;; size=4 bbWeight=0.50 PerfScore 0.50 -G_M28069_IG11: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz - ; gcrRegs +[x19-x20] - ; byrRegs +[x23]
+ ;; size=72 bbWeight=16 PerfScore 328.00 +G_M28069_IG09: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref + b G_M28069_IG11 + ;; size=4 bbWeight=4 PerfScore 4.00 +G_M28069_IG10: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
cmp w0, #121
- beq G_M28069_IG14
+ beq G_M28069_IG13
;; size=8 bbWeight=2 PerfScore 3.00
-G_M28069_IG12: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
+G_M28069_IG11: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
ldr w0, [fp, #-0x40] // [V18 tmp11] cmp w22, w0
- bhs G_M28069_IG29
+ bhs G_M28069_IG28
ldr x0, [fp, #-0x48] // [V17 tmp10] ; byrRegs +[x0] ubfiz x1, x22, #1, #32 add x0, x0, x1
+ cmp w22, w21 + bhs G_M28069_IG28
ldrh w1, [x23, x1] strh w1, [x0] add w22, w22, #1 cmp w21, w22 bgt G_M28069_IG07
- ;; size=44 bbWeight=4 PerfScore 52.00 -G_M28069_IG13: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+ ;; size=52 bbWeight=4 PerfScore 58.00 +G_M28069_IG12: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; byrRegs -[x0 x23]
- b G_M28069_IG15
+ b G_M28069_IG14
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M28069_IG14: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG13: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldr w0, [fp, #-0x40] // [V18 tmp11] cmp w22, w0
- bhs G_M28069_IG29
+ bhs G_M28069_IG28
ldr x0, [fp, #-0x48] // [V17 tmp10] ; byrRegs +[x0] mov w1, #121 strh w1, [x0, w22, UXTW #2] ;; size=24 bbWeight=0.50 PerfScore 3.50
-G_M28069_IG15: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG14: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x0] sub w0, w21, #1 cmp w0, w22
- ble G_M28069_IG27
+ ble G_M28069_IG26
add w0, w22, #1 cmp w0, w21
- bhs G_M28069_IG29
+ bhs G_M28069_IG28
add x23, x20, #12 ; byrRegs +[x23] add w0, w22, #1 ubfiz x24, x0, #1, #32 ldrh w0, [x23, x24] cmp w0, #121
- bne G_M28069_IG27
+ bne G_M28069_IG26
add w25, w22, #2 cmp w21, w25
- ble G_M28069_IG16
+ ble G_M28069_IG15
cmp w25, w21
- bhs G_M28069_IG29
+ bhs G_M28069_IG28
ldrh w0, [x23, w25, UXTW #2] cmp w0, #121
- beq G_M28069_IG27
+ beq G_M28069_IG26
;; size=80 bbWeight=0.50 PerfScore 9.25
-G_M28069_IG16: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
+G_M28069_IG15: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
add w0, w22, #3 ldr w1, [fp, #-0x40] // [V18 tmp11] cmp w0, w1 @@ -222,7 +220,7 @@ G_M28069_IG16: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800 add w0, w22, #1 ldr w1, [fp, #-0x40] // [V18 tmp11] cmp w0, w1
- bhs G_M28069_IG29
+ bhs G_M28069_IG28
ldr x0, [fp, #-0x48] // [V17 tmp10] ; byrRegs +[x0] mov w1, #121 @@ -230,7 +228,7 @@ G_M28069_IG16: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800 ldr w0, [fp, #-0x40] // [V18 tmp11] ; byrRegs -[x0] cmp w25, w0
- bhs G_M28069_IG29
+ bhs G_M28069_IG28
ldr x0, [fp, #-0x48] // [V17 tmp10] ; byrRegs +[x0] strh w1, [x0, w25, UXTW #2] @@ -238,7 +236,7 @@ G_M28069_IG16: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800 ; byrRegs -[x0] ldr w1, [fp, #-0x40] // [V18 tmp11] cmp w0, w1
- bhs G_M28069_IG29
+ bhs G_M28069_IG28
ldr x0, [fp, #-0x48] // [V17 tmp10] ; byrRegs +[x0] add w1, w22, #3 @@ -246,15 +244,15 @@ G_M28069_IG16: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800 strh w2, [x0, w1, UXTW #2] sxtw w22, w25 cmp w21, w22
- ble G_M28069_IG20 - tbnz w22, #31, G_M28069_IG19
+ ble G_M28069_IG19 + tbnz w22, #31, G_M28069_IG18
;; size=132 bbWeight=0.50 PerfScore 17.00
-G_M28069_IG17: ; bbWeight=3.96, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
+G_M28069_IG16: ; bbWeight=3.96, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
; byrRegs -[x0] add w0, w22, #2 ldr w1, [fp, #-0x40] // [V18 tmp11] cmp w0, w1
- bhs G_M28069_IG29
+ bhs G_M28069_IG28
ldr x1, [fp, #-0x48] // [V17 tmp10] ; byrRegs +[x1] ubfiz x0, x0, #1, #32 @@ -265,32 +263,32 @@ G_M28069_IG17: ; bbWeight=3.96, gcrefRegs=180000 {x19 x20}, byrefRegs=800 strh w1, [x0] add w22, w22, #1 cmp w21, w22
- bgt G_M28069_IG17
...

+24 (+4.14%) : 19848.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:SetUpdatedSymbol(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)

@@ -12,7 +12,7 @@ ; V01 arg1 [V01,T04] ( 6, 4 ) ref -> x21 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundNode> ; V02 arg2 [V02,T02] ( 9, 5.50) ref -> x19 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbol> ; V03 arg3 [V03,T03] ( 8, 5 ) ref -> x20 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbol>
-; V04 loc0 [V04,T14] ( 2, 1 ) ubyte -> x0
+; V04 loc0 [V04,T14] ( 3, 1.50) ubyte -> x23
; V05 loc1 [V05,T15] ( 3, 1.25) ref -> x1 class-hnd exact <Microsoft.CodeAnalysis.CSharp.BoundLambda> ; V06 loc2 [V06,T16] ( 3, 1.25) ref -> x1 class-hnd exact <Microsoft.CodeAnalysis.CSharp.Symbols.LambdaSymbol> ; V07 loc3 [V07,T11] ( 3, 1.50) ref -> x1 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol> @@ -64,12 +64,13 @@ ; V53 tmp45 [V53,T27] ( 2, 1 ) int -> x1 "field V31._countAdjustment (fldOffset=0x8)" P-INDEP ; V54 tmp46 [V54,T10] ( 2, 2 ) ref -> x1 single-def "argument with side effect" ;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M21353_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]! - stp x19, x20, [sp, #0x10] - stp x21, x22, [sp, #0x20]
+ stp fp, lr, [sp, #-0x40]! + stp x19, x20, [sp, #0x18] + stp x21, x22, [sp, #0x28] + str x23, [sp, #0x38]
mov fp, sp mov x22, x0 ; gcrRegs +[x22] @@ -79,7 +80,7 @@ G_M21353_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[x19] mov x20, x3 ; gcrRegs +[x20]
- ;; size=32 bbWeight=1 PerfScore 5.50
+ ;; size=36 bbWeight=1 PerfScore 6.50
G_M21353_IG02: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz ldr x1, [x22, #0xD1FFAB1E] ; gcrRegs +[x1] @@ -87,17 +88,19 @@ G_M21353_IG02: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefReg ;; size=8 bbWeight=1 PerfScore 4.00 G_M21353_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; gcrRegs -[x1 x19-x22]
- ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x30
+ ldr x23, [sp, #0x38] + ldp x21, x22, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x40
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.00
+ ;; size=20 bbWeight=0.50 PerfScore 3.00
G_M21353_IG04: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs +[x19-x22]
+ mov w23, wzr
mov x1, x21 ; gcrRegs +[x1] cbz x1, G_M21353_IG09
- ;; size=8 bbWeight=0.50 PerfScore 0.75
+ ;; size=12 bbWeight=0.50 PerfScore 1.00
G_M21353_IG05: ; bbWeight=0.25, gcrefRegs=780002 {x1 x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz ldr x1, [x1] ; gcrRegs -[x1] @@ -105,7 +108,7 @@ G_M21353_IG05: ; bbWeight=0.25, gcrefRegs=780002 {x1 x19 x20 x21 x22}, by movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 cmp x1, x0
- bne G_M21353_IG09
+ bne G_M21353_IG10
;; size=24 bbWeight=0.25 PerfScore 1.50 G_M21353_IG06: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz mov x1, x19 @@ -119,7 +122,7 @@ G_M21353_IG07: ; bbWeight=0.25, gcrefRegs=780002 {x1 x19 x20 x21 x22}, by movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 cmp x1, x0
- bne G_M21353_IG09
+ bne G_M21353_IG10
;; size=24 bbWeight=0.25 PerfScore 1.50 G_M21353_IG08: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz mov x1, x20 @@ -131,7 +134,7 @@ G_M21353_IG08: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byref ; gcrRegs -[x1] +[x0] mov x1, x0 ; gcrRegs +[x1]
- cbz x1, G_M21353_IG09
+ cbz x1, G_M21353_IG10
mov x0, x19 movz x2, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.CSharp.NullableWalker:AreLambdaAndNewDelegateSimilar(Microsoft.CodeAnalysis.CSharp.Symbols.LambdaSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol):ubyte movk x2, #0xD1FFAB1E LSL #16 @@ -156,14 +159,17 @@ G_M21353_IG08: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byref ldr x3, [x3, #0x20] blr x3 ; gcrRegs -[x0-x1]
- cbnz w0, G_M21353_IG11 - ;; size=112 bbWeight=0.50 PerfScore 16.25
+ sxtw w23, w0 + ;; size=112 bbWeight=0.50 PerfScore 16.00
G_M21353_IG09: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
- cbnz x19, G_M21353_IG10 - cbnz x20, G_M21353_IG14 - b G_M21353_IG11 - ;; size=12 bbWeight=0.50 PerfScore 1.50
+ cbnz w23, G_M21353_IG12 + ;; size=4 bbWeight=0.50 PerfScore 0.50
G_M21353_IG10: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
+ cbnz x19, G_M21353_IG11 + cbnz x20, G_M21353_IG15 + b G_M21353_IG12 + ;; size=12 bbWeight=0.50 PerfScore 1.50 +G_M21353_IG11: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
mov x0, x19 ; gcrRegs +[x0] mov x1, x20 @@ -174,9 +180,9 @@ G_M21353_IG10: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byref ldr x3, [x3, #0x20] blr x3 ; gcrRegs -[x0-x1]
- cbz w0, G_M21353_IG14
+ cbz w0, G_M21353_IG15
;; size=32 bbWeight=0.50 PerfScore 6.25
-G_M21353_IG11: ; bbWeight=0.50, gcrefRegs=680000 {x19 x21 x22}, byrefRegs=0000 {}, byref, isz
+G_M21353_IG12: ; bbWeight=0.50, gcrefRegs=680000 {x19 x21 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x20] ldr x0, [x22, #0xD1FFAB1E] ; gcrRegs +[x0] @@ -211,7 +217,7 @@ G_M21353_IG11: ; bbWeight=0.50, gcrefRegs=680000 {x19 x21 x22}, byrefRegs ldr x14, [x22, #0x08] ; gcrRegs +[x14] cmp x14, x0
- beq G_M21353_IG12
+ beq G_M21353_IG13
add x14, x22, #8 ; gcrRegs -[x14] ; byrRegs +[x14] @@ -222,18 +228,19 @@ G_M21353_IG11: ; bbWeight=0.50, gcrefRegs=680000 {x19 x21 x22}, byrefRegs ; byrRegs -[x14] str xzr, [x22, #0x18] ;; size=120 bbWeight=0.50 PerfScore 18.25
-G_M21353_IG12: ; bbWeight=0.50, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
+G_M21353_IG13: ; bbWeight=0.50, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
ldr w0, [x22, #0x28] add w0, w0, w1 str w0, [x22, #0x28] ;; size=12 bbWeight=0.50 PerfScore 2.25
-G_M21353_IG13: ; bbWeight=0.50, epilog, nogc, extend - ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x30
+G_M21353_IG14: ; bbWeight=0.50, epilog, nogc, extend + ldr x23, [sp, #0x38] + ldp x21, x22, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x40
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.00 -G_M21353_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=20 bbWeight=0.50 PerfScore 3.00 +G_M21353_IG15: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x19-x21] ldr x0, [x22, #0xD1FFAB1E] ; gcrRegs +[x0] @@ -271,7 +278,7 @@ G_M21353_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=780 ldr x14, [x22, #0x08] ; gcrRegs +[x14] cmp x14, x0
- beq G_M21353_IG15
+ beq G_M21353_IG16
add x14, x22, #8 ; gcrRegs -[x14] ; byrRegs +[x14] @@ -282,19 +289,20 @@ G_M21353_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=780 ; byrRegs -[x14] str xzr, [x22, #0x18] ;; size=128 bbWeight=0.50 PerfScore 18.75
-G_M21353_IG15: ; bbWeight=0.50, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
+G_M21353_IG16: ; bbWeight=0.50, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
ldr w0, [x22, #0x28] add w0, w0, w1 str w0, [x22, #0x28] ;; size=12 bbWeight=0.50 PerfScore 2.25
-G_M21353_IG16: ; bbWeight=0.50, epilog, nogc, extend - ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x30
+G_M21353_IG17: ; bbWeight=0.50, epilog, nogc, extend + ldr x23, [sp, #0x38] + ldp x21, x22, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x40
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.00
+ ;; size=20 bbWeight=0.50 PerfScore 3.00
-; Total bytes of code 580, prolog size 16, PerfScore 85.50, instruction count 145, allocated bytes for code 580 (MethodHash=7b46ac96) for method Microsoft.CodeAnalysis.CSharp.NullableWalker:SetUpdatedSymbol(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)
+; Total bytes of code 604, prolog size 20, PerfScore 90.00, instruction count 151, allocated bytes for code 604 (MethodHash=7b46ac96) for method Microsoft.CodeAnalysis.CSharp.NullableWalker:SetUpdatedSymbol(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)
; ============================================================ Unwind Info: @@ -305,7 +313,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 145 (0x00091) Actual length = 580 (0x000244)
+ Function Length : 151 (0x00097) Actual length = 604 (0x00025c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -319,10 +327,9 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
+ D1 07 save_reg X#4 Z#7 (0x07); str x23, [sp, #56]
E6 save_next
- C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16] - 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]! - E4 end - E4 end
+ C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24] + 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
E4 end

smoke_tests.nativeaot.linux.arm64.checked.mch

-40 (-40.00%) : 4928.dasm - System.RuntimeMethodHandle:Equals(System.Object):ubyte:this (FullOpts)

@@ -7,81 +7,60 @@ ; fully interruptible ; Final local variable assignments ;
-; V00 this [V00,T02] ( 3, 2.50) byref -> x20 this single-def -; V01 arg1 [V01,T00] ( 5, 3.75) ref -> x19 class-hnd single-def <System.Object>
+; V00 this [V00,T02] ( 3, 2.50) byref -> x0 this single-def +; V01 arg1 [V01,T00] ( 4, 3.50) ref -> x1 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 4.50) ref -> x0 class-hnd exact "spilling QMark2" <System.RuntimeMethodHandle> -; V04 cse0 [V04,T04] ( 3, 1 ) long -> x1 "CSE - moderate" -; V05 cse1 [V05,T03] ( 4, 1.25) long -> x0 "CSE - moderate"
+; V03 tmp1 [V03,T01] ( 3, 4.50) ref -> x2 class-hnd exact "spilling QMark2" <System.RuntimeMethodHandle>
; ; Lcl frame size = 0
-G_M56923_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG - stp fp, lr, [sp, #-0x20]! - stp x19, x20, [sp, #0x10]
+G_M56923_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG + stp fp, lr, [sp, #-0x10]!
mov fp, sp
- mov x20, x0 - ; byrRegs +[x20] - mov x19, x1 - ; gcrRegs +[x19] - ;; size=20 bbWeight=1 PerfScore 3.50 -G_M56923_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz - mov x0, x19 - ; gcrRegs +[x0] - cbz x0, G_M56923_IG04
;; size=8 bbWeight=1 PerfScore 1.50
-G_M56923_IG03: ; bbWeight=0.25, gcrefRegs=80001 {x0 x19}, byrefRegs=100000 {x20}, byref, isz - ldr x1, [x0] - adrp x0, [HIGH RELOC #0xD1FFAB1E] // System.RuntimeMethodHandle - ; gcrRegs -[x0] - add x0, x0, [LOW RELOC #0xD1FFAB1E] - cmp x1, x0
+G_M56923_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0001 {x0}, byref, isz + ; gcrRegs +[x1] + ; byrRegs +[x0] + mov x2, x1 + ; gcrRegs +[x2] + cbz x2, G_M56923_IG04 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M56923_IG03: ; bbWeight=0.25, gcrefRegs=0006 {x1 x2}, byrefRegs=0001 {x0}, byref, isz + ldr x2, [x2] + ; gcrRegs -[x2] + adrp x3, [HIGH RELOC #0xD1FFAB1E] // System.RuntimeMethodHandle + add x3, x3, [LOW RELOC #0xD1FFAB1E] + cmp x2, x3
beq G_M56923_IG06 ;; size=20 bbWeight=0.25 PerfScore 1.38 G_M56923_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19] - ; byrRegs -[x20]
+ ; gcrRegs -[x1] + ; byrRegs -[x0]
mov w0, wzr ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M56923_IG05: ; bbWeight=0.50, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20
+ ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 1.50 -G_M56923_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, gcvars, byref, isz - ; gcrRegs +[x19] - ; byrRegs +[x20] - cmp x1, x0 - beq G_M56923_IG08 - ;; size=8 bbWeight=0.50 PerfScore 0.75 -G_M56923_IG07: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref - mov x1, x19
+ ;; size=8 bbWeight=0.50 PerfScore 1.00 +G_M56923_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0001 {x0}, gcvars, byref
; gcrRegs +[x1]
- bl CORINFO_HELP_UNBOX - ; gcrRegs -[x1] - ; gcr arg pop 0 - ;; size=8 bbWeight=0.25 PerfScore 0.38 -G_M56923_IG08: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref - ldr x1, [x19, #0x08] - mov x0, x20
; byrRegs +[x0]
- ;; size=8 bbWeight=0.50 PerfScore 1.75 -G_M56923_IG09: ; bbWeight=0.50, epilog, nogc, extend - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20
+ ldr x1, [x1, #0x08] + ; gcrRegs -[x1] + ;; size=4 bbWeight=0.50 PerfScore 1.50 +G_M56923_IG07: ; bbWeight=0.50, epilog, nogc, extend + ldp fp, lr, [sp], #0x10
b <unknown method> ; gcr arg pop 0
- ;; size=12 bbWeight=0.50 PerfScore 1.50
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 100, prolog size 20, PerfScore 12.50, instruction count 25, allocated bytes for code 100 (MethodHash=792a21a4) for method System.RuntimeMethodHandle:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 60, prolog size 8, PerfScore 8.12, instruction count 15, allocated bytes for code 60 (MethodHash=792a21a4) for method System.RuntimeMethodHandle:Equals(System.Object):ubyte:this (FullOpts)
; ============================================================ Cfi Info: >> Start offset : 0x000000 >> End offset : 0xd1ffab1e
- CodeOffset: 0x04 Op: AdjustCfaOffset Offset:0x20
+ CodeOffset: 0x04 Op: AdjustCfaOffset Offset:0x10
CodeOffset: 0x04 Op: RelOffset DwarfReg:0x1d Offset:0x0 CodeOffset: 0x04 Op: RelOffset DwarfReg:0x1e Offset:0x8
- CodeOffset: 0x08 Op: RelOffset DwarfReg:0x13 Offset:0x10 - CodeOffset: 0x08 Op: RelOffset DwarfReg:0x14 Offset:0x18 - CodeOffset: 0x0C Op: DefCfaRegister DwarfReg:0x1D
+ CodeOffset: 0x08 Op: DefCfaRegister DwarfReg:0x1D

-40 (-40.00%) : 8016.dasm - System.RuntimeFieldHandle:Equals(System.Object):ubyte:this (FullOpts)

@@ -7,81 +7,60 @@ ; fully interruptible ; Final local variable assignments ;
-; V00 this [V00,T02] ( 3, 2.50) byref -> x20 this single-def -; V01 arg1 [V01,T00] ( 5, 3.75) ref -> x19 class-hnd single-def <System.Object>
+; V00 this [V00,T02] ( 3, 2.50) byref -> x0 this single-def +; V01 arg1 [V01,T00] ( 4, 3.50) ref -> x1 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 4.50) ref -> x0 class-hnd exact "spilling QMark2" <System.RuntimeFieldHandle> -; V04 cse0 [V04,T04] ( 3, 1 ) long -> x1 "CSE - moderate" -; V05 cse1 [V05,T03] ( 4, 1.25) long -> x0 "CSE - moderate"
+; V03 tmp1 [V03,T01] ( 3, 4.50) ref -> x2 class-hnd exact "spilling QMark2" <System.RuntimeFieldHandle>
; ; Lcl frame size = 0
-G_M59238_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG - stp fp, lr, [sp, #-0x20]! - stp x19, x20, [sp, #0x10]
+G_M59238_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG + stp fp, lr, [sp, #-0x10]!
mov fp, sp
- mov x20, x0 - ; byrRegs +[x20] - mov x19, x1 - ; gcrRegs +[x19] - ;; size=20 bbWeight=1 PerfScore 3.50 -G_M59238_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz - mov x0, x19 - ; gcrRegs +[x0] - cbz x0, G_M59238_IG04
;; size=8 bbWeight=1 PerfScore 1.50
-G_M59238_IG03: ; bbWeight=0.25, gcrefRegs=80001 {x0 x19}, byrefRegs=100000 {x20}, byref, isz - ldr x1, [x0] - adrp x0, [HIGH RELOC #0xD1FFAB1E] // System.RuntimeFieldHandle - ; gcrRegs -[x0] - add x0, x0, [LOW RELOC #0xD1FFAB1E] - cmp x1, x0
+G_M59238_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0001 {x0}, byref, isz + ; gcrRegs +[x1] + ; byrRegs +[x0] + mov x2, x1 + ; gcrRegs +[x2] + cbz x2, G_M59238_IG04 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M59238_IG03: ; bbWeight=0.25, gcrefRegs=0006 {x1 x2}, byrefRegs=0001 {x0}, byref, isz + ldr x2, [x2] + ; gcrRegs -[x2] + adrp x3, [HIGH RELOC #0xD1FFAB1E] // System.RuntimeFieldHandle + add x3, x3, [LOW RELOC #0xD1FFAB1E] + cmp x2, x3
beq G_M59238_IG06 ;; size=20 bbWeight=0.25 PerfScore 1.38 G_M59238_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19] - ; byrRegs -[x20]
+ ; gcrRegs -[x1] + ; byrRegs -[x0]
mov w0, wzr ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M59238_IG05: ; bbWeight=0.50, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20
+ ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 1.50 -G_M59238_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, gcvars, byref, isz - ; gcrRegs +[x19] - ; byrRegs +[x20] - cmp x1, x0 - beq G_M59238_IG08 - ;; size=8 bbWeight=0.50 PerfScore 0.75 -G_M59238_IG07: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref - mov x1, x19
+ ;; size=8 bbWeight=0.50 PerfScore 1.00 +G_M59238_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0001 {x0}, gcvars, byref
; gcrRegs +[x1]
- bl CORINFO_HELP_UNBOX - ; gcrRegs -[x1] - ; gcr arg pop 0 - ;; size=8 bbWeight=0.25 PerfScore 0.38 -G_M59238_IG08: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref - ldr x1, [x19, #0x08] - mov x0, x20
; byrRegs +[x0]
- ;; size=8 bbWeight=0.50 PerfScore 1.75 -G_M59238_IG09: ; bbWeight=0.50, epilog, nogc, extend - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20
+ ldr x1, [x1, #0x08] + ; gcrRegs -[x1] + ;; size=4 bbWeight=0.50 PerfScore 1.50 +G_M59238_IG07: ; bbWeight=0.50, epilog, nogc, extend + ldp fp, lr, [sp], #0x10
b <unknown method> ; gcr arg pop 0
- ;; size=12 bbWeight=0.50 PerfScore 1.50
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 100, prolog size 20, PerfScore 12.50, instruction count 25, allocated bytes for code 100 (MethodHash=39311899) for method System.RuntimeFieldHandle:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 60, prolog size 8, PerfScore 8.12, instruction count 15, allocated bytes for code 60 (MethodHash=39311899) for method System.RuntimeFieldHandle:Equals(System.Object):ubyte:this (FullOpts)
; ============================================================ Cfi Info: >> Start offset : 0x000000 >> End offset : 0xd1ffab1e
- CodeOffset: 0x04 Op: AdjustCfaOffset Offset:0x20
+ CodeOffset: 0x04 Op: AdjustCfaOffset Offset:0x10
CodeOffset: 0x04 Op: RelOffset DwarfReg:0x1d Offset:0x0 CodeOffset: 0x04 Op: RelOffset DwarfReg:0x1e Offset:0x8
- CodeOffset: 0x08 Op: RelOffset DwarfReg:0x13 Offset:0x10 - CodeOffset: 0x08 Op: RelOffset DwarfReg:0x14 Offset:0x18 - CodeOffset: 0x0C Op: DefCfaRegister DwarfReg:0x1D
+ CodeOffset: 0x08 Op: DefCfaRegister DwarfReg:0x1D

-36 (-33.33%) : 69.dasm - System.Byte:Equals(System.Object):ubyte:this (FullOpts)

@@ -8,81 +8,63 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 2.50) byref -> x0 this single-def
-; V01 arg1 [V01,T00] ( 5, 3.75) ref -> x19 class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 4, 3.50) ref -> x1 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 4.50) ref -> x1 class-hnd exact "spilling QMark2" <System.Byte> -; V04 tmp2 [V04,T03] ( 2, 2 ) int -> x20 "impAppendStmt" -; V05 cse0 [V05,T05] ( 3, 1 ) long -> x1 "CSE - moderate" -; V06 cse1 [V06,T04] ( 4, 1.25) long -> x2 "CSE - moderate"
+; V03 tmp1 [V03,T01] ( 3, 4.50) ref -> x2 class-hnd exact "spilling QMark2" <System.Byte> +; V04 tmp2 [V04,T03] ( 2, 2 ) int -> x0 "impAppendStmt"
; ; Lcl frame size = 0
-G_M19224_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG - stp fp, lr, [sp, #-0x20]! - stp x19, x20, [sp, #0x10]
+G_M19224_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG + stp fp, lr, [sp, #-0x10]!
mov fp, sp
- mov x19, x1 - ; gcrRegs +[x19] - ;; size=16 bbWeight=1 PerfScore 3.00 -G_M19224_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref, isz - ; byrRegs +[x0] - mov x1, x19 - ; gcrRegs +[x1] - cbz x1, G_M19224_IG04
;; size=8 bbWeight=1 PerfScore 1.50
-G_M19224_IG03: ; bbWeight=0.25, gcrefRegs=80002 {x1 x19}, byrefRegs=0001 {x0}, byref, isz - ldr x1, [x1] - ; gcrRegs -[x1] - adrp x2, [HIGH RELOC #0xD1FFAB1E] // System.Byte - add x2, x2, [LOW RELOC #0xD1FFAB1E] - cmp x1, x2
+G_M19224_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0001 {x0}, byref, isz + ; gcrRegs +[x1] + ; byrRegs +[x0] + mov x2, x1 + ; gcrRegs +[x2] + cbz x2, G_M19224_IG04 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M19224_IG03: ; bbWeight=0.25, gcrefRegs=0006 {x1 x2}, byrefRegs=0001 {x0}, byref, isz + ldr x2, [x2] + ; gcrRegs -[x2] + adrp x3, [HIGH RELOC #0xD1FFAB1E] // System.Byte + add x3, x3, [LOW RELOC #0xD1FFAB1E] + cmp x2, x3
beq G_M19224_IG06 ;; size=20 bbWeight=0.25 PerfScore 1.38 G_M19224_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19]
+ ; gcrRegs -[x1]
; byrRegs -[x0] mov w0, wzr ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M19224_IG05: ; bbWeight=0.50, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20
+ ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 1.50 -G_M19224_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, gcvars, byref, isz - ; gcrRegs +[x19] - ; byrRegs +[x0] - ldrb w20, [x0] - cmp x1, x2 - beq G_M19224_IG08 - ;; size=12 bbWeight=0.50 PerfScore 2.25 -G_M19224_IG07: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ; byrRegs -[x0] - mov x1, x19
+ ;; size=8 bbWeight=0.50 PerfScore 1.00 +G_M19224_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0001 {x0}, gcvars, byref
; gcrRegs +[x1]
- mov x0, x2 - bl CORINFO_HELP_UNBOX
+ ; byrRegs +[x0] + ldrb w0, [x0] + ; byrRegs -[x0] + ldrb w1, [x1, #0x08]
; gcrRegs -[x1]
- ;; size=12 bbWeight=0.25 PerfScore 0.50 -G_M19224_IG08: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ldrb w0, [x19, #0x08] - cmp w20, w0
+ cmp w0, w1
cset x0, eq
- ;; size=12 bbWeight=0.50 PerfScore 2.00 -G_M19224_IG09: ; bbWeight=0.50, epilog, nogc, extend - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20
+ ;; size=16 bbWeight=0.50 PerfScore 3.50 +G_M19224_IG07: ; bbWeight=0.50, epilog, nogc, extend + ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 1.50
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 108, prolog size 12, PerfScore 13.88, instruction count 27, allocated bytes for code 108 (MethodHash=3af2b4e7) for method System.Byte:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 72, prolog size 8, PerfScore 10.12, instruction count 18, allocated bytes for code 72 (MethodHash=3af2b4e7) for method System.Byte:Equals(System.Object):ubyte:this (FullOpts)
; ============================================================ Cfi Info: >> Start offset : 0x000000 >> End offset : 0xd1ffab1e
- CodeOffset: 0x04 Op: AdjustCfaOffset Offset:0x20
+ CodeOffset: 0x04 Op: AdjustCfaOffset Offset:0x10
CodeOffset: 0x04 Op: RelOffset DwarfReg:0x1d Offset:0x0 CodeOffset: 0x04 Op: RelOffset DwarfReg:0x1e Offset:0x8
- CodeOffset: 0x08 Op: RelOffset DwarfReg:0x13 Offset:0x10 - CodeOffset: 0x08 Op: RelOffset DwarfReg:0x14 Offset:0x18 - CodeOffset: 0x0C Op: DefCfaRegister DwarfReg:0x1D
+ CodeOffset: 0x08 Op: DefCfaRegister DwarfReg:0x1D

+8 (+2.50%) : 951.dasm - System.Enum+<>c__641[uint]:<FormatNumberAsHex>b__64_0(System.Span1[ushort],long):this (FullOpts)

@@ -9,32 +9,32 @@ ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd exact single-def <System.Enum+<>c__64`1[uint]> ;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Span`1[ushort]>
-; V02 arg2 [V02,T02] ( 3, 2.50) long -> x3 single-def
+; V02 arg2 [V02,T01] ( 3, 2.50) long -> x3 single-def
;* V03 loc0 [V03 ] ( 0, 0 ) ubyte -> zero-ref ;* V04 loc1 [V04,T17] ( 0, 0 ) int -> zero-ref ld-addr-op ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V06 tmp1 [V06,T18] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V07 tmp2 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ; V08 tmp3 [V08,T08] ( 5, 2.50) int -> x0 "Inline stloc first use temp"
-; V09 tmp4 [V09,T04] ( 3, 3 ) ubyte -> x2 "Inlining Arg"
+; V09 tmp4 [V09,T03] ( 3, 3 ) ubyte -> x2 "Inlining Arg"
; V10 tmp5 [V10,T09] ( 3, 1.50) int -> x2 "Inline stloc first use temp" ; V11 tmp6 [V11,T10] ( 3, 1.50) int -> x2 "Inline stloc first use temp" ;* V12 tmp7 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
-; V13 tmp8 [V13,T05] ( 3, 3 ) ubyte -> x2 "Inlining Arg"
+; V13 tmp8 [V13,T04] ( 3, 3 ) ubyte -> x2 "Inlining Arg"
; V14 tmp9 [V14,T11] ( 3, 1.50) int -> x2 "Inline stloc first use temp" ; V15 tmp10 [V15,T12] ( 3, 1.50) int -> x2 "Inline stloc first use temp" ;* V16 tmp11 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
-; V17 tmp12 [V17,T06] ( 3, 3 ) ubyte -> x2 "Inlining Arg"
+; V17 tmp12 [V17,T05] ( 3, 3 ) ubyte -> x2 "Inlining Arg"
; V18 tmp13 [V18,T13] ( 3, 1.50) int -> x2 "Inline stloc first use temp" ; V19 tmp14 [V19,T14] ( 3, 1.50) int -> x2 "Inline stloc first use temp" ;* V20 tmp15 [V20 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
-; V21 tmp16 [V21,T07] ( 3, 3 ) ubyte -> x0 "Inlining Arg"
+; V21 tmp16 [V21,T06] ( 3, 3 ) ubyte -> x0 "Inlining Arg"
; V22 tmp17 [V22,T15] ( 3, 1.50) int -> x0 "Inline stloc first use temp" ; V23 tmp18 [V23,T16] ( 3, 1.50) int -> x0 "Inline stloc first use temp" ;* V24 tmp19 [V24 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V25 tmp20 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V26 tmp21 [V26,T00] ( 9, 5 ) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V27 tmp22 [V27,T03] ( 2, 2 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V27 tmp22 [V27,T02] ( 2, 2 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
;* V28 tmp23 [V28 ] ( 0, 0 ) byref -> zero-ref single-def "field V07._reference (fldOffset=0x0)" P-INDEP ;* V29 tmp24 [V29 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP ;* V30 tmp25 [V30 ] ( 0, 0 ) byref -> zero-ref single-def "field V12._reference (fldOffset=0x0)" P-INDEP @@ -45,14 +45,15 @@ ;* V35 tmp30 [V35 ] ( 0, 0 ) int -> zero-ref "field V20._length (fldOffset=0x8)" P-INDEP ;* V36 tmp31 [V36 ] ( 0, 0 ) byref -> zero-ref single-def "field V24._reference (fldOffset=0x0)" P-INDEP ;* V37 tmp32 [V37 ] ( 0, 0 ) int -> zero-ref "field V24._length (fldOffset=0x8)" P-INDEP
-; V38 cse0 [V38,T01] ( 6, 6 ) ref -> x1 multi-def "CSE - aggressive"
+; V38 cse0 [V38,T07] ( 5, 2.50) ref -> x19 "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M28263_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x10]!
+ stp fp, lr, [sp, #-0x20]! + str x19, [sp, #0x18]
mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50
+ ;; size=12 bbWeight=1 PerfScore 2.50
G_M28263_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz ; byrRegs +[x1] cmp w2, #8 @@ -126,35 +127,38 @@ G_M28263_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, b strh w0, [x1, #0x0C] b G_M28263_IG05 ;; size=264 bbWeight=0.50 PerfScore 23.75
-G_M28263_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M28263_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x1]
- adrp x1, [HIGH RELOC #0xD1FFAB1E] - add x1, x1, [LOW RELOC #0xD1FFAB1E] - ; gcrRegs +[x1] - mov x0, x1
+ adrp x19, [HIGH RELOC #0xD1FFAB1E] + add x19, x19, [LOW RELOC #0xD1FFAB1E] + ; gcrRegs +[x19] + mov x0, x19
; gcrRegs +[x0]
+ mov x1, x19 + ; gcrRegs +[x1]
bl <unknown method> ; gcrRegs -[x0-x1]
- adrp x1, [HIGH RELOC #0xD1FFAB1E] - add x1, x1, [LOW RELOC #0xD1FFAB1E] - ; gcrRegs +[x1] - mov x0, x1
+ mov x0, x19
; gcrRegs +[x0]
+ mov x1, x19 + ; gcrRegs +[x1]
bl <unknown method>
- ; gcrRegs -[x0-x1] - ;; size=32 bbWeight=1 PerfScore 5.00
+ ; gcrRegs -[x0-x1 x19] + ;; size=32 bbWeight=0.50 PerfScore 2.50
G_M28263_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ldp fp, lr, [sp], #0x10
+ ldr x19, [sp, #0x18] + ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=1 PerfScore 2.00
+ ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 320, prolog size 8, PerfScore 33.75, instruction count 80, allocated bytes for code 320 (MethodHash=6ab79198) for method System.Enum+<>c__64`1[uint]:<FormatNumberAsHex>b__64_0(System.Span`1[ushort],long):this (FullOpts)
+; Total bytes of code 328, prolog size 12, PerfScore 34.25, instruction count 82, allocated bytes for code 328 (MethodHash=6ab79198) for method System.Enum+<>c__64`1[uint]:<FormatNumberAsHex>b__64_0(System.Span`1[ushort],long):this (FullOpts)
; ============================================================ Cfi Info: >> Start offset : 0x000000 >> End offset : 0xd1ffab1e
- CodeOffset: 0x04 Op: AdjustCfaOffset Offset:0x10
+ CodeOffset: 0x04 Op: AdjustCfaOffset Offset:0x20
CodeOffset: 0x04 Op: RelOffset DwarfReg:0x1d Offset:0x0 CodeOffset: 0x04 Op: RelOffset DwarfReg:0x1e Offset:0x8
- CodeOffset: 0x08 Op: DefCfaRegister DwarfReg:0x1D
+ CodeOffset: 0x08 Op: RelOffset DwarfReg:0x13 Offset:0x18 + CodeOffset: 0x0C Op: DefCfaRegister DwarfReg:0x1D

+16 (+3.31%) : 3054.dasm - System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.Threading.Tasks.VoidTaskResult]:GetStateMachineBoxSystem.Diagnostics.ProcessWaitState+d__26:System.Runtime.CompilerServices.IAsyncStateMachineBox (FullOpts)

@@ -8,33 +8,35 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T02] ( 4, 3 ) byref -> x20 single-def
-; V01 arg1 [V01,T01] ( 5, 4 ) byref -> x19 single-def
+; V01 arg1 [V01,T01] ( 4, 3.50) byref -> x19 single-def
; V02 loc0 [V02,T06] ( 5, 3 ) ref -> x21 class-hnd exact single-def <System.Threading.ExecutionContext>
-; V03 loc1 [V03,T04] ( 6, 3.75) ref -> x22 class-hnd exact <System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1+AsyncStateMachineBox`1[System.Threading.Tasks.VoidTaskResult,System.Diagnostics.ProcessWaitState+<WaitForExitAsync>d__26]>
+; V03 loc1 [V03,T04] ( 6, 3.75) ref -> x23 class-hnd exact <System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1+AsyncStateMachineBox`1[System.Threading.Tasks.VoidTaskResult,System.Diagnostics.ProcessWaitState+<WaitForExitAsync>d__26]>
; V04 loc2 [V04,T05] ( 7, 3.25) ref -> x22 class-hnd exact <<unknown class>> ;* V05 loc3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1+AsyncStateMachineBox`1[System.Threading.Tasks.VoidTaskResult,System.Diagnostics.ProcessWaitState+<WaitForExitAsync>d__26]> ;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T03] ( 2, 4 ) ref -> x22 single-def "CASTCLASS eval op1"
+; V07 tmp1 [V07,T03] ( 2, 4 ) ref -> x23 single-def "CASTCLASS eval op1"
;* V08 tmp2 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "spilling QMark2" <System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1+AsyncStateMachineBox`1[System.Threading.Tasks.VoidTaskResult,System.Diagnostics.ProcessWaitState+<WaitForExitAsync>d__26]>
-; V09 tmp3 [V09,T09] ( 2, 2 ) ref -> x22 single-def "CASTCLASS eval op1"
+; V09 tmp3 [V09,T10] ( 2, 2 ) ref -> x22 single-def "CASTCLASS eval op1"
;* V10 tmp4 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "spilling QMark2" <<unknown class>> ; V11 tmp5 [V11,T00] ( 6, 6 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1+AsyncStateMachineBox`1[System.Threading.Tasks.VoidTaskResult,System.Diagnostics.ProcessWaitState+<WaitForExitAsync>d__26]> ; V12 tmp6 [V12,T08] ( 3, 3 ) ref -> x0 class-hnd exact single-def "Single-def Box Helper" <System.Diagnostics.ProcessWaitState+<WaitForExitAsync>d__26> ;* V13 tmp7 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>>
-; V14 rat0 [V14,T07] ( 5, 3 ) long -> x19 "fgMakeTemp is creating a new local variable"
+; V14 cse0 [V14,T09] ( 3, 2.50) ref -> x22 "CSE - aggressive" +; V15 rat0 [V15,T07] ( 5, 3 ) long -> x19 "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M11608_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]! - stp x19, x20, [sp, #0x10] - stp x21, x22, [sp, #0x20]
+ stp fp, lr, [sp, #-0x40]! + stp x19, x20, [sp, #0x18] + stp x21, x22, [sp, #0x28] + str x23, [sp, #0x38]
mov fp, sp mov x20, x0 ; byrRegs +[x20] mov x19, x1 ; byrRegs +[x19]
- ;; size=24 bbWeight=1 PerfScore 4.50
+ ;; size=28 bbWeight=1 PerfScore 5.50
G_M11608_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz bl System.Threading.ExecutionContext:Capture():System.Threading.ExecutionContext ; gcrRegs +[x0] @@ -43,19 +45,22 @@ G_M11608_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20 ; gcrRegs +[x21] ldr x22, [x19] ; gcrRegs +[x22]
- cbz x22, G_M11608_IG07 - ;; size=16 bbWeight=1 PerfScore 5.50 -G_M11608_IG03: ; bbWeight=0.25, gcrefRegs=600000 {x21 x22}, byrefRegs=180000 {x19 x20}, byref, isz
+ mov x23, x22 + ; gcrRegs +[x23] + cbz x23, G_M11608_IG07 + ;; size=20 bbWeight=1 PerfScore 6.00 +G_M11608_IG03: ; bbWeight=0.25, gcrefRegs=E00000 {x21 x22 x23}, byrefRegs=180000 {x19 x20}, byref, isz
; gcrRegs -[x0]
- ldr x0, [x22]
+ ldr x0, [x23]
adrp x1, [HIGH RELOC #0xD1FFAB1E] // System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1+AsyncStateMachineBox`1[System.Threading.Tasks.VoidTaskResult,System.Diagnostics.ProcessWaitState+<WaitForExitAsync>d__26] add x1, x1, [LOW RELOC #0xD1FFAB1E] cmp x0, x1 bne G_M11608_IG07 ;; size=20 bbWeight=0.25 PerfScore 1.38
-G_M11608_IG04: ; bbWeight=0.50, gcrefRegs=600000 {x21 x22}, byrefRegs=0000 {}, byref, isz
+G_M11608_IG04: ; bbWeight=0.50, gcrefRegs=A00000 {x21 x23}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x22]
; byrRegs -[x19-x20]
- mov x0, x22
+ mov x0, x23
; gcrRegs +[x0] bl <unknown method> ; gcrRegs -[x0] @@ -66,7 +71,7 @@ G_M11608_IG04: ; bbWeight=0.50, gcrefRegs=600000 {x21 x22}, byrefRegs=000 ; byrRegs -[x0] cmp x0, x21 beq G_M11608_IG05
- mov x0, x22
+ mov x0, x23
bl <unknown method> ; gcrRegs -[x0] ; byrRegs +[x0] @@ -79,23 +84,22 @@ G_M11608_IG04: ; bbWeight=0.50, gcrefRegs=600000 {x21 x22}, byrefRegs=000 ; gcrRegs -[x15 x21] ; byrRegs -[x0 x14] ;; size=40 bbWeight=0.50 PerfScore 4.75
-G_M11608_IG05: ; bbWeight=0.50, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref - mov x0, x22
+G_M11608_IG05: ; bbWeight=0.50, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, byref + mov x0, x23
; gcrRegs +[x0] ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M11608_IG06: ; bbWeight=0.50, epilog, nogc, extend
- ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x30
+ ldr x23, [sp, #0x38] + ldp x21, x22, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x40
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.00 -G_M11608_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=200000 {x21}, byrefRegs=180000 {x19 x20}, gcvars, byref, isz - ; gcrRegs -[x0 x22] +[x21]
+ ;; size=20 bbWeight=0.50 PerfScore 3.00 +G_M11608_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=600000 {x21 x22}, byrefRegs=180000 {x19 x20}, gcvars, byref, isz + ; gcrRegs -[x0 x23] +[x21-x22]
; byrRegs +[x19-x20]
- ldr x22, [x19] - ; gcrRegs +[x22]
cbz x22, G_M11608_IG12
- ;; size=8 bbWeight=0.50 PerfScore 2.00
+ ;; size=4 bbWeight=0.50 PerfScore 0.50
G_M11608_IG08: ; bbWeight=0.25, gcrefRegs=600000 {x21 x22}, byrefRegs=180000 {x19 x20}, byref, isz ldr x0, [x22] adrp x1, [HIGH RELOC #0xD1FFAB1E] // <unknown class> @@ -152,11 +156,12 @@ G_M11608_IG10: ; bbWeight=0.50, gcrefRegs=600000 {x21 x22}, byrefRegs=000 ; gcrRegs +[x0] ;; size=24 bbWeight=0.50 PerfScore 2.00 G_M11608_IG11: ; bbWeight=0.50, epilog, nogc, extend
- ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x30
+ ldr x23, [sp, #0x38] + ldp x21, x22, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x40
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.00
+ ;; size=20 bbWeight=0.50 PerfScore 3.00
G_M11608_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=200000 {x21}, byrefRegs=180000 {x19 x20}, gcvars, byref, isz ; gcrRegs -[x0 x22] +[x21] ; byrRegs +[x19-x20] @@ -233,11 +238,12 @@ G_M11608_IG15: ; bbWeight=0.50, gcrefRegs=400000 {x22}, byrefRegs=0000 {} ; gcrRegs +[x0] ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M11608_IG16: ; bbWeight=0.50, epilog, nogc, extend
- ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x30
+ ldr x23, [sp, #0x38] + ldp x21, x22, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x40
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.00
+ ;; size=20 bbWeight=0.50 PerfScore 3.00
G_M11608_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs -[x0] bl CORINFO_HELP_READYTORUN_GCSTATIC_BASE @@ -263,17 +269,18 @@ G_M11608_IG18: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, b b G_M11608_IG13 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 484, prolog size 24, PerfScore 65.50, instruction count 121, allocated bytes for code 484 (MethodHash=e094d2a7) for method System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.Threading.Tasks.VoidTaskResult]:GetStateMachineBox[System.Diagnostics.ProcessWaitState+<WaitForExitAsync>d__26](byref,byref):System.Runtime.CompilerServices.IAsyncStateMachineBox (FullOpts)
+; Total bytes of code 500, prolog size 28, PerfScore 68.50, instruction count 125, allocated bytes for code 500 (MethodHash=e094d2a7) for method System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.Threading.Tasks.VoidTaskResult]:GetStateMachineBox[System.Diagnostics.ProcessWaitState+<WaitForExitAsync>d__26](byref,byref):System.Runtime.CompilerServices.IAsyncStateMachineBox (FullOpts)
; ============================================================ Cfi Info: >> Start offset : 0x000000 >> End offset : 0xd1ffab1e
- CodeOffset: 0x04 Op: AdjustCfaOffset Offset:0x30
+ CodeOffset: 0x04 Op: AdjustCfaOffset Offset:0x40
CodeOffset: 0x04 Op: RelOffset DwarfReg:0x1d Offset:0x0 CodeOffset: 0x04 Op: RelOffset DwarfReg:0x1e Offset:0x8
- CodeOffset: 0x08 Op: RelOffset DwarfReg:0x13 Offset:0x10 - CodeOffset: 0x08 Op: RelOffset DwarfReg:0x14 Offset:0x18 - CodeOffset: 0x0C Op: RelOffset DwarfReg:0x15 Offset:0x20 - CodeOffset: 0x0C Op: RelOffset DwarfReg:0x16 Offset:0x28 - CodeOffset: 0x10 Op: DefCfaRegister DwarfReg:0x1D
+ CodeOffset: 0x08 Op: RelOffset DwarfReg:0x13 Offset:0x18 + CodeOffset: 0x08 Op: RelOffset DwarfReg:0x14 Offset:0x20 + CodeOffset: 0x0C Op: RelOffset DwarfReg:0x15 Offset:0x28 + CodeOffset: 0x0C Op: RelOffset DwarfReg:0x16 Offset:0x30 + CodeOffset: 0x10 Op: RelOffset DwarfReg:0x17 Offset:0x38 + CodeOffset: 0x14 Op: DefCfaRegister DwarfReg:0x1D

+8 (+6.06%) : 4405.dasm - System.Threading.PortableThreadPool:RemoveWaitThread(System.Threading.PortableThreadPool+WaitThread):this (FullOpts)

@@ -9,8 +9,8 @@ ; ; V00 this [V00,T03] ( 4, 3.50) ref -> x0 this class-hnd exact single-def <System.Threading.PortableThreadPool> ; V01 arg1 [V01,T01] ( 4, 7 ) ref -> x1 class-hnd exact single-def <System.Threading.PortableThreadPool+WaitThread>
-; V02 loc0 [V02,T00] ( 9, 19.50) ref -> registers class-hnd exact <System.Threading.PortableThreadPool+WaitThreadNode> -; V03 loc1 [V03,T02] ( 3, 8.50) ref -> x19 class-hnd exact <System.Threading.PortableThreadPool+WaitThreadNode>
+; V02 loc0 [V02,T00] ( 8, 19 ) ref -> registers class-hnd exact <System.Threading.PortableThreadPool+WaitThreadNode> +; V03 loc1 [V03,T02] ( 3, 8.50) ref -> registers class-hnd exact <System.Threading.PortableThreadPool+WaitThreadNode>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V06 tmp2 [V06 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -51,50 +51,56 @@ G_M1296_IG05: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=80002 { ; gcrRegs +[x1 x19] ldr x0, [x19, #0x10] ; gcrRegs +[x0]
- cbz x0, G_M1296_IG06
+ cbz x0, G_M1296_IG08
ldr x2, [x0, #0x08] ; gcrRegs +[x2] cmp x2, x1 bne G_M1296_IG07 ;; size=20 bbWeight=4 PerfScore 34.00
-G_M1296_IG06: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
+G_M1296_IG06: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x1-x2]
- cbnz x0, G_M1296_IG08
+ mov x14, x19 + ; gcrRegs +[x14] + mov x19, x0 + b G_M1296_IG09 + ;; size=12 bbWeight=0.50 PerfScore 1.00 +G_M1296_IG07: ; bbWeight=2, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref + ; gcrRegs -[x14 x19] +[x1] + mov x19, x0 + ; gcrRegs +[x19] + b G_M1296_IG05 + ;; size=8 bbWeight=2 PerfScore 3.00 +G_M1296_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0-x1 x19]
adrp x0, [HIGH RELOC #0xD1FFAB1E]
- ; gcrRegs -[x0]
add x0, x0, [LOW RELOC #0xD1FFAB1E] ; gcrRegs +[x0] adrp x1, [HIGH RELOC #0xD1FFAB1E] add x1, x1, [LOW RELOC #0xD1FFAB1E] ; gcrRegs +[x1] bl <unknown method>
- ; gcrRegs -[x0-x1 x19]
+ ; gcrRegs -[x0-x1]
; gcr arg pop 0
- b G_M1296_IG09 - ;; size=28 bbWeight=0.50 PerfScore 2.50 -G_M1296_IG07: ; bbWeight=2, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref - ; gcrRegs +[x0-x1] - mov x19, x0 - ; gcrRegs +[x19] - b G_M1296_IG05 - ;; size=8 bbWeight=2 PerfScore 3.00 -G_M1296_IG08: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref - ; gcrRegs -[x1] - ldr x15, [x0, #0x10]
+ b G_M1296_IG10 + ;; size=24 bbWeight=0.50 PerfScore 2.00 +G_M1296_IG09: ; bbWeight=0.50, gcrefRegs=84000 {x14 x19}, byrefRegs=0000 {}, byref + ; gcrRegs +[x14 x19] + ldr x15, [x19, #0x10]
; gcrRegs +[x15]
- add x14, x19, #16
+ add x14, x14, #16 + ; gcrRegs -[x14]
; byrRegs +[x14] bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x0 x15 x19]
+ ; gcrRegs -[x15 x19]
; byrRegs -[x14] ;; size=12 bbWeight=0.50 PerfScore 2.25
-G_M1296_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M1296_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldr x19, [sp, #0x18] ldp fp, lr, [sp], #0x20 ret lr ;; size=12 bbWeight=0.50 PerfScore 2.00
-; Total bytes of code 132, prolog size 12, PerfScore 58.00, instruction count 33, allocated bytes for code 132 (MethodHash=2a35faef) for method System.Threading.PortableThreadPool:RemoveWaitThread(System.Threading.PortableThreadPool+WaitThread):this (FullOpts)
+; Total bytes of code 140, prolog size 12, PerfScore 58.50, instruction count 35, allocated bytes for code 140 (MethodHash=2a35faef) for method System.Threading.PortableThreadPool:RemoveWaitThread(System.Threading.PortableThreadPool+WaitThread):this (FullOpts)
; ============================================================ Cfi Info:

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.linux.arm64.checked.mch 97 60 7 30 -628 +56
benchmarks.run_pgo.linux.arm64.checked.mch 1,157 551 368 238 -4,392 +3,308
benchmarks.run_tiered.linux.arm64.checked.mch 40 24 3 13 -484 +24
coreclr_tests.run.linux.arm64.checked.mch 1,014 460 239 315 -6,700 +2,164
libraries.crossgen2.linux.arm64.checked.mch 310 140 31 139 -1,664 +308
libraries.pmi.linux.arm64.checked.mch 597 305 88 204 -3,880 +796
libraries_tests.run.linux.arm64.Release.mch 6,977 3,595 1,502 1,880 -71,468 +15,760
librariestestsnotieredcompilation.run.linux.arm64.Release.mch 1,362 513 147 702 -4,876 +1,276
realworld.run.linux.arm64.checked.mch 99 47 13 39 -660 +148
smoke_tests.nativeaot.linux.arm64.checked.mch 87 46 22 19 -1,072 +120
11,740 5,741 2,420 3,579 -95,824 +23,960

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.linux.arm64.checked.mch 33,705 2,779 30,926 0 (0.00%) 5 (0.01%)
benchmarks.run_pgo.linux.arm64.checked.mch 152,705 61,290 91,415 4 (0.00%) 199 (0.13%)
benchmarks.run_tiered.linux.arm64.checked.mch 63,810 48,019 15,791 1 (0.00%) 4 (0.01%)
coreclr_tests.run.linux.arm64.checked.mch 625,172 382,318 242,854 3 (0.00%) 104 (0.02%)
libraries.crossgen2.linux.arm64.checked.mch 234,496 15 234,481 0 (0.00%) 0 (0.00%)
libraries.pmi.linux.arm64.checked.mch 295,734 6 295,728 0 (0.00%) 11 (0.00%)
libraries_tests.run.linux.arm64.Release.mch 743,305 490,908 252,397 0 (0.00%) 861 (0.12%)
librariestestsnotieredcompilation.run.linux.arm64.Release.mch 304,854 21,599 283,255 0 (0.00%) 11 (0.00%)
realworld.run.linux.arm64.checked.mch 33,305 151 33,154 0 (0.00%) 4 (0.01%)
smoke_tests.nativeaot.linux.arm64.checked.mch 19,033 7 19,026 0 (0.00%) 0 (0.00%)
2,506,119 1,007,092 1,499,027 8 (0.00%) 1,199 (0.05%)

jit-analyze output

benchmarks.run.linux.arm64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 15545628 (overridden on cmd)
Total bytes of diff: 15545056 (overridden on cmd)
Total bytes of delta: -572 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          20 : 20965.dasm (0.28 % of base)
          16 : 3932.dasm (1.39 % of base)
           4 : 12182.dasm (1.11 % of base)
           4 : 1731.dasm (0.60 % of base)
           4 : 15804.dasm (0.20 % of base)
           4 : 22157.dasm (0.89 % of base)
           4 : 4504.dasm (1.22 % of base)

Top file improvements (bytes):
         -52 : 12149.dasm (-40.62 % of base)
         -48 : 19004.dasm (-7.64 % of base)
         -48 : 11712.dasm (-0.35 % of base)
         -36 : 27942.dasm (-21.95 % of base)
         -28 : 33648.dasm (-6.36 % of base)
         -20 : 13712.dasm (-6.33 % of base)
         -20 : 24352.dasm (-7.04 % of base)
         -16 : 18103.dasm (-4.49 % of base)
         -16 : 2812.dasm (-0.35 % of base)
         -16 : 947.dasm (-5.41 % of base)
         -16 : 10213.dasm (-0.12 % of base)
         -16 : 20693.dasm (-0.69 % of base)
         -12 : 935.dasm (-3.90 % of base)
         -12 : 1187.dasm (-0.22 % of base)
         -12 : 15022.dasm (-0.78 % of base)
         -12 : 20671.dasm (-0.36 % of base)
         -12 : 9988.dasm (-0.36 % of base)
         -12 : 10553.dasm (-1.38 % of base)
         -12 : 1773.dasm (-4.35 % of base)
         -12 : 23478.dasm (-1.58 % of base)

37 total files with Code Size differences (30 improved, 7 regressed), 25 unchanged.

Top method regressions (bytes):
          20 (0.28 % of base) : 20965.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodSymbol:CheckModifiers(ubyte,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
          16 (1.39 % of base) : 3932.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
           4 (0.89 % of base) : 22157.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol+<GetSecurityAttributes>d__118:MoveNext():ubyte:this (FullOpts)
           4 (1.22 % of base) : 4504.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)
           4 (0.60 % of base) : 1731.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
           4 (1.11 % of base) : 12182.dasm - System.Enum+<>c__63`1[uint]:<FormatNumberAsHex>b__63_0(System.Span`1[ushort],long):this (FullOpts)
           4 (0.20 % of base) : 15804.dasm - System.Xml.XmlConverter:TryParseDateTime(ubyte[],int,int,byref):ubyte (FullOpts)

Top method improvements (bytes):
         -52 (-40.62 % of base) : 12149.dasm - System.Int32:Equals(System.Object):ubyte:this (FullOpts)
         -48 (-0.35 % of base) : 11712.dasm - MessagePack.Internal.ObjectSerializationInfo:CreateOrNull(System.Type,ubyte,ubyte,ubyte):MessagePack.Internal.ObjectSerializationInfo (FullOpts)
         -48 (-7.64 % of base) : 19004.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (FullOpts)
         -36 (-21.95 % of base) : 27942.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
         -28 (-6.36 % of base) : 33648.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (FullOpts)
         -20 (-7.04 % of base) : 24352.dasm - Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (FullOpts)
         -20 (-6.33 % of base) : 13712.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (FullOpts)
         -16 (-0.12 % of base) : 10213.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.CollectionsOfPrimitives,int) (FullOpts)
         -16 (-0.69 % of base) : 20693.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetSpecialType(byte):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (FullOpts)
         -16 (-5.41 % of base) : 947.dasm - System.Number:RoundNumber(byref,int,ubyte) (FullOpts)
         -16 (-4.49 % of base) : 18103.dasm - System.Xml.XmlElement:WriteElementTo(System.Xml.XmlWriter,System.Xml.XmlElement) (FullOpts)
         -16 (-0.35 % of base) : 2812.dasm - Utf8Json.Internal.Emit.MetaType:.ctor(System.Type,System.Func`2[System.String,System.String],ubyte):this (FullOpts)
         -12 (-1.58 % of base) : 23478.dasm - Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass:LeaveParameter(Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.Location):this (FullOpts)
         -12 (-0.36 % of base) : 20671.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
         -12 (-0.36 % of base) : 9988.dasm - Sigil.Impl.VerifiableTracker:CollapseAndVerify():Sigil.Impl.VerificationResult:this (FullOpts)
         -12 (-0.22 % of base) : 1187.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
         -12 (-3.90 % of base) : 935.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
         -12 (-4.35 % of base) : 1773.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
         -12 (-1.38 % of base) : 10553.dasm - System.Uri:ParseSchemeCheckImplicitFile(System.String,byref,byref,byref):int (FullOpts)
         -12 (-0.78 % of base) : 15022.dasm - System.UriHelper:UnescapeString(ulong,int,int,byref,ushort,ushort,ushort,int,System.UriParser,ubyte) (FullOpts)

Top method regressions (percentages):
          16 (1.39 % of base) : 3932.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
           4 (1.22 % of base) : 4504.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)
           4 (1.11 % of base) : 12182.dasm - System.Enum+<>c__63`1[uint]:<FormatNumberAsHex>b__63_0(System.Span`1[ushort],long):this (FullOpts)
           4 (0.89 % of base) : 22157.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol+<GetSecurityAttributes>d__118:MoveNext():ubyte:this (FullOpts)
           4 (0.60 % of base) : 1731.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
          20 (0.28 % of base) : 20965.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodSymbol:CheckModifiers(ubyte,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
           4 (0.20 % of base) : 15804.dasm - System.Xml.XmlConverter:TryParseDateTime(ubyte[],int,int,byref):ubyte (FullOpts)

Top method improvements (percentages):
         -52 (-40.62 % of base) : 12149.dasm - System.Int32:Equals(System.Object):ubyte:this (FullOpts)
         -36 (-21.95 % of base) : 27942.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
         -48 (-7.64 % of base) : 19004.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (FullOpts)
         -20 (-7.04 % of base) : 24352.dasm - Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (FullOpts)
         -28 (-6.36 % of base) : 33648.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (FullOpts)
         -20 (-6.33 % of base) : 13712.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (FullOpts)
         -16 (-5.41 % of base) : 947.dasm - System.Number:RoundNumber(byref,int,ubyte) (FullOpts)
          -8 (-4.55 % of base) : 8672.dasm - System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor+ErrorCollection+Enumerator:MoveNext():ubyte:this (FullOpts)
         -16 (-4.49 % of base) : 18103.dasm - System.Xml.XmlElement:WriteElementTo(System.Xml.XmlWriter,System.Xml.XmlElement) (FullOpts)
         -12 (-4.35 % of base) : 1773.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
         -12 (-3.90 % of base) : 935.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
          -4 (-3.85 % of base) : 9523.dasm - System.Buffers.ReadOnlySequence`1[ubyte]:SeekMultiSegment(System.Buffers.ReadOnlySequenceSegment`1[ubyte],System.Object,int,long,int):System.SequencePosition (FullOpts)
          -8 (-3.23 % of base) : 3917.dasm - System.Globalization.CultureData:GetSeparator(System.String,System.String):System.String (FullOpts)
          -4 (-2.86 % of base) : 21177.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetSymbol[System.__Canon](Microsoft.CodeAnalysis.ISymbol):System.__Canon (FullOpts)
          -8 (-2.41 % of base) : 6743.dasm - System.Xml.Serialization.CodeGenerator:StoreMember(System.Reflection.MemberInfo):this (FullOpts)
          -8 (-1.75 % of base) : 10014.dasm - Sigil.Impl.LinqStack`1[System.__Canon]:Peek(ubyte,int):Sigil.Impl.LinqList`1[Sigil.Impl.TypeOnStack][]:this (FullOpts)
          -4 (-1.64 % of base) : 4429.dasm - System.Text.Json.Tests.Perf_Reader:ReadMultiSpanSequenceEmptyLoop():this (FullOpts)
          -4 (-1.64 % of base) : 13194.dasm - System.Text.Json.Tests.Perf_Reader:ReadSingleSpanSequenceEmptyLoop():this (FullOpts)
          -4 (-1.64 % of base) : 3528.dasm - System.Text.Json.Tests.Perf_Segment:ReadSingleSegmentSequence():this (FullOpts)
          -8 (-1.64 % of base) : 19280.dasm - System.Xml.Linq.XContainer+<GetDescendants>d__38:MoveNext():ubyte:this (FullOpts)


benchmarks.run_pgo.linux.arm64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 79733396 (overridden on cmd)
Total bytes of diff: 79732312 (overridden on cmd)
Total bytes of delta: -1084 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          44 : 67814.dasm (3.99 % of base)
          44 : 44809.dasm (1.00 % of base)
          44 : 67788.dasm (3.99 % of base)
          44 : 131670.dasm (3.93 % of base)
          44 : 136311.dasm (3.85 % of base)
          44 : 144972.dasm (3.96 % of base)
          44 : 145414.dasm (1.01 % of base)
          44 : 151103.dasm (1.01 % of base)
          44 : 16129.dasm (3.96 % of base)
          44 : 33925.dasm (3.96 % of base)
          44 : 61692.dasm (1.01 % of base)
          44 : 86971.dasm (3.97 % of base)
          44 : 127766.dasm (3.96 % of base)
          44 : 51480.dasm (1.01 % of base)
          36 : 131807.dasm (3.25 % of base)
          36 : 135054.dasm (8.11 % of base)
          36 : 136435.dasm (3.25 % of base)
          36 : 39738.dasm (0.99 % of base)
          36 : 104148.dasm (2.90 % of base)
          32 : 148315.dasm (0.72 % of base)

Top file improvements (bytes):
         -88 : 86861.dasm (-4.36 % of base)
         -80 : 135704.dasm (-3.14 % of base)
         -56 : 59144.dasm (-1.31 % of base)
         -56 : 52052.dasm (-1.31 % of base)
         -56 : 86589.dasm (-0.59 % of base)
         -48 : 108457.dasm (-1.54 % of base)
         -48 : 115964.dasm (-1.53 % of base)
         -48 : 122880.dasm (-1.54 % of base)
         -44 : 100225.dasm (-1.13 % of base)
         -44 : 86218.dasm (-2.59 % of base)
         -44 : 134176.dasm (-1.40 % of base)
         -44 : 30690.dasm (-1.40 % of base)
         -40 : 48249.dasm (-34.48 % of base)
         -40 : 90512.dasm (-1.30 % of base)
         -36 : 89596.dasm (-32.14 % of base)
         -36 : 130936.dasm (-1.55 % of base)
         -32 : 130937.dasm (-20.51 % of base)
         -28 : 96439.dasm (-0.70 % of base)
         -28 : 151546.dasm (-5.88 % of base)
         -24 : 85704.dasm (-4.03 % of base)

62 total files with Code Size differences (34 improved, 28 regressed), 20 unchanged.

Top method regressions (bytes):
          44 (1.00 % of base) : 44809.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
          44 (1.01 % of base) : 145414.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
          44 (1.01 % of base) : 151103.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
          44 (1.01 % of base) : 61692.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
          44 (1.01 % of base) : 51480.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
          44 (3.99 % of base) : 67814.dasm - System.Threading.PortableThreadPool+WorkerThread:WorkerThreadStart() (Tier1-OSR)
          44 (3.99 % of base) : 67788.dasm - System.Threading.PortableThreadPool+WorkerThread:WorkerThreadStart() (Tier1-OSR)
          44 (3.93 % of base) : 131670.dasm - System.Threading.PortableThreadPool+WorkerThread:WorkerThreadStart() (Tier1-OSR)
          44 (3.85 % of base) : 136311.dasm - System.Threading.PortableThreadPool+WorkerThread:WorkerThreadStart() (Tier1-OSR)
          44 (3.96 % of base) : 144972.dasm - System.Threading.PortableThreadPool+WorkerThread:WorkerThreadStart() (Tier1-OSR)
          44 (3.96 % of base) : 16129.dasm - System.Threading.PortableThreadPool+WorkerThread:WorkerThreadStart() (Tier1-OSR)
          44 (3.96 % of base) : 33925.dasm - System.Threading.PortableThreadPool+WorkerThread:WorkerThreadStart() (Tier1-OSR)
          44 (3.97 % of base) : 86971.dasm - System.Threading.PortableThreadPool+WorkerThread:WorkerThreadStart() (Tier1-OSR)
          44 (3.96 % of base) : 127766.dasm - System.Threading.PortableThreadPool+WorkerThread:WorkerThreadStart() (Tier1-OSR)
          36 (8.11 % of base) : 135054.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:TryMatch(byref,int,byref,uint,byref):ubyte:this (Tier1)
          36 (0.99 % of base) : 39738.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
          36 (3.25 % of base) : 131807.dasm - System.Threading.PortableThreadPool+WorkerThread:WorkerThreadStart() (Tier1-OSR)
          36 (3.25 % of base) : 136435.dasm - System.Threading.PortableThreadPool+WorkerThread:WorkerThreadStart() (Tier1-OSR)
          36 (2.90 % of base) : 104148.dasm - System.Threading.SpinLock:ContinueTryEnter(int,byref):this (Tier1)
          32 (0.72 % of base) : 148315.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)

Top method improvements (bytes):
         -88 (-4.36 % of base) : 86861.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this (Tier1)
         -80 (-3.14 % of base) : 135704.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(ulong,int,ulong,int,byref,byref):int (Tier1-OSR)
         -56 (-0.59 % of base) : 86589.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:SynthesizeDebuggableAttribute():Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedAttributeData:this (Tier1)
         -56 (-1.31 % of base) : 59144.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
         -56 (-1.31 % of base) : 52052.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
         -48 (-1.54 % of base) : 108457.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
         -48 (-1.53 % of base) : 115964.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
         -48 (-1.54 % of base) : 122880.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
         -44 (-2.59 % of base) : 86218.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:Rewrite(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,int,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundStatement,Microsoft.CodeAnalysis.CSharp.TypeCompilationState,Microsoft.CodeAnalysis.CSharp.SynthesizedSubmissionFields,ubyte,Microsoft.CodeAnalysis.Emit.MethodInstrumentation,Microsoft.CodeAnalysis.CodeGen.DebugDocumentProvider,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,byref,byref,byref):Microsoft.CodeAnalysis.CSharp.BoundStatement (Tier1)
         -44 (-1.13 % of base) : 100225.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
         -44 (-1.40 % of base) : 134176.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
         -44 (-1.40 % of base) : 30690.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
         -40 (-34.48 % of base) : 48249.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -40 (-1.30 % of base) : 90512.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
         -36 (-1.55 % of base) : 130936.dasm - System.Numerics.BigInteger:Subtract(System.ReadOnlySpan`1[uint],int,System.ReadOnlySpan`1[uint],int):System.Numerics.BigInteger (Tier1)
         -36 (-32.14 % of base) : 89596.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -32 (-20.51 % of base) : 130937.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
         -28 (-0.70 % of base) : 96439.dasm - Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass:Scan(byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2+PendingBranch[Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass+LocalState,Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass+LocalFunctionState]]:this (Tier1)
         -28 (-5.88 % of base) : 151546.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (Tier1)
         -24 (-4.96 % of base) : 85859.dasm - Microsoft.Cci.MetadataWriter:GetMetadataName(Microsoft.Cci.INamedTypeReference,int):System.String (Tier1)

Top method regressions (percentages):
          20 (8.20 % of base) : 86693.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)
          36 (8.11 % of base) : 135054.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:TryMatch(byref,int,byref,uint,byref):ubyte:this (Tier1)
          16 (6.56 % of base) : 82712.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyDelaySignAttributeSetting():ubyte:this (Tier1)
          16 (6.45 % of base) : 86690.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyAlgorithmIdAttributeSetting():System.Nullable`1[int]:this (Tier1)
          16 (5.97 % of base) : 86689.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_HashAlgorithm():int:this (Tier1)
          16 (4.60 % of base) : 85474.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_IsDelaySigned():ubyte:this (Tier1)
          44 (3.99 % of base) : 67814.dasm - System.Threading.PortableThreadPool+WorkerThread:WorkerThreadStart() (Tier1-OSR)
          44 (3.99 % of base) : 67788.dasm - System.Threading.PortableThreadPool+WorkerThread:WorkerThreadStart() (Tier1-OSR)
          44 (3.97 % of base) : 86971.dasm - System.Threading.PortableThreadPool+WorkerThread:WorkerThreadStart() (Tier1-OSR)
          44 (3.96 % of base) : 144972.dasm - System.Threading.PortableThreadPool+WorkerThread:WorkerThreadStart() (Tier1-OSR)
          44 (3.96 % of base) : 16129.dasm - System.Threading.PortableThreadPool+WorkerThread:WorkerThreadStart() (Tier1-OSR)
          44 (3.96 % of base) : 33925.dasm - System.Threading.PortableThreadPool+WorkerThread:WorkerThreadStart() (Tier1-OSR)
          44 (3.96 % of base) : 127766.dasm - System.Threading.PortableThreadPool+WorkerThread:WorkerThreadStart() (Tier1-OSR)
          44 (3.93 % of base) : 131670.dasm - System.Threading.PortableThreadPool+WorkerThread:WorkerThreadStart() (Tier1-OSR)
          44 (3.85 % of base) : 136311.dasm - System.Threading.PortableThreadPool+WorkerThread:WorkerThreadStart() (Tier1-OSR)
          20 (3.57 % of base) : 85111.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass+LocalState,System.__Canon]:VisitWithStackGuard(Microsoft.CodeAnalysis.CSharp.BoundNode):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier1)
          12 (3.26 % of base) : 53111.dasm - System.Net.Security.SslStream:HaveFullTlsFrame(byref):ubyte:this (Tier1)
          36 (3.25 % of base) : 131807.dasm - System.Threading.PortableThreadPool+WorkerThread:WorkerThreadStart() (Tier1-OSR)
          36 (3.25 % of base) : 136435.dasm - System.Threading.PortableThreadPool+WorkerThread:WorkerThreadStart() (Tier1-OSR)
          20 (3.16 % of base) : 135951.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)

Top method improvements (percentages):
         -40 (-34.48 % of base) : 48249.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -36 (-32.14 % of base) : 89596.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -32 (-20.51 % of base) : 130937.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
         -20 (-6.94 % of base) : 46672.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)
         -20 (-6.94 % of base) : 46656.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)
         -20 (-6.33 % of base) : 46671.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1)
         -12 (-6.00 % of base) : 130911.dasm - System.Numerics.BigInteger:op_Multiply(System.Numerics.BigInteger,System.Numerics.BigInteger):System.Numerics.BigInteger (Tier1)
         -28 (-5.88 % of base) : 151546.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (Tier1)
         -24 (-5.41 % of base) : 151531.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (Tier1-OSR)
         -24 (-5.41 % of base) : 151545.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (Tier1-OSR)
         -20 (-5.10 % of base) : 103425.dasm - System.Threading.PortableThreadPool:NotifyWorkItemProgress(System.Object,int):this (Tier1)
         -20 (-5.10 % of base) : 26909.dasm - System.Threading.PortableThreadPool:NotifyWorkItemProgress(System.Object,int):this (Tier1)
         -24 (-4.96 % of base) : 85859.dasm - Microsoft.Cci.MetadataWriter:GetMetadataName(Microsoft.Cci.INamedTypeReference,int):System.String (Tier1)
         -88 (-4.36 % of base) : 86861.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this (Tier1)
         -12 (-4.35 % of base) : 143140.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier1)
         -12 (-4.05 % of base) : 92090.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier1)
         -12 (-4.05 % of base) : 129323.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier1)
         -12 (-4.05 % of base) : 150566.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier1)
         -12 (-4.05 % of base) : 149966.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier1)
         -24 (-4.03 % of base) : 85704.dasm - Microsoft.CodeAnalysis.Emit.PEModuleBuilder`9[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:<GetTopLevelTypeDefinitions>g__AddTopLevelType|23_0(System.Collections.Generic.HashSet`1[System.String],Microsoft.Cci.INamespaceTypeDefinition) (Tier1)


benchmarks.run_tiered.linux.arm64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 24597428 (overridden on cmd)
Total bytes of diff: 24596968 (overridden on cmd)
Total bytes of delta: -460 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          16 : 8134.dasm (1.39 % of base)
           4 : 22969.dasm (0.60 % of base)
           4 : 44500.dasm (0.89 % of base)

Top file improvements (bytes):
        -200 : 34100.dasm (-7.65 % of base)
         -36 : 54999.dasm (-21.95 % of base)
         -36 : 6263.dasm (-32.14 % of base)
         -24 : 63013.dasm (-5.83 % of base)
         -20 : 27729.dasm (-6.94 % of base)
         -16 : 43662.dasm (-0.69 % of base)
         -16 : 8433.dasm (-5.41 % of base)
         -16 : 22932.dasm (-0.12 % of base)
         -12 : 31033.dasm (-0.78 % of base)
         -12 : 34456.dasm (-4.35 % of base)
         -12 : 3510.dasm (-0.22 % of base)
         -12 : 47507.dasm (-1.58 % of base)
         -12 : 8411.dasm (-3.90 % of base)
          -8 : 29819.dasm (-4.55 % of base)
          -8 : 44796.dasm (-0.12 % of base)
          -8 : 45895.dasm (-1.08 % of base)
          -8 : 18381.dasm (-3.23 % of base)
          -4 : 16058.dasm (-2.70 % of base)
          -4 : 44736.dasm (-0.34 % of base)
          -4 : 58248.dasm (-0.71 % of base)

27 total files with Code Size differences (24 improved, 3 regressed), 13 unchanged.

Top method regressions (bytes):
          16 (1.39 % of base) : 8134.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (Tier0-FullOpts)
           4 (0.89 % of base) : 44500.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol+<GetSecurityAttributes>d__118:MoveNext():ubyte:this (Tier1)
           4 (0.60 % of base) : 22969.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)

Top method improvements (bytes):
        -200 (-7.65 % of base) : 34100.dasm - System.Text.Json.Tests.Perf_Segment:ReadMultiSegmentSequenceUsingSpan(int):this (Tier1-OSR)
         -36 (-21.95 % of base) : 54999.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
         -36 (-32.14 % of base) : 6263.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -24 (-5.83 % of base) : 63013.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (Tier1-OSR)
         -20 (-6.94 % of base) : 27729.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)
         -16 (-0.12 % of base) : 22932.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.CollectionsOfPrimitives,int) (FullOpts)
         -16 (-0.69 % of base) : 43662.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetSpecialType(byte):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (Tier1)
         -16 (-5.41 % of base) : 8433.dasm - System.Number:RoundNumber(byref,int,ubyte) (Tier1)
         -12 (-1.58 % of base) : 47507.dasm - Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass:LeaveParameter(Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.Location):this (Tier1)
         -12 (-0.22 % of base) : 3510.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier0-FullOpts)
         -12 (-3.90 % of base) : 8411.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (Tier1)
         -12 (-4.35 % of base) : 34456.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier1)
         -12 (-0.78 % of base) : 31033.dasm - System.UriHelper:UnescapeString(ulong,int,int,byref,ushort,ushort,ushort,int,System.UriParser,ubyte) (Tier1)
          -8 (-0.12 % of base) : 44796.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Tier1)
          -8 (-3.23 % of base) : 18381.dasm - System.Globalization.CultureData:GetSeparator(System.String,System.String):System.String (Tier1)
          -8 (-4.55 % of base) : 29819.dasm - System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor+ErrorCollection+Enumerator:MoveNext():ubyte:this (Tier1)
          -8 (-1.08 % of base) : 45895.dasm - System.Text.Json.Reflection.ReflectionExtensions:TryGetDeserializationConstructor(System.Type,ubyte,byref):ubyte (Tier1)
          -4 (-0.10 % of base) : 43271.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetWellKnownType(int):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (Tier1)
          -4 (-0.81 % of base) : 43087.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MetadataOrSourceAssemblySymbol:GetDeclaredSpecialTypeMember(int):Microsoft.CodeAnalysis.CSharp.Symbol:this (Tier1)
          -4 (-0.34 % of base) : 44736.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (Tier1)

Top method regressions (percentages):
          16 (1.39 % of base) : 8134.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (Tier0-FullOpts)
           4 (0.89 % of base) : 44500.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol+<GetSecurityAttributes>d__118:MoveNext():ubyte:this (Tier1)
           4 (0.60 % of base) : 22969.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)

Top method improvements (percentages):
         -36 (-32.14 % of base) : 6263.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -36 (-21.95 % of base) : 54999.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
        -200 (-7.65 % of base) : 34100.dasm - System.Text.Json.Tests.Perf_Segment:ReadMultiSegmentSequenceUsingSpan(int):this (Tier1-OSR)
         -20 (-6.94 % of base) : 27729.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)
         -24 (-5.83 % of base) : 63013.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (Tier1-OSR)
         -16 (-5.41 % of base) : 8433.dasm - System.Number:RoundNumber(byref,int,ubyte) (Tier1)
          -8 (-4.55 % of base) : 29819.dasm - System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor+ErrorCollection+Enumerator:MoveNext():ubyte:this (Tier1)
         -12 (-4.35 % of base) : 34456.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier1)
         -12 (-3.90 % of base) : 8411.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (Tier1)
          -8 (-3.23 % of base) : 18381.dasm - System.Globalization.CultureData:GetSeparator(System.String,System.String):System.String (Tier1)
          -4 (-2.70 % of base) : 27426.dasm - System.Text.Json.Tests.Perf_Segment:ReadMultiSegmentSequence(int):this (Tier1-OSR)
          -4 (-2.70 % of base) : 16058.dasm - System.Text.Json.Tests.Perf_Segment:ReadSingleSegmentSequence():this (Tier1-OSR)
         -12 (-1.58 % of base) : 47507.dasm - Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass:LeaveParameter(Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.Location):this (Tier1)
          -8 (-1.08 % of base) : 45895.dasm - System.Text.Json.Reflection.ReflectionExtensions:TryGetDeserializationConstructor(System.Type,ubyte,byref):ubyte (Tier1)
          -4 (-0.81 % of base) : 43087.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MetadataOrSourceAssemblySymbol:GetDeclaredSpecialTypeMember(int):Microsoft.CodeAnalysis.CSharp.Symbol:this (Tier1)
         -12 (-0.78 % of base) : 31033.dasm - System.UriHelper:UnescapeString(ulong,int,int,byref,ushort,ushort,ushort,int,System.UriParser,ubyte) (Tier1)
          -4 (-0.71 % of base) : 58248.dasm - System.Text.Json.Tests.Perf_Segment:ReadSingleSegmentSequenceByN(int):this (Tier1-OSR)
         -16 (-0.69 % of base) : 43662.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetSpecialType(byte):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (Tier1)
          -4 (-0.34 % of base) : 44736.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (Tier1)
          -4 (-0.27 % of base) : 9496.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (Tier0-FullOpts)

27 total methods with Code Size differences (24 improved, 3 regressed).


coreclr_tests.run.linux.arm64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 508528604 (overridden on cmd)
Total bytes of diff: 508524068 (overridden on cmd)
Total bytes of delta: -4536 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         124 : 612132.dasm (2.62 % of base)
          44 : 616018.dasm (0.69 % of base)
          44 : 618570.dasm (0.69 % of base)
          40 : 611327.dasm (0.19 % of base)
          32 : 617539.dasm (0.42 % of base)
          20 : 340480.dasm (0.91 % of base)
          20 : 455644.dasm (0.91 % of base)
          20 : 456020.dasm (0.93 % of base)
          20 : 482480.dasm (0.93 % of base)
          20 : 482912.dasm (0.93 % of base)
          20 : 516763.dasm (0.93 % of base)
          20 : 441396.dasm (0.91 % of base)
          20 : 497075.dasm (0.91 % of base)
          20 : 504363.dasm (0.91 % of base)
          20 : 515188.dasm (0.91 % of base)
          20 : 523888.dasm (0.91 % of base)
          20 : 216028.dasm (0.93 % of base)
          20 : 613899.dasm (1.16 % of base)
          20 : 618204.dasm (0.92 % of base)
          20 : 624092.dasm (0.91 % of base)

Top file improvements (bytes):
        -276 : 19680.dasm (-25.18 % of base)
        -260 : 217002.dasm (-25.39 % of base)
         -92 : 617571.dasm (-0.83 % of base)
         -84 : 19679.dasm (-21.21 % of base)
         -64 : 19678.dasm (-8.89 % of base)
         -60 : 611873.dasm (-0.53 % of base)
         -56 : 449885.dasm (-19.72 % of base)
         -56 : 190097.dasm (-42.42 % of base)
         -56 : 455612.dasm (-34.15 % of base)
         -56 : 449884.dasm (-20.00 % of base)
         -52 : 248548.dasm (-28.26 % of base)
         -52 : 455613.dasm (-40.62 % of base)
         -52 : 455614.dasm (-40.62 % of base)
         -52 : 455617.dasm (-40.62 % of base)
         -52 : 455618.dasm (-40.62 % of base)
         -52 : 455615.dasm (-40.62 % of base)
         -52 : 455616.dasm (-40.62 % of base)
         -52 : 455619.dasm (-40.62 % of base)
         -52 : 455620.dasm (-40.62 % of base)
         -52 : 462817.dasm (-40.62 % of base)

69 total files with Code Size differences (30 improved, 39 regressed), 20 unchanged.

Top method regressions (bytes):
         124 (2.62 % of base) : 612132.dasm - Internal.TypeSystem.CastingHelper:CanCastGenericParameterTo(Internal.TypeSystem.GenericParameterDesc,Internal.TypeSystem.TypeDesc,Internal.TypeSystem.StackOverflowProtect):ubyte (Tier1)
          44 (0.69 % of base) : 616018.dasm - ILCompiler.DependencyAnalysis.ReadyToRunObjectWriter:EmitObjectData(ILCompiler.PEWriter.R2RPEBuilder,ILCompiler.DependencyAnalysis.ObjectNode+ObjectData,int,System.String,ILCompiler.DependencyAnalysis.ObjectNodeSection):this (Tier1)
          44 (0.69 % of base) : 618570.dasm - ILCompiler.DependencyAnalysis.ReadyToRunObjectWriter:EmitObjectData(ILCompiler.PEWriter.R2RPEBuilder,ILCompiler.DependencyAnalysis.ObjectNode+ObjectData,int,System.String,ILCompiler.DependencyAnalysis.ObjectNodeSection):this (Tier1)
          40 (0.19 % of base) : 611327.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.TypeValidationChecker+<ValidateTypeWorker>d__10:MoveNext():this (Tier1)
          32 (0.42 % of base) : 617539.dasm - ILCompiler.ReadyToRunVisibilityRootProvider:RootMethods(Internal.TypeSystem.MetadataType,System.String,ILCompiler.IRootingServiceProvider,ubyte):this (Tier1)
          20 (1.16 % of base) : 613899.dasm - ILCompiler.Compilation:CanInline(Internal.TypeSystem.MethodDesc,Internal.TypeSystem.MethodDesc):ubyte:this (Tier1)
          20 (0.91 % of base) : 340480.dasm - System.SR:InternalGetResourceString(System.String):System.String (Tier1)
          20 (0.91 % of base) : 455644.dasm - System.SR:InternalGetResourceString(System.String):System.String (Tier1)
          20 (0.93 % of base) : 456020.dasm - System.SR:InternalGetResourceString(System.String):System.String (Tier1)
          20 (0.93 % of base) : 482480.dasm - System.SR:InternalGetResourceString(System.String):System.String (Tier1)
          20 (0.93 % of base) : 482912.dasm - System.SR:InternalGetResourceString(System.String):System.String (Tier1)
          20 (0.93 % of base) : 516763.dasm - System.SR:InternalGetResourceString(System.String):System.String (Tier1)
          20 (0.91 % of base) : 441396.dasm - System.SR:InternalGetResourceString(System.String):System.String (Tier1)
          20 (0.91 % of base) : 497075.dasm - System.SR:InternalGetResourceString(System.String):System.String (Tier1)
          20 (0.91 % of base) : 504363.dasm - System.SR:InternalGetResourceString(System.String):System.String (Tier1)
          20 (0.91 % of base) : 515188.dasm - System.SR:InternalGetResourceString(System.String):System.String (Tier1)
          20 (0.91 % of base) : 523888.dasm - System.SR:InternalGetResourceString(System.String):System.String (Tier1)
          20 (0.93 % of base) : 216028.dasm - System.SR:InternalGetResourceString(System.String):System.String (Tier1)
          20 (0.92 % of base) : 618204.dasm - System.SR:InternalGetResourceString(System.String):System.String (Tier1)
          20 (0.91 % of base) : 624092.dasm - System.SR:InternalGetResourceString(System.String):System.String (Tier1)

Top method improvements (bytes):
        -276 (-25.18 % of base) : 19680.dasm - Microsoft.FSharp.Core.PrintfImpl+GenericNumber:isPositive(System.Object):ubyte (FullOpts)
        -260 (-25.39 % of base) : 217002.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal:IsDefault(System.Object):ubyte (FullOpts)
         -92 (-0.83 % of base) : 617571.dasm - Internal.TypeSystem.MetadataFieldLayoutAlgorithm:ComputeAutoFieldLayout(Internal.TypeSystem.MetadataType,int):Internal.TypeSystem.ComputedInstanceFieldLayout:this (Tier1)
         -84 (-21.21 % of base) : 19679.dasm - Microsoft.FSharp.Core.PrintfImpl+FloatAndDecimal:isNumber(System.Object):ubyte (FullOpts)
         -64 (-8.89 % of base) : 19678.dasm - Microsoft.FSharp.Core.PrintfImpl+FloatAndDecimal:toFormattedString(System.String,System.Object):System.String (FullOpts)
         -60 (-0.53 % of base) : 611873.dasm - Internal.TypeSystem.MetadataFieldLayoutAlgorithm:ComputeAutoFieldLayout(Internal.TypeSystem.MetadataType,int):Internal.TypeSystem.ComputedInstanceFieldLayout:this (Tier1)
         -56 (-20.00 % of base) : 449884.dasm - System.Double:Equals(System.Object):ubyte:this (Instrumented Tier1)
         -56 (-42.42 % of base) : 190097.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -56 (-19.72 % of base) : 449885.dasm - System.Single:Equals(System.Object):ubyte:this (Instrumented Tier1)
         -56 (-34.15 % of base) : 455612.dasm - System.Single:Equals(System.Object):ubyte:this (Tier1)
         -52 (-28.26 % of base) : 248548.dasm - Runtime_40440+LargeStruct:Equals(System.Object):ubyte:this (FullOpts)
         -52 (-40.62 % of base) : 455616.dasm - System.Byte:Equals(System.Object):ubyte:this (Tier1)
         -52 (-40.62 % of base) : 455617.dasm - System.Int16:Equals(System.Object):ubyte:this (Tier1)
         -52 (-40.62 % of base) : 455613.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -52 (-40.62 % of base) : 462817.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -52 (-40.62 % of base) : 520138.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -52 (-40.62 % of base) : 455614.dasm - System.Int64:Equals(System.Object):ubyte:this (Tier1)
         -52 (-40.62 % of base) : 455618.dasm - System.SByte:Equals(System.Object):ubyte:this (Tier1)
         -52 (-40.62 % of base) : 455615.dasm - System.UInt16:Equals(System.Object):ubyte:this (Tier1)
         -52 (-40.62 % of base) : 455619.dasm - System.UInt32:Equals(System.Object):ubyte:this (Tier1)

Top method regressions (percentages):
           4 (3.85 % of base) : 248642.dasm - Runtime_49101:Test(int,int,int,int,int,int,int,int,int,float,float,float,float,float,float,float,float,float,System.Numerics.Vector3):int (FullOpts)
           8 (3.85 % of base) : 504494.dasm - System.Reflection.RuntimeParameterInfo:GetParameters(System.IRuntimeMethodInfo,System.Reflection.MemberInfo,System.Signature):System.Reflection.ParameterInfo[] (Tier1)
           4 (3.12 % of base) : 450418.dasm - System.String:Equals(System.Object):ubyte:this (Tier1)
         124 (2.62 % of base) : 612132.dasm - Internal.TypeSystem.CastingHelper:CanCastGenericParameterTo(Internal.TypeSystem.GenericParameterDesc,Internal.TypeSystem.TypeDesc,Internal.TypeSystem.StackOverflowProtect):ubyte (Tier1)
           4 (2.17 % of base) : 505922.dasm - System.Text.RegularExpressions.RegexNode:Child(int):System.Text.RegularExpressions.RegexNode:this (Tier1)
           4 (2.17 % of base) : 508057.dasm - System.Text.RegularExpressions.RegexNode:Child(int):System.Text.RegularExpressions.RegexNode:this (Tier1)
           4 (2.17 % of base) : 511717.dasm - System.Text.RegularExpressions.RegexNode:Child(int):System.Text.RegularExpressions.RegexNode:this (Tier1)
           4 (2.17 % of base) : 516475.dasm - System.Text.RegularExpressions.RegexNode:Child(int):System.Text.RegularExpressions.RegexNode:this (Tier1)
           4 (2.17 % of base) : 450653.dasm - System.Text.RegularExpressions.RegexNode:Child(int):System.Text.RegularExpressions.RegexNode:this (Tier1)
           4 (2.17 % of base) : 465675.dasm - System.Text.RegularExpressions.RegexNode:Child(int):System.Text.RegularExpressions.RegexNode:this (Tier1)
           4 (2.17 % of base) : 482407.dasm - System.Text.RegularExpressions.RegexNode:Child(int):System.Text.RegularExpressions.RegexNode:this (Tier1)
           4 (2.17 % of base) : 495963.dasm - System.Text.RegularExpressions.RegexNode:Child(int):System.Text.RegularExpressions.RegexNode:this (Tier1)
           4 (2.17 % of base) : 498777.dasm - System.Text.RegularExpressions.RegexNode:Child(int):System.Text.RegularExpressions.RegexNode:this (Tier1)
           4 (2.17 % of base) : 519984.dasm - System.Text.RegularExpressions.RegexNode:Child(int):System.Text.RegularExpressions.RegexNode:this (Tier1)
           4 (2.17 % of base) : 525626.dasm - System.Text.RegularExpressions.RegexNode:Child(int):System.Text.RegularExpressions.RegexNode:this (Tier1)
           4 (2.17 % of base) : 600545.dasm - System.Text.RegularExpressions.RegexNode:Child(int):System.Text.RegularExpressions.RegexNode:this (Tier1)
           4 (2.17 % of base) : 602711.dasm - System.Text.RegularExpressions.RegexNode:Child(int):System.Text.RegularExpressions.RegexNode:this (Tier1)
           4 (2.17 % of base) : 406720.dasm - System.Text.RegularExpressions.RegexNode:Child(int):System.Text.RegularExpressions.RegexNode:this (Tier1)
           4 (2.00 % of base) : 608928.dasm - System.Text.RegularExpressions.RegexNode:Child(int):System.Text.RegularExpressions.RegexNode:this (Tier1)
           4 (2.00 % of base) : 623644.dasm - System.Text.RegularExpressions.RegexNode:Child(int):System.Text.RegularExpressions.RegexNode:this (Tier1)

Top method improvements (percentages):
         -56 (-42.42 % of base) : 190097.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -52 (-40.62 % of base) : 455616.dasm - System.Byte:Equals(System.Object):ubyte:this (Tier1)
         -52 (-40.62 % of base) : 455617.dasm - System.Int16:Equals(System.Object):ubyte:this (Tier1)
         -52 (-40.62 % of base) : 455613.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -52 (-40.62 % of base) : 462817.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -52 (-40.62 % of base) : 520138.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -52 (-40.62 % of base) : 455614.dasm - System.Int64:Equals(System.Object):ubyte:this (Tier1)
         -52 (-40.62 % of base) : 455618.dasm - System.SByte:Equals(System.Object):ubyte:this (Tier1)
         -52 (-40.62 % of base) : 455615.dasm - System.UInt16:Equals(System.Object):ubyte:this (Tier1)
         -52 (-40.62 % of base) : 455619.dasm - System.UInt32:Equals(System.Object):ubyte:this (Tier1)
         -52 (-40.62 % of base) : 455620.dasm - System.UInt64:Equals(System.Object):ubyte:this (Tier1)
         -40 (-34.48 % of base) : 322022.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -56 (-34.15 % of base) : 455612.dasm - System.Single:Equals(System.Object):ubyte:this (Tier1)
         -36 (-32.14 % of base) : 450312.dasm - System.Int16:Equals(System.Object):ubyte:this (Tier1)
         -36 (-32.14 % of base) : 450327.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -36 (-32.14 % of base) : 454510.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -36 (-32.14 % of base) : 516223.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -36 (-32.14 % of base) : 450318.dasm - System.Int64:Equals(System.Object):ubyte:this (Tier1)
         -36 (-32.14 % of base) : 450314.dasm - System.UInt16:Equals(System.Object):ubyte:this (Tier1)
         -36 (-32.14 % of base) : 450316.dasm - System.UInt32:Equals(System.Object):ubyte:this (Tier1)


libraries.crossgen2.linux.arm64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 55844108 (overridden on cmd)
Total bytes of diff: 55842752 (overridden on cmd)
Total bytes of delta: -1356 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          36 : 80206.dasm (0.69 % of base)
          32 : 171163.dasm (1.75 % of base)
          32 : 42001.dasm (8.25 % of base)
          24 : 88735.dasm (2.63 % of base)
          24 : 83642.dasm (1.75 % of base)
          20 : 72817.dasm (0.33 % of base)
          16 : 37729.dasm (1.42 % of base)
          12 : 192020.dasm (0.48 % of base)
          12 : 10217.dasm (0.48 % of base)
           8 : 37896.dasm (4.35 % of base)
           8 : 41986.dasm (2.15 % of base)
           8 : 72173.dasm (0.17 % of base)
           4 : 178612.dasm (0.65 % of base)
           4 : 230039.dasm (0.48 % of base)
           4 : 36798.dasm (0.53 % of base)
           4 : 82027.dasm (0.34 % of base)
           4 : 114055.dasm (0.26 % of base)
           4 : 137524.dasm (3.23 % of base)
           4 : 230034.dasm (0.55 % of base)
           4 : 35442.dasm (0.82 % of base)

Top file improvements (bytes):
         -68 : 141103.dasm (-1.66 % of base)
         -64 : 141145.dasm (-1.61 % of base)
         -56 : 178156.dasm (-3.49 % of base)
         -48 : 171045.dasm (-5.43 % of base)
         -48 : 140363.dasm (-2.71 % of base)
         -48 : 211132.dasm (-5.83 % of base)
         -48 : 176291.dasm (-26.09 % of base)
         -44 : 217296.dasm (-6.75 % of base)
         -44 : 227326.dasm (-6.75 % of base)
         -36 : 217144.dasm (-4.52 % of base)
         -36 : 220937.dasm (-2.24 % of base)
         -36 : 212588.dasm (-20.45 % of base)
         -28 : 140889.dasm (-9.86 % of base)
         -24 : 83632.dasm (-5.56 % of base)
         -24 : 9436.dasm (-3.59 % of base)
         -24 : 191242.dasm (-3.59 % of base)
         -24 : 105855.dasm (-0.52 % of base)
         -24 : 212914.dasm (-0.54 % of base)
         -20 : 12485.dasm (-0.54 % of base)
         -20 : 139640.dasm (-4.03 % of base)

59 total files with Code Size differences (34 improved, 25 regressed), 20 unchanged.

Top method regressions (bytes):
          36 (0.69 % of base) : 80206.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:BetterFunctionMember[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],ubyte,byref):int:this (FullOpts)
          32 (8.25 % of base) : 42001.dasm - Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
          32 (1.75 % of base) : 171163.dasm - System.Xml.XmlConvert:EncodeName(System.String,ubyte,ubyte):System.String (FullOpts)
          24 (1.75 % of base) : 83642.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.MetadataDecoder:SubstituteNoPiaLocalType(byref,ubyte,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,System.String,System.String,System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol):Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol (FullOpts)
          24 (2.63 % of base) : 88735.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation:CheckBinaryBuiltInOperator(System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+OperatorInfo) (FullOpts)
          20 (0.33 % of base) : 72817.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodSymbol:CheckModifiers(ubyte,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
          16 (1.42 % of base) : 37729.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
          12 (0.48 % of base) : 192020.dasm - Microsoft.CodeAnalysis.Diagnostics.SuppressMessageAttributeState+TargetSymbolResolver:Resolve(byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ISymbol]:this (FullOpts)
          12 (0.48 % of base) : 10217.dasm - Microsoft.CodeAnalysis.Diagnostics.SuppressMessageAttributeState+TargetSymbolResolver:Resolve(byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ISymbol]:this (FullOpts)
           8 (0.17 % of base) : 72173.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceEventSymbol:CheckModifiersAndType(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
           8 (2.15 % of base) : 41986.dasm - Microsoft.FSharp.Core.FSharpRef`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
           8 (4.35 % of base) : 37896.dasm - System.Threading.PortableThreadPool:RemoveWaitThread(System.Threading.PortableThreadPool+WaitThread):this (FullOpts)
           4 (0.34 % of base) : 82027.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindAssignmentStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.AssignmentStatementSyntax,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.BoundExpressionStatement:this (FullOpts)
           4 (0.56 % of base) : 81291.dasm - Microsoft.CodeAnalysis.VisualBasic.DataFlowPass:SetSlotUnassigned(int,byref):this (FullOpts)
           4 (0.26 % of base) : 114055.dasm - Microsoft.Diagnostics.Tracing.Parsers.KernelTraceEventParser:.ctor(Microsoft.Diagnostics.Tracing.TraceEventSource,int):this (FullOpts)
           4 (1.11 % of base) : 227720.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)
           4 (0.65 % of base) : 178612.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:LeastGenericProcedure(Microsoft.VisualBasic.CompilerServices.Symbols+Method,Microsoft.VisualBasic.CompilerServices.Symbols+Method,int,byref):Microsoft.VisualBasic.CompilerServices.Symbols+Method (FullOpts)
           4 (0.53 % of base) : 36798.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
           4 (3.23 % of base) : 137524.dasm - System.Data.SqlTypes.SqlDecimal:Equals(System.Data.SqlTypes.SqlDecimal):ubyte:this (FullOpts)
           4 (0.07 % of base) : 14992.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.Net.WebSockets.ValueWebSocketReceiveResult]:MoveNext():this (FullOpts)

Top method improvements (bytes):
         -68 (-1.66 % of base) : 141103.dasm - System.Data.RBTree`1[System.__Canon]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
         -64 (-1.61 % of base) : 141145.dasm - System.Data.RBTree`1[int]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
         -56 (-3.49 % of base) : 178156.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindingScore(System.Reflection.ParameterInfo[],int[],System.Type[],ubyte,int):int:this (FullOpts)
         -48 (-2.71 % of base) : 140363.dasm - System.Data.Select:AnalyzeExpression(System.Data.BinaryNode):this (FullOpts)
         -48 (-5.83 % of base) : 211132.dasm - System.Diagnostics.LegacyPropagator:TryExtractBaggage(System.String,byref):ubyte (FullOpts)
         -48 (-26.09 % of base) : 176291.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
         -48 (-5.43 % of base) : 171045.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (FullOpts)
         -44 (-6.75 % of base) : 217296.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
         -44 (-6.75 % of base) : 227326.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
         -36 (-2.24 % of base) : 220937.dasm - System.IO.Ports.SerialPort:GetPortNames_Linux():System.String[] (FullOpts)
         -36 (-4.52 % of base) : 217144.dasm - System.Net.HttpListenerRequest+Helpers:GetCharSetValueFromHeader(System.String):System.String (FullOpts)
         -36 (-20.45 % of base) : 212588.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
         -28 (-9.86 % of base) : 140889.dasm - System.Data.ExpressionParser:ScanDate():this (FullOpts)
         -24 (-3.59 % of base) : 9436.dasm - Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString:FromSource(System.String):Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString (FullOpts)
         -24 (-3.59 % of base) : 191242.dasm - Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString:FromSource(System.String):Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString (FullOpts)
         -24 (-5.56 % of base) : 83632.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol:this (FullOpts)
         -24 (-0.52 % of base) : 105855.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceNamedTypeSymbol+ComClassData:PerformComClassAnalysis(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceNamedTypeSymbol):this (FullOpts)
         -24 (-0.54 % of base) : 212914.dasm - System.Globalization.FormatProvider+Number:NumberToStringFormat(byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
         -20 (-6.49 % of base) : 184231.dasm - Microsoft.CodeAnalysis.CommandLineParser:<RemoveQuotesAndSlashesEx>g__processSlashes|43_0(System.Text.StringBuilder,System.ReadOnlySpan`1[ushort],byref) (FullOpts)
         -20 (-6.49 % of base) : 1417.dasm - Microsoft.CodeAnalysis.CommandLineParser:<RemoveQuotesAndSlashesEx>g__processSlashes|43_0(System.Text.StringBuilder,System.ReadOnlySpan`1[ushort],byref) (FullOpts)

Top method regressions (percentages):
          32 (8.25 % of base) : 42001.dasm - Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
           8 (4.35 % of base) : 37896.dasm - System.Threading.PortableThreadPool:RemoveWaitThread(System.Threading.PortableThreadPool+WaitThread):this (FullOpts)
           4 (3.23 % of base) : 137524.dasm - System.Data.SqlTypes.SqlDecimal:Equals(System.Data.SqlTypes.SqlDecimal):ubyte:this (FullOpts)
          24 (2.63 % of base) : 88735.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation:CheckBinaryBuiltInOperator(System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+OperatorInfo) (FullOpts)
           8 (2.15 % of base) : 41986.dasm - Microsoft.FSharp.Core.FSharpRef`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
          24 (1.75 % of base) : 83642.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.MetadataDecoder:SubstituteNoPiaLocalType(byref,ubyte,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,System.String,System.String,System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol):Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol (FullOpts)
          32 (1.75 % of base) : 171163.dasm - System.Xml.XmlConvert:EncodeName(System.String,ubyte,ubyte):System.String (FullOpts)
          16 (1.42 % of base) : 37729.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
           4 (1.11 % of base) : 227720.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)
           4 (0.82 % of base) : 35442.dasm - System.Threading.ReaderWriterLockSlim+SpinLock:IsEnterDeprioritized(int):ubyte:this (FullOpts)
          36 (0.69 % of base) : 80206.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:BetterFunctionMember[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],ubyte,byref):int:this (FullOpts)
           4 (0.65 % of base) : 178612.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:LeastGenericProcedure(Microsoft.VisualBasic.CompilerServices.Symbols+Method,Microsoft.VisualBasic.CompilerServices.Symbols+Method,int,byref):Microsoft.VisualBasic.CompilerServices.Symbols+Method (FullOpts)
           4 (0.56 % of base) : 81291.dasm - Microsoft.CodeAnalysis.VisualBasic.DataFlowPass:SetSlotUnassigned(int,byref):this (FullOpts)
           4 (0.56 % of base) : 206178.dasm - Xunit.Assert:Equal(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte,ubyte,ubyte) (FullOpts)
           4 (0.55 % of base) : 230034.dasm - System.Xml.Linq.Extensions+<GetDescendantNodes>d__22`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
           4 (0.53 % of base) : 36798.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
          12 (0.48 % of base) : 192020.dasm - Microsoft.CodeAnalysis.Diagnostics.SuppressMessageAttributeState+TargetSymbolResolver:Resolve(byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ISymbol]:this (FullOpts)
          12 (0.48 % of base) : 10217.dasm - Microsoft.CodeAnalysis.Diagnostics.SuppressMessageAttributeState+TargetSymbolResolver:Resolve(byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ISymbol]:this (FullOpts)
           4 (0.48 % of base) : 230039.dasm - System.Xml.Linq.Extensions+<GetDescendants>d__23`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
           4 (0.34 % of base) : 82027.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindAssignmentStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.AssignmentStatementSyntax,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.BoundExpressionStatement:this (FullOpts)

Top method improvements (percentages):
         -48 (-26.09 % of base) : 176291.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
         -36 (-20.45 % of base) : 212588.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
         -28 (-9.86 % of base) : 140889.dasm - System.Data.ExpressionParser:ScanDate():this (FullOpts)
         -20 (-7.81 % of base) : 36600.dasm - System.DateTimeFormat:IsUseGenitiveForm(System.ReadOnlySpan`1[ushort],int,int,ushort):ubyte (FullOpts)
         -16 (-7.55 % of base) : 212954.dasm - System.Globalization.FormatProvider+Number:RoundNumber(byref,int) (FullOpts)
         -44 (-6.75 % of base) : 217296.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
         -44 (-6.75 % of base) : 227326.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
         -20 (-6.49 % of base) : 184231.dasm - Microsoft.CodeAnalysis.CommandLineParser:<RemoveQuotesAndSlashesEx>g__processSlashes|43_0(System.Text.StringBuilder,System.ReadOnlySpan`1[ushort],byref) (FullOpts)
         -20 (-6.49 % of base) : 1417.dasm - Microsoft.CodeAnalysis.CommandLineParser:<RemoveQuotesAndSlashesEx>g__processSlashes|43_0(System.Text.StringBuilder,System.ReadOnlySpan`1[ushort],byref) (FullOpts)
         -16 (-6.15 % of base) : 36632.dasm - System.Number:RoundNumber(byref,int,ubyte) (FullOpts)
         -48 (-5.83 % of base) : 211132.dasm - System.Diagnostics.LegacyPropagator:TryExtractBaggage(System.String,byref):ubyte (FullOpts)
         -12 (-5.77 % of base) : 222650.dasm - System.Transactions.CheapUnfairReaderWriterLock:EnterWriteLock():this (FullOpts)
         -24 (-5.56 % of base) : 83632.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol:this (FullOpts)
         -48 (-5.43 % of base) : 171045.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (FullOpts)
          -8 (-4.55 % of base) : 158410.dasm - System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor+ErrorCollection+Enumerator:MoveNext():ubyte:this (FullOpts)
         -36 (-4.52 % of base) : 217144.dasm - System.Net.HttpListenerRequest+Helpers:GetCharSetValueFromHeader(System.String):System.String (FullOpts)
         -20 (-4.24 % of base) : 140808.dasm - System.Data.XmlDataLoader:GetValueForTextOnlyColumns(System.Xml.XmlNode):System.String (FullOpts)
         -12 (-4.23 % of base) : 201870.dasm - System.Configuration.Internal.WriteFileContext:ReplaceFile(System.String,System.String) (FullOpts)
         -20 (-4.03 % of base) : 139640.dasm - System.Data.DataTable:GetInheritedNamespace(System.Collections.Generic.List`1[System.Data.DataTable]):System.String:this (FullOpts)
         -12 (-3.95 % of base) : 35031.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)


libraries.pmi.linux.arm64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 76277412 (overridden on cmd)
Total bytes of diff: 76274328 (overridden on cmd)
Total bytes of delta: -3084 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          96 : 272707.dasm (1.52 % of base)
          40 : 113452.dasm (2.25 % of base)
          32 : 209893.dasm (3.29 % of base)
          28 : 66585.dasm (2.02 % of base)
          24 : 53696.dasm (4.14 % of base)
          24 : 199732.dasm (1.21 % of base)
          24 : 21129.dasm (1.75 % of base)
          24 : 220093.dasm (1.75 % of base)
          20 : 77252.dasm (0.27 % of base)
          20 : 229524.dasm (0.45 % of base)
          20 : 233960.dasm (1.16 % of base)
          20 : 287997.dasm (1.16 % of base)
          16 : 208564.dasm (1.83 % of base)
          12 : 118952.dasm (3.19 % of base)
          12 : 148395.dasm (1.18 % of base)
          12 : 66654.dasm (1.83 % of base)
          12 : 147677.dasm (0.69 % of base)
          12 : 160211.dasm (3.61 % of base)
          12 : 210273.dasm (3.90 % of base)
           8 : 144388.dasm (2.70 % of base)

Top file improvements (bytes):
        -296 : 140863.dasm (-26.15 % of base)
        -276 : 38488.dasm (-25.18 % of base)
         -84 : 38437.dasm (-21.21 % of base)
         -68 : 182852.dasm (-1.66 % of base)
         -64 : 182913.dasm (-1.61 % of base)
         -64 : 38436.dasm (-8.89 % of base)
         -64 : 38438.dasm (-10.53 % of base)
         -56 : 141589.dasm (-19.44 % of base)
         -52 : 108316.dasm (-34.21 % of base)
         -52 : 141593.dasm (-27.66 % of base)
         -52 : 88118.dasm (-35.14 % of base)
         -48 : 156269.dasm (-7.64 % of base)
         -48 : 177575.dasm (-27.91 % of base)
         -48 : 255388.dasm (-3.69 % of base)
         -44 : 111538.dasm (-1.76 % of base)
         -44 : 175339.dasm (-0.90 % of base)
         -44 : 259384.dasm (-6.51 % of base)
         -44 : 286581.dasm (-6.51 % of base)
         -40 : 87886.dasm (-4.29 % of base)
         -40 : 108309.dasm (-13.70 % of base)

65 total files with Code Size differences (36 improved, 29 regressed), 20 unchanged.

Top method regressions (bytes):
          96 (1.52 % of base) : 272707.dasm - Microsoft.DotNet.XUnitExtensions.XunitParallelTheoryTestCaseRunner+<AfterTestCaseStartingAsync>d__9:MoveNext():this (FullOpts)
          40 (2.25 % of base) : 113452.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.MetadataDecoder:SubstituteNoPiaLocalType(byref,ubyte,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,System.String,System.String,System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol):Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol (FullOpts)
          32 (3.29 % of base) : 209893.dasm - System.Net.Http.Headers.HeaderUtilities:AreEqualCollections[System.__Canon](System.Net.Http.Headers.ObjectCollection`1[System.__Canon],System.Net.Http.Headers.ObjectCollection`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte (FullOpts)
          28 (2.02 % of base) : 66585.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseInterpolation(Microsoft.CodeAnalysis.CSharp.CSharpParseOptions,System.String,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer+Interpolation,int):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationSyntax (FullOpts)
          24 (4.14 % of base) : 53696.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:SetUpdatedSymbol(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)
          24 (1.75 % of base) : 21129.dasm - Microsoft.CodeAnalysis.Diagnostics.AsyncQueue`1[ubyte]:CompleteCore():ubyte:this (FullOpts)
          24 (1.75 % of base) : 220093.dasm - Microsoft.CodeAnalysis.Diagnostics.AsyncQueue`1[ubyte]:CompleteCore():ubyte:this (FullOpts)
          24 (1.21 % of base) : 199732.dasm - System.Data.ProviderBase.DbConnectionFactory:TryGetConnection(System.Data.Common.DbConnection,System.Threading.Tasks.TaskCompletionSource`1[System.Data.ProviderBase.DbConnectionInternal],System.Data.Common.DbConnectionOptions,System.Data.ProviderBase.DbConnectionInternal,byref):ubyte:this (FullOpts)
          20 (0.27 % of base) : 77252.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodSymbol:CheckModifiers(ubyte,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
          20 (0.45 % of base) : 229524.dasm - System.Drawing.ColorConverter:ConvertTo(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type):System.Object:this (FullOpts)
          20 (1.16 % of base) : 233960.dasm - System.Reflection.TypeLoading.Assignability:CanCastTo(System.Type,System.Type,System.Reflection.TypeLoading.CoreTypes):ubyte (FullOpts)
          20 (1.16 % of base) : 287997.dasm - System.Reflection.TypeLoading.Assignability:CanCastTo(System.Type,System.Type,System.Reflection.TypeLoading.CoreTypes):ubyte (FullOpts)
          16 (1.83 % of base) : 208564.dasm - System.Net.Http.AuthenticationHelper+DigestResponse:GetNextValue(System.String,int,ubyte,byref):System.String (FullOpts)
          12 (1.83 % of base) : 66654.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolatedStringToken>g__getOpenQuote|428_1(byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
          12 (3.19 % of base) : 118952.dasm - Microsoft.CodeAnalysis.VisualBasic.VBSemanticModel:GetSymbolInfo(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionRangeVariableSyntax,System.Threading.CancellationToken):Microsoft.CodeAnalysis.SymbolInfo:this (FullOpts)
          12 (3.90 % of base) : 210273.dasm - System.Net.Http.Headers.ObjectCollection`1[System.__Canon]:Contains(System.__Canon):ubyte:this (FullOpts)
          12 (1.18 % of base) : 148395.dasm - System.Runtime.Serialization.SchemaHelper:AddSchemaImport(System.String,System.Xml.Schema.XmlSchema) (FullOpts)
          12 (0.69 % of base) : 147677.dasm - System.Xml.EncodingStreamWrapper:CheckUTF8DeclarationEncoding(ubyte[],int,int,int,int) (FullOpts)
          12 (3.61 % of base) : 160211.dasm - System.Xml.XmlDocument:get_SchemaInfo():System.Xml.Schema.IXmlSchemaInfo:this (FullOpts)
           8 (7.69 % of base) : 172035.dasm - Microsoft.Build.Internal.ProjectXmlUtilities:GetAttributeValue(Microsoft.Build.Construction.XmlElementWithLocation,System.String):System.String (FullOpts)

Top method improvements (bytes):
        -296 (-26.15 % of base) : 140863.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal:IsDefault(System.Object):ubyte (FullOpts)
        -276 (-25.18 % of base) : 38488.dasm - Microsoft.FSharp.Core.PrintfImpl+GenericNumber:isPositive(System.Object):ubyte (FullOpts)
         -84 (-21.21 % of base) : 38437.dasm - Microsoft.FSharp.Core.PrintfImpl+FloatAndDecimal:isNumber(System.Object):ubyte (FullOpts)
         -68 (-1.66 % of base) : 182852.dasm - System.Data.RBTree`1[System.__Canon]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
         -64 (-10.53 % of base) : 38438.dasm - Microsoft.FSharp.Core.PrintfImpl+FloatAndDecimal:isInteger(System.Object):ubyte (FullOpts)
         -64 (-8.89 % of base) : 38436.dasm - Microsoft.FSharp.Core.PrintfImpl+FloatAndDecimal:toFormattedString(System.String,System.Object):System.String (FullOpts)
         -64 (-1.61 % of base) : 182913.dasm - System.Data.RBTree`1[ubyte]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
         -56 (-19.44 % of base) : 141589.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.TypeTable+KeyPair`2[System.__Canon,System.Nullable`1[int]]:Equals(System.Object):ubyte:this (FullOpts)
         -52 (-35.14 % of base) : 88118.dasm - ILCompiler.IBC.IBCProfileParser+IBCBlobKey:Equals(System.Object):ubyte:this (FullOpts)
         -52 (-27.66 % of base) : 141593.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.TypeTable+KeyPair`2[ubyte,System.Nullable`1[int]]:Equals(System.Object):ubyte:this (FullOpts)
         -52 (-34.21 % of base) : 108316.dasm - Microsoft.Diagnostics.Tracing.CLRRuntimeActivityComputer+IdOfIncompleteAction:Equals(System.Object):ubyte:this (FullOpts)
         -48 (-3.69 % of base) : 255388.dasm - System.Diagnostics.LegacyPropagator:TryExtractBaggage(System.String,byref):ubyte (FullOpts)
         -48 (-27.91 % of base) : 177575.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
         -48 (-7.64 % of base) : 156269.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (FullOpts)
         -44 (-0.90 % of base) : 175339.dasm - Microsoft.Build.Shared.FileMatcher:GetFilesImplementation(System.String,System.String,System.Collections.Generic.List`1[System.String]):System.ValueTuple`3[System.String[],int,System.String]:this (FullOpts)
         -44 (-1.76 % of base) : 111538.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BuildAndVerifyUsingInfo(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,System.Collections.Generic.Dictionary`2[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,System.ValueTuple`3[Microsoft.CodeAnalysis.VisualBasic.BoundRValuePlaceholder,Microsoft.CodeAnalysis.VisualBasic.BoundExpression,Microsoft.CodeAnalysis.VisualBasic.BoundExpression]],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):this (FullOpts)
         -44 (-6.51 % of base) : 259384.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
         -44 (-6.51 % of base) : 286581.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
         -40 (-4.29 % of base) : 87886.dasm - ILCompiler.LazyGenericsSupport+Graph`1[ubyte]:FindCyclesWorker(ILCompiler.LazyGenericsSupport+Graph`1+Edge[ubyte],System.Collections.Generic.List`1[ILCompiler.LazyGenericsSupport+Graph`1+Edge[ubyte]],byref,System.Diagnostics.Stopwatch) (FullOpts)
         -40 (-13.70 % of base) : 108309.dasm - Microsoft.Diagnostics.Tracing.CLRRuntimeActivityComputer+EventUID:Equals(System.Object):ubyte:this (FullOpts)

Top method regressions (percentages):
           8 (7.69 % of base) : 172035.dasm - Microsoft.Build.Internal.ProjectXmlUtilities:GetAttributeValue(Microsoft.Build.Construction.XmlElementWithLocation,System.String):System.String (FullOpts)
           8 (7.14 % of base) : 159880.dasm - System.Xml.DocumentXPathNavigator:get_ValueDocument():System.String:this (FullOpts)
           8 (4.65 % of base) : 229728.dasm - System.ComponentModel.TypeConverter+SimplePropertyDescriptor:ResetValue(System.Object):this (FullOpts)
          24 (4.14 % of base) : 53696.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:SetUpdatedSymbol(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)
          12 (3.90 % of base) : 210273.dasm - System.Net.Http.Headers.ObjectCollection`1[System.__Canon]:Contains(System.__Canon):ubyte:this (FullOpts)
          12 (3.61 % of base) : 160211.dasm - System.Xml.XmlDocument:get_SchemaInfo():System.Xml.Schema.IXmlSchemaInfo:this (FullOpts)
          32 (3.29 % of base) : 209893.dasm - System.Net.Http.Headers.HeaderUtilities:AreEqualCollections[System.__Canon](System.Net.Http.Headers.ObjectCollection`1[System.__Canon],System.Net.Http.Headers.ObjectCollection`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte (FullOpts)
          12 (3.19 % of base) : 118952.dasm - Microsoft.CodeAnalysis.VisualBasic.VBSemanticModel:GetSymbolInfo(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionRangeVariableSyntax,System.Threading.CancellationToken):Microsoft.CodeAnalysis.SymbolInfo:this (FullOpts)
           8 (2.70 % of base) : 144388.dasm - Newtonsoft.Json.Linq.JProperty:SetItem(int,Newtonsoft.Json.Linq.JToken):this (FullOpts)
           4 (2.56 % of base) : 168057.dasm - System.Xml.Serialization.SoapAttributeOverrides:get_Item(System.Type):System.Xml.Serialization.SoapAttributes:this (FullOpts)
           8 (2.35 % of base) : 180294.dasm - System.Xml.XmlBoundElement:CloneNode(ubyte):System.Xml.XmlNode:this (FullOpts)
          40 (2.25 % of base) : 113452.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.MetadataDecoder:SubstituteNoPiaLocalType(byref,ubyte,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,System.String,System.String,System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol):Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol (FullOpts)
          28 (2.02 % of base) : 66585.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseInterpolation(Microsoft.CodeAnalysis.CSharp.CSharpParseOptions,System.String,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer+Interpolation,int):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationSyntax (FullOpts)
           4 (1.96 % of base) : 131099.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.SyntaxNormalizer:VisitEventStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.EventStatementSyntax):Microsoft.CodeAnalysis.SyntaxNode:this (FullOpts)
           4 (1.96 % of base) : 131100.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.SyntaxNormalizer:VisitPropertyStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.PropertyStatementSyntax):Microsoft.CodeAnalysis.SyntaxNode:this (FullOpts)
           4 (1.96 % of base) : 183709.dasm - System.Data.SqlTypes.SqlDecimal:Equals(System.Data.SqlTypes.SqlDecimal):ubyte:this (FullOpts)
          12 (1.83 % of base) : 66654.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolatedStringToken>g__getOpenQuote|428_1(byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
          16 (1.83 % of base) : 208564.dasm - System.Net.Http.AuthenticationHelper+DigestResponse:GetNextValue(System.String,int,ubyte,byref):System.String (FullOpts)
          24 (1.75 % of base) : 21129.dasm - Microsoft.CodeAnalysis.Diagnostics.AsyncQueue`1[ubyte]:CompleteCore():ubyte:this (FullOpts)
          24 (1.75 % of base) : 220093.dasm - Microsoft.CodeAnalysis.Diagnostics.AsyncQueue`1[ubyte]:CompleteCore():ubyte:this (FullOpts)

Top method improvements (percentages):
         -52 (-35.14 % of base) : 88118.dasm - ILCompiler.IBC.IBCProfileParser+IBCBlobKey:Equals(System.Object):ubyte:this (FullOpts)
         -52 (-34.21 % of base) : 108316.dasm - Microsoft.Diagnostics.Tracing.CLRRuntimeActivityComputer+IdOfIncompleteAction:Equals(System.Object):ubyte:this (FullOpts)
         -48 (-27.91 % of base) : 177575.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
         -52 (-27.66 % of base) : 141593.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.TypeTable+KeyPair`2[ubyte,System.Nullable`1[int]]:Equals(System.Object):ubyte:this (FullOpts)
        -296 (-26.15 % of base) : 140863.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal:IsDefault(System.Object):ubyte (FullOpts)
        -276 (-25.18 % of base) : 38488.dasm - Microsoft.FSharp.Core.PrintfImpl+GenericNumber:isPositive(System.Object):ubyte (FullOpts)
         -36 (-21.95 % of base) : 265493.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
         -84 (-21.21 % of base) : 38437.dasm - Microsoft.FSharp.Core.PrintfImpl+FloatAndDecimal:isNumber(System.Object):ubyte (FullOpts)
         -56 (-19.44 % of base) : 141589.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.TypeTable+KeyPair`2[System.__Canon,System.Nullable`1[int]]:Equals(System.Object):ubyte:this (FullOpts)
         -36 (-18.75 % of base) : 199462.dasm - System.Data.Odbc.OdbcParameter:GetParameterScale(System.Object):ubyte:this (FullOpts)
         -24 (-17.14 % of base) : 167996.dasm - System.Xml.Serialization.XmlSchemaObjectComparer:Namespace(System.Xml.Schema.XmlSchemaObject):System.String (FullOpts)
         -32 (-14.55 % of base) : 38452.dasm - Microsoft.FSharp.Core.PrintfImpl+Integer:eliminateNative(System.Object):System.Object (FullOpts)
         -40 (-13.70 % of base) : 108309.dasm - Microsoft.Diagnostics.Tracing.CLRRuntimeActivityComputer+EventUID:Equals(System.Object):ubyte:this (FullOpts)
         -28 (-12.07 % of base) : 183354.dasm - System.Data.ExpressionParser:ScanDate():this (FullOpts)
         -64 (-10.53 % of base) : 38438.dasm - Microsoft.FSharp.Core.PrintfImpl+FloatAndDecimal:isInteger(System.Object):ubyte (FullOpts)
         -32 (-10.00 % of base) : 47427.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckConstantBounds(byte,Microsoft.CodeAnalysis.ConstantValue,byref):ubyte (FullOpts)
         -24 (-9.68 % of base) : 260857.dasm - R2RDump.Disassembler:TryParseAbsoluteAddress(System.String,byref,byref,byref):ubyte:this (FullOpts)
         -32 (-8.99 % of base) : 207139.dasm - System.ComponentModel.Composition.Hosting.ScopingExtensions:ContainsPartMetadata[short](System.ComponentModel.Composition.Primitives.ComposablePartDefinition,System.String,short):ubyte (FullOpts)
         -32 (-8.99 % of base) : 207138.dasm - System.ComponentModel.Composition.Hosting.ScopingExtensions:ContainsPartMetadata[ubyte](System.ComponentModel.Composition.Primitives.ComposablePartDefinition,System.String,ubyte):ubyte (FullOpts)
         -64 (-8.89 % of base) : 38436.dasm - Microsoft.FSharp.Core.PrintfImpl+FloatAndDecimal:toFormattedString(System.String,System.Object):System.String (FullOpts)


libraries_tests.run.linux.arm64.Release.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 393983252 (overridden on cmd)
Total bytes of diff: 393927544 (overridden on cmd)
Total bytes of delta: -55708 (-0.01 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         244 : 176462.dasm (6.06 % of base)
         204 : 60070.dasm (1.60 % of base)
         200 : 695530.dasm (1.16 % of base)
         196 : 86908.dasm (1.01 % of base)
         188 : 180006.dasm (3.99 % of base)
         152 : 180002.dasm (1.53 % of base)
         124 : 706501.dasm (1.23 % of base)
          96 : 177138.dasm (1.02 % of base)
          96 : 692369.dasm (1.04 % of base)
          76 : 692387.dasm (0.82 % of base)
          72 : 664587.dasm (1.92 % of base)
          72 : 247869.dasm (2.63 % of base)
          72 : 465331.dasm (2.74 % of base)
          68 : 664446.dasm (1.18 % of base)
          68 : 396612.dasm (3.55 % of base)
          68 : 454268.dasm (0.36 % of base)
          68 : 462226.dasm (4.16 % of base)
          68 : 620675.dasm (3.50 % of base)
          64 : 378218.dasm (3.35 % of base)
          60 : 285924.dasm (2.03 % of base)

Top file improvements (bytes):
        -372 : 376004.dasm (-4.40 % of base)
        -336 : 66103.dasm (-1.26 % of base)
        -172 : 85449.dasm (-2.95 % of base)
        -164 : 674504.dasm (-2.33 % of base)
        -124 : 687328.dasm (-0.63 % of base)
        -108 : 480741.dasm (-0.57 % of base)
        -108 : 305594.dasm (-2.07 % of base)
        -108 : 679760.dasm (-1.14 % of base)
        -108 : 578618.dasm (-4.80 % of base)
        -104 : 693124.dasm (-5.15 % of base)
        -104 : 463982.dasm (-14.61 % of base)
        -100 : 187606.dasm (-5.51 % of base)
        -100 : 395933.dasm (-0.72 % of base)
        -100 : 480739.dasm (-0.55 % of base)
         -96 : 317003.dasm (-5.07 % of base)
         -96 : 480740.dasm (-0.52 % of base)
         -96 : 480742.dasm (-0.51 % of base)
         -88 : 375946.dasm (-3.24 % of base)
         -80 : 93372.dasm (-4.04 % of base)
         -76 : 375945.dasm (-1.84 % of base)

87 total files with Code Size differences (48 improved, 39 regressed), 20 unchanged.

Top method regressions (bytes):
         244 (6.06 % of base) : 176462.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:EqualsComplicatedCases(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,int):ubyte:this (Tier1)
         204 (1.60 % of base) : 60070.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckValidNullableMethodOverride[System.ValueTuple`2[System.__Canon,ubyte]](Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.Symbols.ReportMismatchInReturnType`1[System.ValueTuple`2[System.__Canon,ubyte]],Microsoft.CodeAnalysis.CSharp.Symbols.ReportMismatchInParameterType`1[System.ValueTuple`2[System.__Canon,ubyte]],System.ValueTuple`2[System.__Canon,ubyte],ubyte):ubyte (Tier1)
         200 (1.16 % of base) : 695530.dasm - System.Text.RegularExpressions.Generator.RegexGenerator+<>c__DisplayClass25_0:<EmitTryMatchAtCurrentPosition>g__EmitLoop|33(System.Text.RegularExpressions.RegexNode):this (Tier1)
         196 (1.01 % of base) : 86908.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:MakeParameters[System.__Canon,System.__Canon,System.__Canon](Microsoft.CodeAnalysis.CSharp.Binder,System.__Canon,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon],byref,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,ubyte,ubyte,ubyte,int,System.Func`12[System.__Canon,System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,System.__Canon,ubyte,int,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,ubyte,ubyte,System.__Canon,System.__Canon],ubyte):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier1)
         188 (3.99 % of base) : 180006.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MemberSignatureComparer:HaveSameParameterTypes(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeMap,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeMap,int,int):ubyte (Tier1)
         152 (1.53 % of base) : 180002.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MemberSignatureComparer:Equals(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):ubyte:this (Tier1)
         124 (1.23 % of base) : 706501.dasm - Microsoft.CodeAnalysis.SolutionCompilationState:AddDocumentsToMultipleProjects[System.__Canon](System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.DocumentInfo],System.Func`3[System.__Canon,System.__Canon,System.__Canon],System.Func`3[System.__Canon,System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.ValueTuple`2[System.__Canon,System.__Canon]]):Microsoft.CodeAnalysis.SolutionCompilationState:this (Tier1)
          96 (1.04 % of base) : 692369.dasm - Microsoft.Cci.MetadataWriter:PopulateMethodTableRows(int[]):this (Tier1)
          96 (1.02 % of base) : 177138.dasm - Microsoft.CodeAnalysis.SolutionCompilationState:AddDocumentsToMultipleProjects[System.__Canon](System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.DocumentInfo],System.Func`3[System.__Canon,System.__Canon,System.__Canon],System.Func`3[System.__Canon,System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.ValueTuple`2[System.__Canon,System.__Canon]]):Microsoft.CodeAnalysis.SolutionCompilationState:this (Tier1)
          76 (0.82 % of base) : 692387.dasm - Microsoft.Cci.MetadataWriter:PopulateMethodSpecTableRows():this (Tier1)
          72 (1.92 % of base) : 664587.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExprMethodInfo:get_MethodInfo():System.Reflection.MethodInfo:this (Tier1)
          72 (2.63 % of base) : 247869.dasm - System.Configuration.MgmtConfigurationRecord:InitStreamInfoUpdates():this (Tier1)
          72 (2.74 % of base) : 465331.dasm - System.Xml.Xsl.Xslt.XslAstAnalyzer:VisitForEach(System.Xml.Xsl.Xslt.XslNode):int:this (Tier1)
          68 (1.18 % of base) : 664446.dasm - Microsoft.CSharp.RuntimeBinder.BinderHelper:Bind(Microsoft.CSharp.RuntimeBinder.ICSharpBinder,Microsoft.CSharp.RuntimeBinder.RuntimeBinder,System.Dynamic.DynamicMetaObject[],System.Collections.Generic.IEnumerable`1[Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo],System.Dynamic.DynamicMetaObject):System.Dynamic.DynamicMetaObject (Tier1)
          68 (3.55 % of base) : 396612.dasm - System.Net.Http.DiagnosticsHandler:.ctor(System.Net.Http.HttpMessageHandler,System.Diagnostics.DistributedContextPropagator,ubyte):this (Tier1)
          68 (4.16 % of base) : 462226.dasm - System.Xml.Xsl.Xslt.XslAstAnalyzer:VisitChildren(System.Xml.Xsl.Xslt.XslNode):int:this (Tier1)
          68 (0.36 % of base) : 454268.dasm - XPathTests.Common.Utils:XPathNodesetTest(int,System.String,System.String,XPathTests.Common.XPathResult,System.Xml.XmlNamespaceManager,System.String) (Tier1)
          68 (3.50 % of base) : 620675.dasm - Xunit.Sdk.AssertEqualityComparer`1[System.__Canon]:Equals(System.__Canon,Xunit.Sdk.CollectionTracker,System.__Canon,Xunit.Sdk.CollectionTracker,byref):ubyte:this (Tier1)
          64 (3.35 % of base) : 378218.dasm - System.Net.Http.DiagnosticsHandler:.ctor(System.Net.Http.HttpMessageHandler,System.Diagnostics.DistributedContextPropagator,ubyte):this (Tier1)
          60 (2.03 % of base) : 285924.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionTreeRewriter:GenerateBuiltInBinaryOperator(Microsoft.CSharp.RuntimeBinder.Semantics.ExprBinOp):Microsoft.CSharp.RuntimeBinder.Semantics.Expr:this (Tier1)

Top method improvements (bytes):
        -372 (-4.40 % of base) : 376004.dasm - System.Net.Tests.HttpListenerRequestTests+<Cookies_GetProperty_ReturnsExpected>d__36:MoveNext():this (Tier1)
        -336 (-1.26 % of base) : 66103.dasm - Microsoft.CodeAnalysis.CSharp.Binder:MakeDeconstructionConversion(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Binder+DeconstructionVariable],byref):ubyte:this (Tier1)
        -172 (-2.95 % of base) : 85449.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckAttributeTypeViability(Microsoft.CodeAnalysis.CSharp.Symbol,ubyte,byref,byref):ubyte:this (Tier1)
        -164 (-2.33 % of base) : 674504.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckAttributeTypeViability(Microsoft.CodeAnalysis.CSharp.Symbol,ubyte,byref,byref):ubyte:this (Tier1)
        -124 (-0.63 % of base) : 687328.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,System.__Canon]:VisitBinaryLogicalOperatorChildren(Microsoft.CodeAnalysis.CSharp.BoundExpression):this (Tier1)
        -108 (-1.14 % of base) : 679760.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckValidNullableMethodOverride[System.__Canon](Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.Symbols.ReportMismatchInReturnType`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.Symbols.ReportMismatchInParameterType`1[System.__Canon],System.__Canon,ubyte):ubyte (Tier1)
        -108 (-2.07 % of base) : 305594.dasm - System.Globalization.Tests.CharUnicodeInfoTests:TestCasing():this (Tier1-OSR)
        -108 (-4.80 % of base) : 578618.dasm - System.Net.Http.HttpConnectionPool:ReturnHttp11Connection(System.Net.Http.HttpConnection,ubyte,System.Net.Http.HttpConnectionPool+HttpConnectionWaiter`1[System.Net.Http.HttpConnection]):this (Tier1)
        -108 (-0.57 % of base) : 480741.dasm - System.Xml.Tests.TCAttributeAccess:TestAttributeAccess3():int:this (Tier1)
        -104 (-5.15 % of base) : 693124.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this (Tier1)
        -104 (-14.61 % of base) : 463982.dasm - System.Text.EncodingTable:InternalGetCodePageFromName(System.String):int (Tier1)
        -100 (-0.72 % of base) : 395933.dasm - System.Net.Http.HttpConnection+<SendAsync>d__57:MoveNext():this (Tier1)
        -100 (-0.55 % of base) : 480739.dasm - System.Xml.Tests.TCAttributeAccess:TestAttributeAccess1():int:this (Tier1)
        -100 (-5.51 % of base) : 187606.dasm - Xunit.Sdk.AssertEqualityComparer`1[System.__Canon]:Equals(System.__Canon,Xunit.Sdk.CollectionTracker,System.__Canon,Xunit.Sdk.CollectionTracker,byref):ubyte:this (Tier1)
         -96 (-0.52 % of base) : 480740.dasm - System.Xml.Tests.TCAttributeAccess:TestAttributeAccess2():int:this (Tier1)
         -96 (-0.51 % of base) : 480742.dasm - System.Xml.Tests.TCAttributeAccess:TestAttributeAccess4():int:this (Tier1)
         -96 (-5.07 % of base) : 317003.dasm - Xunit.Sdk.AssertEqualityComparer`1[System.__Canon]:Equals(System.__Canon,Xunit.Sdk.CollectionTracker,System.__Canon,Xunit.Sdk.CollectionTracker,byref):ubyte:this (Tier1)
         -88 (-3.24 % of base) : 375946.dasm - System.Net.CookieTokenizer:Next(ubyte,ubyte):int:this (Tier1)
         -80 (-4.04 % of base) : 93372.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckValidScopedOverride[System.__Canon](Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.Symbols.ReportMismatchInParameterType`1[System.__Canon],System.__Canon,ubyte,ubyte):ubyte (Tier1)
         -76 (-1.84 % of base) : 375945.dasm - System.Net.CookieParser:GetServer():System.Net.Cookie:this (Tier1)

Top method regressions (percentages):
          12 (7.50 % of base) : 178668.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbolExtensions:IsVerifierReference(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):ubyte (Tier1)
          24 (7.14 % of base) : 210067.dasm - System.Collections.Tests.IEnumerable_Generic_Tests`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:<IEnumerable_Generic_Enumerator_Reset>b__55_2(System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon][],int):this (Tier1)
          16 (6.78 % of base) : 265603.dasm - System.Diagnostics.Activity:set_Current(System.Diagnostics.Activity) (Tier1)
          16 (6.56 % of base) : 178142.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyDelaySignAttributeSetting():ubyte:this (Tier1)
          16 (6.56 % of base) : 59665.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyDelaySignAttributeSetting():ubyte:this (Tier1)
          16 (6.56 % of base) : 93231.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyDelaySignAttributeSetting():ubyte:this (Tier1)
          16 (6.56 % of base) : 93563.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)
          16 (6.56 % of base) : 60807.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)
          16 (6.56 % of base) : 691962.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)
          16 (6.56 % of base) : 93560.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyVersionAttributeSetting():System.Version:this (Tier1)
          16 (6.56 % of base) : 60804.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyVersionAttributeSetting():System.Version:this (Tier1)
          16 (6.56 % of base) : 693860.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyVersionAttributeSetting():System.Version:this (Tier1)
          16 (6.45 % of base) : 690563.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyAlgorithmIdAttributeSetting():System.Nullable`1[int]:this (Tier1)
         244 (6.06 % of base) : 176462.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:EqualsComplicatedCases(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,int):ubyte:this (Tier1)
          16 (5.97 % of base) : 179371.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:get_IsExternal():ubyte:this (Tier1)
          16 (5.48 % of base) : 389363.dasm - System.Formats.Asn1.AsnWriter:WriteBitString(System.ReadOnlySpan`1[ubyte],int,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this (Tier1)
          16 (5.26 % of base) : 178519.dasm - Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass:MayRequireTracking(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol):ubyte:this (Tier1)
          16 (5.06 % of base) : 404608.dasm - System.Net.Sockets.SocketAsyncContext:Accept(System.Memory`1[ubyte],byref,byref):int:this (Tier1)
           8 (5.00 % of base) : 680718.dasm - Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder:IsGenericType(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol):ubyte (Tier1)
          16 (4.82 % of base) : 643669.dasm - System.Text.Json.Utf8JsonReader:TrySkipPartial(int):ubyte:this (Tier1)

Top method improvements (percentages):
         -40 (-34.48 % of base) : 660040.dasm - System.Byte:Equals(System.Object):ubyte:this (Tier1)
         -40 (-34.48 % of base) : 548932.dasm - System.Char:Equals(System.Object):ubyte:this (Tier1)
         -40 (-34.48 % of base) : 660064.dasm - System.Char:Equals(System.Object):ubyte:this (Tier1)
         -40 (-34.48 % of base) : 365580.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -40 (-34.48 % of base) : 478310.dasm - System.UInt16:Equals(System.Object):ubyte:this (Tier1)
         -40 (-34.48 % of base) : 291278.dasm - System.UInt64:Equals(System.Object):ubyte:this (Tier1)
         -36 (-32.14 % of base) : 741061.dasm - System.Boolean:Equals(System.Object):ubyte:this (Tier1)
         -36 (-32.14 % of base) : 81749.dasm - System.Boolean:Equals(System.Object):ubyte:this (Tier1)
         -36 (-32.14 % of base) : 45069.dasm - System.Boolean:Equals(System.Object):ubyte:this (Tier1)
         -36 (-32.14 % of base) : 291852.dasm - System.Byte:Equals(System.Object):ubyte:this (Tier1)
         -36 (-32.14 % of base) : 478654.dasm - System.Byte:Equals(System.Object):ubyte:this (Tier1)
         -36 (-32.14 % of base) : 290617.dasm - System.Char:Equals(System.Object):ubyte:this (Tier1)
         -36 (-32.14 % of base) : 661263.dasm - System.Int16:Equals(System.Object):ubyte:this (Tier1)
         -36 (-32.14 % of base) : 285515.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -36 (-32.14 % of base) : 741114.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -36 (-32.14 % of base) : 210763.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -36 (-32.14 % of base) : 223022.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -36 (-32.14 % of base) : 337849.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -36 (-32.14 % of base) : 350789.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -36 (-32.14 % of base) : 453771.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)


librariestestsnotieredcompilation.run.linux.arm64.Release.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 164985256 (overridden on cmd)
Total bytes of diff: 164981656 (overridden on cmd)
Total bytes of delta: -3600 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         100 : 3666.dasm (1.60 % of base)
          36 : 143336.dasm (1.02 % of base)
          32 : 145612.dasm (3.33 % of base)
          32 : 13692.dasm (0.54 % of base)
          32 : 148544.dasm (3.29 % of base)
          28 : 299407.dasm (0.71 % of base)
          24 : 44081.dasm (4.14 % of base)
          24 : 50167.dasm (4.14 % of base)
          24 : 53977.dasm (4.14 % of base)
          24 : 90256.dasm (0.78 % of base)
          20 : 7144.dasm (0.27 % of base)
          20 : 85449.dasm (0.45 % of base)
          20 : 153989.dasm (1.29 % of base)
          20 : 182852.dasm (1.16 % of base)
          20 : 20907.dasm (4.42 % of base)
          16 : 97562.dasm (0.62 % of base)
          16 : 78073.dasm (2.31 % of base)
          16 : 146938.dasm (1.83 % of base)
          16 : 149715.dasm (0.46 % of base)
          16 : 179698.dasm (0.50 % of base)

Top file improvements (bytes):
        -148 : 24840.dasm (-16.23 % of base)
        -148 : 116358.dasm (-15.29 % of base)
        -140 : 30867.dasm (-8.52 % of base)
        -136 : 299851.dasm (-2.56 % of base)
        -120 : 299929.dasm (-3.53 % of base)
         -72 : 39639.dasm (-4.09 % of base)
         -68 : 90324.dasm (-1.66 % of base)
         -64 : 90316.dasm (-1.61 % of base)
         -48 : 97024.dasm (-4.29 % of base)
         -48 : 129025.dasm (-27.91 % of base)
         -48 : 158615.dasm (-1.83 % of base)
         -48 : 165387.dasm (-7.64 % of base)
         -44 : 148217.dasm (-6.51 % of base)
         -44 : 150783.dasm (-6.51 % of base)
         -44 : 151344.dasm (-6.51 % of base)
         -40 : 193142.dasm (-32.26 % of base)
         -36 : 158619.dasm (-1.30 % of base)
         -36 : 31503.dasm (-21.95 % of base)
         -36 : 36354.dasm (-1.92 % of base)
         -36 : 121529.dasm (-1.22 % of base)

67 total files with Code Size differences (37 improved, 30 regressed), 20 unchanged.

Top method regressions (bytes):
         100 (1.60 % of base) : 3666.dasm - Microsoft.DotNet.XUnitExtensions.XunitParallelTheoryTestCaseRunner+<AfterTestCaseStartingAsync>d__9:MoveNext():this (FullOpts)
          36 (1.02 % of base) : 143336.dasm - System.Buffers.Text.Tests.Base64DecoderUnitTests:DecodingInvalidBytesPadding(ubyte):this (FullOpts)
          32 (0.54 % of base) : 13692.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:BetterFunctionMember[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],ubyte,byref):int:this (FullOpts)
          32 (3.33 % of base) : 145612.dasm - System.Net.Http.Headers.HeaderUtilities:AreEqualCollections[System.__Canon](System.Net.Http.Headers.ObjectCollection`1[System.__Canon],System.Net.Http.Headers.ObjectCollection`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte (FullOpts)
          32 (3.29 % of base) : 148544.dasm - System.Net.Http.Headers.HeaderUtilities:AreEqualCollections[System.__Canon](System.Net.Http.Headers.ObjectCollection`1[System.__Canon],System.Net.Http.Headers.ObjectCollection`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte (FullOpts)
          28 (0.71 % of base) : 299407.dasm - System.Threading.Tasks.Tests.TaskRtTests:FromResult_KnownResults_Cached() (FullOpts)
          24 (4.14 % of base) : 44081.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:SetUpdatedSymbol(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)
          24 (4.14 % of base) : 50167.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:SetUpdatedSymbol(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)
          24 (4.14 % of base) : 53977.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:SetUpdatedSymbol(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)
          24 (0.78 % of base) : 90256.dasm - System.Data.DataRelation:set_Nested(ubyte):this (FullOpts)
          20 (0.27 % of base) : 7144.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodSymbol:CheckModifiers(ubyte,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
          20 (0.45 % of base) : 85449.dasm - System.Drawing.ColorConverter:ConvertTo(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type):System.Object:this (FullOpts)
          20 (4.42 % of base) : 20907.dasm - System.Formats.Asn1.AsnDecoder:DecodeLength(System.ReadOnlySpan`1[ubyte],int,byref,byref):int (FullOpts)
          20 (1.29 % of base) : 153989.dasm - System.Net.Tests.HttpWebRequestTest+<>c+<<SendHttpGetRequest_WithCachePolicyBypassCache_DoNotAddHeaders>b__145_1>d:MoveNext():this (FullOpts)
          20 (1.16 % of base) : 182852.dasm - System.Reflection.TypeLoading.Assignability:CanCastTo(System.Type,System.Type,System.Reflection.TypeLoading.CoreTypes):ubyte (FullOpts)
          16 (0.22 % of base) : 44603.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodSymbolBase:CheckModifiers(ubyte,ubyte,ubyte,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
          16 (2.31 % of base) : 78073.dasm - System.ComponentModel.AttributeCollection:FromExisting(System.ComponentModel.AttributeCollection,System.Attribute[]):System.ComponentModel.AttributeCollection (FullOpts)
          16 (0.62 % of base) : 97562.dasm - System.Diagnostics.Tests.ActivitySourceTests+<>c:<RestoreOriginalParentTest>b__25_0():this (FullOpts)
          16 (1.83 % of base) : 146938.dasm - System.Net.Http.AuthenticationHelper+DigestResponse:GetNextValue(System.String,int,ubyte,byref):System.String (FullOpts)
          16 (0.46 % of base) : 149715.dasm - System.Net.Mail.Tests.MessageHeaderBehaviorTest:Message_WithTo_WithCc_WithBcc_WithReplyToList_ShouldBeSingletons_ShouldDeleteUserSuppliedHeaders():this (FullOpts)

Top method improvements (bytes):
        -148 (-16.23 % of base) : 24840.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal:IsDefault(System.Object):ubyte (FullOpts)
        -148 (-15.29 % of base) : 116358.dasm - Microsoft.FSharp.Core.PrintfImpl+GenericNumber:isPositive(System.Object):ubyte (FullOpts)
        -140 (-8.52 % of base) : 30867.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass+LocalState,System.__Canon]:VisitIsPatternExpression(Microsoft.CodeAnalysis.CSharp.BoundIsPatternExpression):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
        -136 (-2.56 % of base) : 299851.dasm - System.Threading.Tasks.Tests.TaskRtTests_Core:RunTaskCompletionSourceTests_SetException() (FullOpts)
        -120 (-3.53 % of base) : 299929.dasm - System.Threading.Tasks.Tests.TaskRtTests_Core:RunTaskCompletionSourceTests_CancellationTests() (FullOpts)
         -72 (-4.09 % of base) : 39639.dasm - System.Runtime.Serialization.Formatters.Binary.BinaryParser:Run():this (FullOpts)
         -68 (-1.66 % of base) : 90324.dasm - System.Data.RBTree`1[System.__Canon]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
         -64 (-1.61 % of base) : 90316.dasm - System.Data.RBTree`1[int]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
         -48 (-4.29 % of base) : 97024.dasm - System.Diagnostics.LegacyPropagator:TryExtractBaggage(System.String,byref):ubyte (FullOpts)
         -48 (-1.83 % of base) : 158615.dasm - System.Numerics.Tensors.Tests.ConvertTests:ConvertTruncatingImpl[byte,byte]() (FullOpts)
         -48 (-27.91 % of base) : 129025.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
         -48 (-7.64 % of base) : 165387.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (FullOpts)
         -44 (-6.51 % of base) : 148217.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
         -44 (-6.51 % of base) : 150783.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
         -44 (-6.51 % of base) : 151344.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
         -40 (-32.26 % of base) : 193142.dasm - System.Runtime.Serialization.Formatters.Tests.StructContainingArraysOfOtherStructs:Equals(System.Object):ubyte:this (FullOpts)
         -36 (-1.92 % of base) : 36354.dasm - FastExpressionCompiler.LightExpression.ExpressionCompiler+EmittingVisitor:TryEmitNestedLambda(FastExpressionCompiler.LightExpression.LambdaExpression,System.Collections.Generic.IReadOnlyList`1[FastExpressionCompiler.LightExpression.ParameterExpression],System.Reflection.Emit.ILGenerator,byref):ubyte (FullOpts)
         -36 (-1.22 % of base) : 121529.dasm - System.IO.Compression.Tests.zip_UpdateTests:Update_Comment_EntryName_Encoding_Internal(System.String,System.String,System.String,System.Text.Encoding,System.String,System.String) (FullOpts)
         -36 (-21.95 % of base) : 31503.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
         -36 (-1.30 % of base) : 158619.dasm - System.Numerics.Tensors.Tests.ConvertTests:ConvertSaturatingImpl[byte,byte]() (FullOpts)

Top method regressions (percentages):
           8 (7.14 % of base) : 166959.dasm - System.Xml.DocumentXPathNavigator:get_ValueDocument():System.String:this (FullOpts)
          12 (6.00 % of base) : 171843.dasm - System.Xml.XmlDocument:get_SchemaInfo():System.Xml.Schema.IXmlSchemaInfo:this (FullOpts)
          20 (4.42 % of base) : 20907.dasm - System.Formats.Asn1.AsnDecoder:DecodeLength(System.ReadOnlySpan`1[ubyte],int,byref,byref):int (FullOpts)
          24 (4.14 % of base) : 44081.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:SetUpdatedSymbol(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)
          24 (4.14 % of base) : 50167.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:SetUpdatedSymbol(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)
          24 (4.14 % of base) : 53977.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:SetUpdatedSymbol(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)
          12 (3.90 % of base) : 146085.dasm - System.Net.Http.Headers.ObjectCollection`1[System.__Canon]:Contains(System.__Canon):ubyte:this (FullOpts)
          32 (3.33 % of base) : 145612.dasm - System.Net.Http.Headers.HeaderUtilities:AreEqualCollections[System.__Canon](System.Net.Http.Headers.ObjectCollection`1[System.__Canon],System.Net.Http.Headers.ObjectCollection`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte (FullOpts)
          32 (3.29 % of base) : 148544.dasm - System.Net.Http.Headers.HeaderUtilities:AreEqualCollections[System.__Canon](System.Net.Http.Headers.ObjectCollection`1[System.__Canon],System.Net.Http.Headers.ObjectCollection`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte (FullOpts)
          16 (2.31 % of base) : 78073.dasm - System.ComponentModel.AttributeCollection:FromExisting(System.ComponentModel.AttributeCollection,System.Attribute[]):System.ComponentModel.AttributeCollection (FullOpts)
           4 (2.17 % of base) : 96148.dasm - System.Data.EnumerableRowCollectionExtensionsTests+<>c:<Where_SuccessfullyFindRow>b__3_0(System.Data.DataRow):ubyte:this (FullOpts)
          16 (1.83 % of base) : 146938.dasm - System.Net.Http.AuthenticationHelper+DigestResponse:GetNextValue(System.String,int,ubyte,byref):System.String (FullOpts)
           4 (1.75 % of base) : 174538.dasm - OLEDB.Test.ModuleCore.CVariation:Execute():int:this (FullOpts)
         100 (1.60 % of base) : 3666.dasm - Microsoft.DotNet.XUnitExtensions.XunitParallelTheoryTestCaseRunner+<AfterTestCaseStartingAsync>d__9:MoveNext():this (FullOpts)
          20 (1.29 % of base) : 153989.dasm - System.Net.Tests.HttpWebRequestTest+<>c+<<SendHttpGetRequest_WithCachePolicyBypassCache_DoNotAddHeaders>b__145_1>d:MoveNext():this (FullOpts)
           4 (1.22 % of base) : 34517.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)
           4 (1.19 % of base) : 84130.dasm - System.ComponentModel.BindingList`1[System.__Canon]:AddNewCore():System.Object:this (FullOpts)
          12 (1.18 % of base) : 195364.dasm - System.Runtime.Serialization.SchemaHelper:AddSchemaImport(System.String,System.Xml.Schema.XmlSchema) (FullOpts)
          20 (1.16 % of base) : 182852.dasm - System.Reflection.TypeLoading.Assignability:CanCastTo(System.Type,System.Type,System.Reflection.TypeLoading.CoreTypes):ubyte (FullOpts)
           4 (1.14 % of base) : 187466.dasm - System.Tests.BitConverterSpan:ToInt32(int,ubyte[]):this (FullOpts)

Top method improvements (percentages):
         -40 (-32.26 % of base) : 193142.dasm - System.Runtime.Serialization.Formatters.Tests.StructContainingArraysOfOtherStructs:Equals(System.Object):ubyte:this (FullOpts)
         -48 (-27.91 % of base) : 129025.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
         -36 (-21.95 % of base) : 31503.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
        -148 (-16.23 % of base) : 24840.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal:IsDefault(System.Object):ubyte (FullOpts)
        -148 (-15.29 % of base) : 116358.dasm - Microsoft.FSharp.Core.PrintfImpl+GenericNumber:isPositive(System.Object):ubyte (FullOpts)
         -28 (-12.07 % of base) : 92164.dasm - System.Data.ExpressionParser:ScanDate():this (FullOpts)
        -140 (-8.52 % of base) : 30867.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass+LocalState,System.__Canon]:VisitIsPatternExpression(Microsoft.CodeAnalysis.CSharp.BoundIsPatternExpression):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
         -24 (-8.33 % of base) : 93745.dasm - System.Data.Tests.DataRowTest2+Address:Equals(System.Object):ubyte:this (FullOpts)
         -48 (-7.64 % of base) : 165387.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (FullOpts)
         -16 (-7.55 % of base) : 143397.dasm - System.Globalization.FormatProvider+Number:RoundNumber(byref,int) (FullOpts)
         -44 (-6.51 % of base) : 148217.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
         -44 (-6.51 % of base) : 150783.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
         -44 (-6.51 % of base) : 151344.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
         -12 (-6.12 % of base) : 192076.dasm - System.Numerics.BigInteger:op_Multiply(System.Numerics.BigInteger,System.Numerics.BigInteger):System.Numerics.BigInteger (FullOpts)
         -16 (-5.56 % of base) : 10149.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckConstantBounds(byte,Microsoft.CodeAnalysis.ConstantValue,byref):ubyte (FullOpts)
         -16 (-5.56 % of base) : 46364.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckConstantBounds(byte,Microsoft.CodeAnalysis.ConstantValue,byref):ubyte (FullOpts)
         -16 (-5.56 % of base) : 51555.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckConstantBounds(byte,Microsoft.CodeAnalysis.ConstantValue,byref):ubyte (FullOpts)
         -12 (-5.56 % of base) : 302520.dasm - System.Transactions.CheapUnfairReaderWriterLock:EnterWriteLock():this (FullOpts)
         -12 (-4.76 % of base) : 115824.dasm - Microsoft.FSharp.Reflection.Impl:isNamedType(System.Type):ubyte (FullOpts)
          -8 (-4.55 % of base) : 151909.dasm - System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor+ErrorCollection+Enumerator:MoveNext():ubyte:this (FullOpts)


realworld.run.linux.arm64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 15900012 (overridden on cmd)
Total bytes of diff: 15899500 (overridden on cmd)
Total bytes of delta: -512 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          32 : 22531.dasm (0.54 % of base)
          24 : 19848.dasm (4.14 % of base)
          20 : 20685.dasm (0.28 % of base)
          16 : 30883.dasm (1.32 % of base)
          12 : 17634.dasm (0.82 % of base)
           8 : 17621.dasm (0.58 % of base)
           8 : 22602.dasm (0.14 % of base)
           8 : 26003.dasm (0.23 % of base)
           4 : 23610.dasm (0.06 % of base)
           4 : 28915.dasm (0.89 % of base)
           4 : 8196.dasm (0.03 % of base)
           4 : 20497.dasm (0.15 % of base)
           4 : 5339.dasm (0.63 % of base)

Top file improvements (bytes):
        -140 : 24160.dasm (-8.52 % of base)
         -52 : 8173.dasm (-40.62 % of base)
         -52 : 6570.dasm (-40.62 % of base)
         -52 : 6881.dasm (-40.62 % of base)
         -24 : 17822.dasm (-2.03 % of base)
         -20 : 16183.dasm (-1.82 % of base)
         -16 : 21734.dasm (-5.56 % of base)
         -16 : 19396.dasm (-0.69 % of base)
         -16 : 947.dasm (-5.41 % of base)
         -12 : 23471.dasm (-1.58 % of base)
         -12 : 1190.dasm (-0.22 % of base)
         -12 : 13823.dasm (-0.35 % of base)
         -12 : 18849.dasm (-4.35 % of base)
         -12 : 20163.dasm (-4.00 % of base)
         -12 : 20351.dasm (-0.36 % of base)
         -12 : 2312.dasm (-1.21 % of base)
         -12 : 935.dasm (-3.90 % of base)
          -8 : 15678.dasm (-3.23 % of base)
          -8 : 19405.dasm (-0.12 % of base)
          -8 : 20989.dasm (-0.29 % of base)

39 total files with Code Size differences (26 improved, 13 regressed), 24 unchanged.

Top method regressions (bytes):
          32 (0.54 % of base) : 22531.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:BetterFunctionMember[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],ubyte,byref):int:this (FullOpts)
          24 (4.14 % of base) : 19848.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:SetUpdatedSymbol(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)
          20 (0.28 % of base) : 20685.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodSymbol:CheckModifiers(ubyte,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
          16 (1.32 % of base) : 30883.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
          12 (0.82 % of base) : 17634.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolation>g__getFormatAndCloseBrace|434_1(byref):System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationFormatClauseSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken]:this (FullOpts)
           8 (0.23 % of base) : 26003.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:BestTypeForLambdaReturns(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.ValueTuple`3[Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte]],Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Conversions,byref):Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations (FullOpts)
           8 (0.14 % of base) : 22602.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceEventSymbol:CheckModifiersAndType(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
           8 (0.58 % of base) : 17621.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseInterpolation(Microsoft.CodeAnalysis.CSharp.CSharpParseOptions,System.String,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer+Interpolation,int):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationSyntax (FullOpts)
           4 (0.03 % of base) : 8196.dasm - FSharp.Compiler.CheckExpressions:TcMethodApplication(ubyte,FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+TType]],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Expr],FSharp.Compiler.Text.Range,FSharp.Compiler.Text.Range,System.String,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+TType],FSharp.Compiler.AccessibilityLogic+AccessorDomain,FSharp.Compiler.TypedTreeOps+Mutates,ubyte,Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[FSharp.Compiler.Infos+MethInfo,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Infos+PropInfo]]],FSharp.Compiler.NameResolution+AfterResolution,FSharp.Compiler.TypedTree+ValUseFlag,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynExpr],FSharp.Compiler.ConstraintSolver+OverallTy,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+DelayedItem]):System.Tuple`2[System.Tuple`3[FSharp.Compiler.TypedTree+Expr,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.MethodCalls+CallerNamedArg`1[FSharp.Compiler.TypedTree+Expr]],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+DelayedItem]],FSharp.Compiler.CheckExpressions+UnscopedTyparEnv] (FullOpts)
           4 (0.06 % of base) : 23610.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckPropertyValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (FullOpts)
           4 (0.89 % of base) : 28915.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol+<GetSecurityAttributes>d__118:MoveNext():ubyte:this (FullOpts)
           4 (0.15 % of base) : 20497.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourcePropertyAccessorSymbol:CheckModifiers(Microsoft.CodeAnalysis.Location,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
           4 (0.63 % of base) : 5339.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)

Top method improvements (bytes):
        -140 (-8.52 % of base) : 24160.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass+LocalState,System.__Canon]:VisitIsPatternExpression(Microsoft.CodeAnalysis.CSharp.BoundIsPatternExpression):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
         -52 (-40.62 % of base) : 6881.dasm - System.Boolean:Equals(System.Object):ubyte:this (FullOpts)
         -52 (-40.62 % of base) : 6570.dasm - System.Byte:Equals(System.Object):ubyte:this (FullOpts)
         -52 (-40.62 % of base) : 8173.dasm - System.Int32:Equals(System.Object):ubyte:this (FullOpts)
         -24 (-2.03 % of base) : 17822.dasm - Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString:FromSource(System.String):Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString (FullOpts)
         -20 (-1.82 % of base) : 16183.dasm - Roslyn.Utilities.CommandLineUtilities:SplitCommandLineIntoArguments(System.ReadOnlySpan`1[ushort],ubyte,System.Text.StringBuilder,System.Collections.Generic.List`1[System.String],byref) (FullOpts)
         -16 (-5.56 % of base) : 21734.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckConstantBounds(byte,Microsoft.CodeAnalysis.ConstantValue,byref):ubyte (FullOpts)
         -16 (-0.69 % of base) : 19396.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetSpecialType(byte):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (FullOpts)
         -16 (-5.41 % of base) : 947.dasm - System.Number:RoundNumber(byref,int,ubyte) (FullOpts)
         -12 (-1.58 % of base) : 23471.dasm - Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass:LeaveParameter(Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.Location):this (FullOpts)
         -12 (-4.00 % of base) : 20163.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:this (FullOpts)
         -12 (-0.36 % of base) : 20351.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
         -12 (-0.35 % of base) : 13823.dasm - Microsoft.ML.Data.SchemaDefinition:Create(System.Type,int):Microsoft.ML.Data.SchemaDefinition (FullOpts)
         -12 (-0.22 % of base) : 1190.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
         -12 (-3.90 % of base) : 935.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
         -12 (-4.35 % of base) : 18849.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
         -12 (-1.21 % of base) : 2312.dasm - System.Uri:ParseSchemeCheckImplicitFile(System.String,byref,byref,byref):int (FullOpts)
          -8 (-0.12 % of base) : 19405.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (FullOpts)
          -8 (-0.29 % of base) : 20989.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourcePropertySymbolBase:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
          -8 (-1.01 % of base) : 25841.dasm - Microsoft.CodeAnalysis.CSharp.ValueSetFactory+NumericValueSet`2[int,Microsoft.CodeAnalysis.CSharp.ValueSetFactory+IntTC]:Union(Microsoft.CodeAnalysis.CSharp.IValueSet`1[int]):Microsoft.CodeAnalysis.CSharp.IValueSet`1[int]:this (FullOpts)

Top method regressions (percentages):
          24 (4.14 % of base) : 19848.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:SetUpdatedSymbol(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)
          16 (1.32 % of base) : 30883.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
           4 (0.89 % of base) : 28915.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol+<GetSecurityAttributes>d__118:MoveNext():ubyte:this (FullOpts)
          12 (0.82 % of base) : 17634.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolation>g__getFormatAndCloseBrace|434_1(byref):System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationFormatClauseSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken]:this (FullOpts)
           4 (0.63 % of base) : 5339.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
           8 (0.58 % of base) : 17621.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseInterpolation(Microsoft.CodeAnalysis.CSharp.CSharpParseOptions,System.String,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer+Interpolation,int):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationSyntax (FullOpts)
          32 (0.54 % of base) : 22531.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:BetterFunctionMember[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],ubyte,byref):int:this (FullOpts)
          20 (0.28 % of base) : 20685.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodSymbol:CheckModifiers(ubyte,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
           8 (0.23 % of base) : 26003.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:BestTypeForLambdaReturns(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.ValueTuple`3[Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte]],Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Conversions,byref):Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations (FullOpts)
           4 (0.15 % of base) : 20497.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourcePropertyAccessorSymbol:CheckModifiers(Microsoft.CodeAnalysis.Location,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
           8 (0.14 % of base) : 22602.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceEventSymbol:CheckModifiersAndType(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
           4 (0.06 % of base) : 23610.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckPropertyValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (FullOpts)
           4 (0.03 % of base) : 8196.dasm - FSharp.Compiler.CheckExpressions:TcMethodApplication(ubyte,FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+TType]],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Expr],FSharp.Compiler.Text.Range,FSharp.Compiler.Text.Range,System.String,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+TType],FSharp.Compiler.AccessibilityLogic+AccessorDomain,FSharp.Compiler.TypedTreeOps+Mutates,ubyte,Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[FSharp.Compiler.Infos+MethInfo,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Infos+PropInfo]]],FSharp.Compiler.NameResolution+AfterResolution,FSharp.Compiler.TypedTree+ValUseFlag,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynExpr],FSharp.Compiler.ConstraintSolver+OverallTy,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+DelayedItem]):System.Tuple`2[System.Tuple`3[FSharp.Compiler.TypedTree+Expr,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.MethodCalls+CallerNamedArg`1[FSharp.Compiler.TypedTree+Expr]],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+DelayedItem]],FSharp.Compiler.CheckExpressions+UnscopedTyparEnv] (FullOpts)

Top method improvements (percentages):
         -52 (-40.62 % of base) : 6881.dasm - System.Boolean:Equals(System.Object):ubyte:this (FullOpts)
         -52 (-40.62 % of base) : 6570.dasm - System.Byte:Equals(System.Object):ubyte:this (FullOpts)
         -52 (-40.62 % of base) : 8173.dasm - System.Int32:Equals(System.Object):ubyte:this (FullOpts)
        -140 (-8.52 % of base) : 24160.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass+LocalState,System.__Canon]:VisitIsPatternExpression(Microsoft.CodeAnalysis.CSharp.BoundIsPatternExpression):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
         -16 (-5.56 % of base) : 21734.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckConstantBounds(byte,Microsoft.CodeAnalysis.ConstantValue,byref):ubyte (FullOpts)
         -16 (-5.41 % of base) : 947.dasm - System.Number:RoundNumber(byref,int,ubyte) (FullOpts)
         -12 (-4.35 % of base) : 18849.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
         -12 (-4.00 % of base) : 20163.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:this (FullOpts)
         -12 (-3.90 % of base) : 935.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
          -8 (-3.23 % of base) : 15678.dasm - System.Globalization.CultureData:GetSeparator(System.String,System.String):System.String (FullOpts)
          -4 (-2.86 % of base) : 22925.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetSymbol[System.__Canon](Microsoft.CodeAnalysis.ISymbol):System.__Canon (FullOpts)
         -24 (-2.03 % of base) : 17822.dasm - Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString:FromSource(System.String):Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString (FullOpts)
         -20 (-1.82 % of base) : 16183.dasm - Roslyn.Utilities.CommandLineUtilities:SplitCommandLineIntoArguments(System.ReadOnlySpan`1[ushort],ubyte,System.Text.StringBuilder,System.Collections.Generic.List`1[System.String],byref) (FullOpts)
          -8 (-1.64 % of base) : 9285.dasm - System.Xml.Linq.XContainer+<GetDescendants>d__38:MoveNext():ubyte:this (FullOpts)
         -12 (-1.58 % of base) : 23471.dasm - Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass:LeaveParameter(Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.Location):this (FullOpts)
          -4 (-1.49 % of base) : 25175.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:IsFixedStatementExpression(Microsoft.CodeAnalysis.SyntaxNode):ubyte (FullOpts)
         -12 (-1.21 % of base) : 2312.dasm - System.Uri:ParseSchemeCheckImplicitFile(System.String,byref,byref,byref):int (FullOpts)
          -4 (-1.09 % of base) : 9811.dasm - FSharp.Compiler.Syntax.PrettyNaming:TryChopPropertyName(System.String):Microsoft.FSharp.Core.FSharpOption`1[System.String] (FullOpts)
          -8 (-1.01 % of base) : 25841.dasm - Microsoft.CodeAnalysis.CSharp.ValueSetFactory+NumericValueSet`2[int,Microsoft.CodeAnalysis.CSharp.ValueSetFactory+IntTC]:Union(Microsoft.CodeAnalysis.CSharp.IValueSet`1[int]):Microsoft.CodeAnalysis.CSharp.IValueSet`1[int]:this (FullOpts)
          -8 (-0.92 % of base) : 31113.dasm - System.Management.Automation.PowerShell+Worker:CreateRunspaceIfNeededAndDoWork(System.Management.Automation.Runspaces.Runspace,ubyte):this (FullOpts)


smoke_tests.nativeaot.linux.arm64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 2946792 (overridden on cmd)
Total bytes of diff: 2945840 (overridden on cmd)
Total bytes of delta: -952 (-0.03 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          16 : 2291.dasm (1.61 % of base)
          16 : 3054.dasm (3.31 % of base)
           8 : 951.dasm (2.50 % of base)
           8 : 4405.dasm (6.06 % of base)
           4 : 1513.dasm (1.54 % of base)
           4 : 8557.dasm (1.61 % of base)
           4 : 8583.dasm (1.64 % of base)
           4 : 8757.dasm (1.22 % of base)
           4 : 8554.dasm (1.43 % of base)
           4 : 8556.dasm (1.67 % of base)
           4 : 1089.dasm (1.22 % of base)
           4 : 1961.dasm (0.78 % of base)
           4 : 3841.dasm (1.10 % of base)
           4 : 3926.dasm (0.18 % of base)
           4 : 4071.dasm (0.33 % of base)
           4 : 4523.dasm (0.20 % of base)
           4 : 6498.dasm (1.39 % of base)
           4 : 6499.dasm (1.45 % of base)
           4 : 6503.dasm (1.52 % of base)
           4 : 7914.dasm (1.54 % of base)

Top file improvements (bytes):
         -40 : 2789.dasm (-28.57 % of base)
         -40 : 2893.dasm (-28.57 % of base)
         -40 : 4928.dasm (-40.00 % of base)
         -40 : 8016.dasm (-40.00 % of base)
         -40 : 8507.dasm (-31.25 % of base)
         -36 : 134.dasm (-33.33 % of base)
         -36 : 882.dasm (-33.33 % of base)
         -36 : 10103.dasm (-27.27 % of base)
         -36 : 865.dasm (-33.33 % of base)
         -36 : 875.dasm (-33.33 % of base)
         -36 : 889.dasm (-33.33 % of base)
         -36 : 97.dasm (-33.33 % of base)
         -36 : 1061.dasm (-33.33 % of base)
         -36 : 4902.dasm (-29.03 % of base)
         -36 : 593.dasm (-33.33 % of base)
         -36 : 69.dasm (-33.33 % of base)
         -36 : 723.dasm (-26.47 % of base)
         -36 : 7673.dasm (-32.14 % of base)
         -36 : 7754.dasm (-25.71 % of base)
         -36 : 79.dasm (-33.33 % of base)

44 total files with Code Size differences (22 improved, 22 regressed), 19 unchanged.

Top method regressions (bytes):
          16 (1.61 % of base) : 2291.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
          16 (3.31 % of base) : 3054.dasm - System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.Threading.Tasks.VoidTaskResult]:GetStateMachineBox[System.Diagnostics.ProcessWaitState+<WaitForExitAsync>d__26](byref,byref):System.Runtime.CompilerServices.IAsyncStateMachineBox (FullOpts)
           8 (2.50 % of base) : 951.dasm - System.Enum+<>c__64`1[uint]:<FormatNumberAsHex>b__64_0(System.Span`1[ushort],long):this (FullOpts)
           8 (6.06 % of base) : 4405.dasm - System.Threading.PortableThreadPool:RemoveWaitThread(System.Threading.PortableThreadPool+WaitThread):this (FullOpts)
           4 (1.52 % of base) : 6503.dasm - Internal.Runtime.MethodTable:get_DynamicGcStaticsData():long:this (FullOpts)
           4 (1.45 % of base) : 6499.dasm - Internal.Runtime.MethodTable:get_DynamicNonGcStaticsData():long:this (FullOpts)
           4 (1.64 % of base) : 8583.dasm - Internal.Runtime.MethodTable:get_DynamicTemplateType():ulong:this (FullOpts)
           4 (1.39 % of base) : 6498.dasm - Internal.Runtime.MethodTable:get_DynamicThreadStaticsIndex():long:this (FullOpts)
           4 (1.54 % of base) : 1513.dasm - Internal.Runtime.MethodTable:get_FunctionPointerParameters():Internal.Runtime.MethodTableList:this (FullOpts)
           4 (1.54 % of base) : 7914.dasm - Internal.Runtime.MethodTable:get_FunctionPointerParameters():Internal.Runtime.MethodTableList:this (FullOpts)
           4 (1.22 % of base) : 8757.dasm - Internal.Runtime.MethodTable:get_GenericArguments():Internal.Runtime.MethodTableList:this (FullOpts)
           4 (1.22 % of base) : 1089.dasm - Internal.Runtime.MethodTable:get_GenericArguments():Internal.Runtime.MethodTableList:this (FullOpts)
           4 (1.49 % of base) : 8550.dasm - Internal.Runtime.MethodTable:set_DynamicGcStaticsData(long):this (FullOpts)
           4 (1.43 % of base) : 8554.dasm - Internal.Runtime.MethodTable:set_DynamicNonGcStaticsData(long):this (FullOpts)
           4 (1.61 % of base) : 8557.dasm - Internal.Runtime.MethodTable:set_DynamicTemplateType(ulong):this (FullOpts)
           4 (1.37 % of base) : 8551.dasm - Internal.Runtime.MethodTable:set_DynamicThreadStaticsIndex(long):this (FullOpts)
           4 (1.67 % of base) : 8556.dasm - Internal.Runtime.MethodTable:SetGenericComposition(long):this (FullOpts)
           4 (0.78 % of base) : 1961.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
           4 (0.20 % of base) : 4523.dasm - System.Globalization.IdnMapping:PunycodeEncode(System.String):System.String (FullOpts)
           4 (0.33 % of base) : 4071.dasm - System.Net.Sockets.SocketPal:TryCompleteSendTo(System.Net.Sockets.SafeSocketHandle,System.ReadOnlySpan`1[ubyte],System.Collections.Generic.IList`1[System.ArraySegment`1[ubyte]],byref,byref,byref,int,System.ReadOnlySpan`1[ubyte],byref,byref):ubyte (FullOpts)

Top method improvements (bytes):
         -40 (-31.25 % of base) : 8507.dasm - Internal.TypeSystem.TypeSystemContext+GenericTypeInstanceKey:Equals(System.Object):ubyte:this (FullOpts)
         -40 (-28.57 % of base) : 2789.dasm - System.Double:Equals(System.Object):ubyte:this (FullOpts)
         -40 (-40.00 % of base) : 8016.dasm - System.RuntimeFieldHandle:Equals(System.Object):ubyte:this (FullOpts)
         -40 (-40.00 % of base) : 4928.dasm - System.RuntimeMethodHandle:Equals(System.Object):ubyte:this (FullOpts)
         -40 (-28.57 % of base) : 2893.dasm - System.Single:Equals(System.Object):ubyte:this (FullOpts)
         -36 (-26.47 % of base) : 723.dasm - Internal.Reflection.Core.QScopeDefinition:Equals(System.Object):ubyte:this (FullOpts)
         -36 (-27.27 % of base) : 10103.dasm - Internal.Runtime.CompilerServices.FunctionPointerOps+GenericMethodDescriptorInfo:Equals(System.Object):ubyte:this (FullOpts)
         -36 (-25.71 % of base) : 7754.dasm - Internal.Runtime.CompilerServices.OpenMethodResolver:Equals(System.Object):ubyte:this (FullOpts)
         -36 (-33.33 % of base) : 1061.dasm - Internal.Runtime.TypeManagerHandle:Equals(System.Object):ubyte:this (FullOpts)
         -36 (-33.33 % of base) : 97.dasm - System.Boolean:Equals(System.Object):ubyte:this (FullOpts)
         -36 (-33.33 % of base) : 69.dasm - System.Byte:Equals(System.Object):ubyte:this (FullOpts)
         -36 (-33.33 % of base) : 134.dasm - System.Char:Equals(System.Object):ubyte:this (FullOpts)
         -36 (-33.33 % of base) : 882.dasm - System.Int16:Equals(System.Object):ubyte:this (FullOpts)
         -36 (-33.33 % of base) : 79.dasm - System.Int32:Equals(System.Object):ubyte:this (FullOpts)
         -36 (-33.33 % of base) : 865.dasm - System.Int64:Equals(System.Object):ubyte:this (FullOpts)
         -36 (-29.03 % of base) : 4902.dasm - System.Runtime.Serialization.StreamingContext:Equals(System.Object):ubyte:this (FullOpts)
         -36 (-33.33 % of base) : 889.dasm - System.SByte:Equals(System.Object):ubyte:this (FullOpts)
         -36 (-32.14 % of base) : 7673.dasm - System.TypeUnificationKey:Equals(System.Object):ubyte:this (FullOpts)
         -36 (-33.33 % of base) : 875.dasm - System.UInt16:Equals(System.Object):ubyte:this (FullOpts)
         -36 (-33.33 % of base) : 593.dasm - System.UInt32:Equals(System.Object):ubyte:this (FullOpts)

Top method regressions (percentages):
           8 (6.06 % of base) : 4405.dasm - System.Threading.PortableThreadPool:RemoveWaitThread(System.Threading.PortableThreadPool+WaitThread):this (FullOpts)
          16 (3.31 % of base) : 3054.dasm - System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.Threading.Tasks.VoidTaskResult]:GetStateMachineBox[System.Diagnostics.ProcessWaitState+<WaitForExitAsync>d__26](byref,byref):System.Runtime.CompilerServices.IAsyncStateMachineBox (FullOpts)
           8 (2.50 % of base) : 951.dasm - System.Enum+<>c__64`1[uint]:<FormatNumberAsHex>b__64_0(System.Span`1[ushort],long):this (FullOpts)
           4 (1.67 % of base) : 8556.dasm - Internal.Runtime.MethodTable:SetGenericComposition(long):this (FullOpts)
           4 (1.64 % of base) : 8583.dasm - Internal.Runtime.MethodTable:get_DynamicTemplateType():ulong:this (FullOpts)
           4 (1.61 % of base) : 8557.dasm - Internal.Runtime.MethodTable:set_DynamicTemplateType(ulong):this (FullOpts)
          16 (1.61 % of base) : 2291.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
           4 (1.54 % of base) : 1513.dasm - Internal.Runtime.MethodTable:get_FunctionPointerParameters():Internal.Runtime.MethodTableList:this (FullOpts)
           4 (1.54 % of base) : 7914.dasm - Internal.Runtime.MethodTable:get_FunctionPointerParameters():Internal.Runtime.MethodTableList:this (FullOpts)
           4 (1.52 % of base) : 6503.dasm - Internal.Runtime.MethodTable:get_DynamicGcStaticsData():long:this (FullOpts)
           4 (1.49 % of base) : 8550.dasm - Internal.Runtime.MethodTable:set_DynamicGcStaticsData(long):this (FullOpts)
           4 (1.45 % of base) : 6499.dasm - Internal.Runtime.MethodTable:get_DynamicNonGcStaticsData():long:this (FullOpts)
           4 (1.43 % of base) : 8554.dasm - Internal.Runtime.MethodTable:set_DynamicNonGcStaticsData(long):this (FullOpts)
           4 (1.39 % of base) : 6498.dasm - Internal.Runtime.MethodTable:get_DynamicThreadStaticsIndex():long:this (FullOpts)
           4 (1.37 % of base) : 8551.dasm - Internal.Runtime.MethodTable:set_DynamicThreadStaticsIndex(long):this (FullOpts)
           4 (1.22 % of base) : 8757.dasm - Internal.Runtime.MethodTable:get_GenericArguments():Internal.Runtime.MethodTableList:this (FullOpts)
           4 (1.22 % of base) : 1089.dasm - Internal.Runtime.MethodTable:get_GenericArguments():Internal.Runtime.MethodTableList:this (FullOpts)
           4 (1.10 % of base) : 3841.dasm - System.Threading.ReaderWriterLockSlim+SpinLock:IsEnterDeprioritized(int):ubyte:this (FullOpts)
           4 (0.78 % of base) : 1961.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
           4 (0.33 % of base) : 4071.dasm - System.Net.Sockets.SocketPal:TryCompleteSendTo(System.Net.Sockets.SafeSocketHandle,System.ReadOnlySpan`1[ubyte],System.Collections.Generic.IList`1[System.ArraySegment`1[ubyte]],byref,byref,byref,int,System.ReadOnlySpan`1[ubyte],byref,byref):ubyte (FullOpts)

Top method improvements (percentages):
         -40 (-40.00 % of base) : 8016.dasm - System.RuntimeFieldHandle:Equals(System.Object):ubyte:this (FullOpts)
         -40 (-40.00 % of base) : 4928.dasm - System.RuntimeMethodHandle:Equals(System.Object):ubyte:this (FullOpts)
         -36 (-33.33 % of base) : 1061.dasm - Internal.Runtime.TypeManagerHandle:Equals(System.Object):ubyte:this (FullOpts)
         -36 (-33.33 % of base) : 97.dasm - System.Boolean:Equals(System.Object):ubyte:this (FullOpts)
         -36 (-33.33 % of base) : 69.dasm - System.Byte:Equals(System.Object):ubyte:this (FullOpts)
         -36 (-33.33 % of base) : 134.dasm - System.Char:Equals(System.Object):ubyte:this (FullOpts)
         -36 (-33.33 % of base) : 882.dasm - System.Int16:Equals(System.Object):ubyte:this (FullOpts)
         -36 (-33.33 % of base) : 79.dasm - System.Int32:Equals(System.Object):ubyte:this (FullOpts)
         -36 (-33.33 % of base) : 865.dasm - System.Int64:Equals(System.Object):ubyte:this (FullOpts)
         -36 (-33.33 % of base) : 889.dasm - System.SByte:Equals(System.Object):ubyte:this (FullOpts)
         -36 (-33.33 % of base) : 875.dasm - System.UInt16:Equals(System.Object):ubyte:this (FullOpts)
         -36 (-33.33 % of base) : 593.dasm - System.UInt32:Equals(System.Object):ubyte:this (FullOpts)
         -36 (-33.33 % of base) : 855.dasm - System.UInt64:Equals(System.Object):ubyte:this (FullOpts)
         -36 (-32.14 % of base) : 7673.dasm - System.TypeUnificationKey:Equals(System.Object):ubyte:this (FullOpts)
         -40 (-31.25 % of base) : 8507.dasm - Internal.TypeSystem.TypeSystemContext+GenericTypeInstanceKey:Equals(System.Object):ubyte:this (FullOpts)
         -36 (-29.03 % of base) : 4902.dasm - System.Runtime.Serialization.StreamingContext:Equals(System.Object):ubyte:this (FullOpts)
         -40 (-28.57 % of base) : 2789.dasm - System.Double:Equals(System.Object):ubyte:this (FullOpts)
         -40 (-28.57 % of base) : 2893.dasm - System.Single:Equals(System.Object):ubyte:this (FullOpts)
         -36 (-27.27 % of base) : 10103.dasm - Internal.Runtime.CompilerServices.FunctionPointerOps+GenericMethodDescriptorInfo:Equals(System.Object):ubyte:this (FullOpts)
         -36 (-26.47 % of base) : 723.dasm - Internal.Reflection.Core.QScopeDefinition:Equals(System.Object):ubyte:this (FullOpts)



linux x64

Diffs are based on 2,516,692 contexts (991,070 MinOpts, 1,525,622 FullOpts).

MISSED contexts: base: 8 (0.00%), diff: 1,217 (0.05%)

Overall (-35,373 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.x64.checked.mch 14,336,549 -458
benchmarks.run_pgo.linux.x64.checked.mch 71,273,045 -238
benchmarks.run_tiered.linux.x64.checked.mch 21,435,743 -138
coreclr_tests.run.linux.x64.checked.mch 403,519,732 -6,229
libraries.crossgen2.linux.x64.checked.mch 38,727,192 -1,101
libraries.pmi.linux.x64.checked.mch 60,418,410 -1,691
libraries_tests.run.linux.x64.Release.mch 335,624,331 -20,727
librariestestsnotieredcompilation.run.linux.x64.Release.mch 132,556,965 -1,757
realworld.run.linux.x64.checked.mch 13,174,803 +56
smoke_tests.nativeaot.linux.x64.checked.mch 4,234,485 -3,090

FullOpts (-35,373 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.x64.checked.mch 14,037,246 -458
benchmarks.run_pgo.linux.x64.checked.mch 47,473,056 -238
benchmarks.run_tiered.linux.x64.checked.mch 3,694,963 -138
coreclr_tests.run.linux.x64.checked.mch 123,765,030 -6,229
libraries.crossgen2.linux.x64.checked.mch 38,725,994 -1,101
libraries.pmi.linux.x64.checked.mch 60,305,553 -1,691
libraries_tests.run.linux.x64.Release.mch 151,864,638 -20,727
librariestestsnotieredcompilation.run.linux.x64.Release.mch 121,939,197 -1,757
realworld.run.linux.x64.checked.mch 12,788,919 +56
smoke_tests.nativeaot.linux.x64.checked.mch 4,233,536 -3,090

Example diffs

benchmarks.run.linux.x64.checked.mch

-35 (-44.30%) : 9883.dasm - System.Int32:Equals(System.Object):ubyte:this (FullOpts)

@@ -8,75 +8,53 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 2.50) byref -> rdi this single-def
-; V01 arg1 [V01,T00] ( 5, 3.75) ref -> rbx class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 4, 3.50) ref -> rsi class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T01] ( 3, 4.50) ref -> rax class-hnd "spilling QMark2" <System.Int32>
-; V04 tmp2 [V04,T03] ( 2, 2 ) int -> r15 "impAppendStmt" -; V05 cse0 [V05,T04] ( 4, 1.25) long -> rcx "CSE - moderate" -; V06 cse1 [V06,T05] ( 3, 1 ) long -> rsi "CSE - moderate"
+; V04 tmp2 [V04,T03] ( 2, 2 ) int -> rax "impAppendStmt"
; ; Lcl frame size = 0
-G_M40448_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M40448_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push rbp
- push r15 - push rbx - lea rbp, [rsp+0x10] - mov rbx, rsi - ; gcrRegs +[rbx] - ;; size=12 bbWeight=1 PerfScore 3.75 -G_M40448_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, byref, isz
+ mov rbp, rsp + ;; size=4 bbWeight=1 PerfScore 1.25 +G_M40448_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, byref, isz + ; gcrRegs +[rsi]
; byrRegs +[rdi]
- mov rax, rbx
+ mov rax, rsi
; gcrRegs +[rax] test rax, rax je SHORT G_M40448_IG04 ;; size=8 bbWeight=1 PerfScore 1.50
-G_M40448_IG03: ; bbWeight=0.25, gcrefRegs=0009 {rax rbx}, byrefRegs=0080 {rdi}, byref, isz - mov rsi, qword ptr [rax]
+G_M40448_IG03: ; bbWeight=0.25, gcrefRegs=0041 {rax rsi}, byrefRegs=0080 {rdi}, byref, isz
mov rcx, 0xD1FFAB1E ; System.Int32
- cmp rsi, rcx
+ cmp qword ptr [rax], rcx
je SHORT G_M40448_IG06
- ;; size=18 bbWeight=0.25 PerfScore 0.88
+ ;; size=15 bbWeight=0.25 PerfScore 1.06
G_M40448_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax rbx]
+ ; gcrRegs -[rax rsi]
; byrRegs -[rdi] xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M40448_IG05: ; bbWeight=0.50, epilog, nogc, extend
- pop rbx - pop r15
pop rbp ret
- ;; size=5 bbWeight=0.50 PerfScore 1.25 -G_M40448_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, gcvars, byref, isz - ; gcrRegs +[rbx] - ; byrRegs +[rdi] - mov r15d, dword ptr [rdi] - cmp rsi, rcx - je SHORT G_M40448_IG08 - ;; size=8 bbWeight=0.50 PerfScore 1.62 -G_M40448_IG07: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - ; byrRegs -[rdi] - mov rsi, rbx
+ ;; size=2 bbWeight=0.50 PerfScore 0.75 +G_M40448_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, gcvars, byref
; gcrRegs +[rsi]
- mov rdi, rcx - call [CORINFO_HELP_UNBOX] - ; gcrRegs -[rsi] - ;; size=12 bbWeight=0.25 PerfScore 0.88 -G_M40448_IG08: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - xor eax, eax - cmp r15d, dword ptr [rbx+0x08]
+ ; byrRegs +[rdi] + mov eax, dword ptr [rdi] + cmp eax, dword ptr [rsi+0x08]
sete al
- ;; size=9 bbWeight=0.50 PerfScore 2.12 -G_M40448_IG09: ; bbWeight=0.50, epilog, nogc, extend - pop rbx - pop r15
+ movzx rax, al + ;; size=11 bbWeight=0.50 PerfScore 3.12 +G_M40448_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop rbp ret
- ;; size=5 bbWeight=0.50 PerfScore 1.25
+ ;; size=2 bbWeight=0.50 PerfScore 0.75
-; Total bytes of code 79, prolog size 9, PerfScore 13.38, instruction count 30, allocated bytes for code 79 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 44, prolog size 4, PerfScore 8.56, instruction count 17, allocated bytes for code 44 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -84,11 +62,9 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x04 - CountOfUnwindCodes: 3
+ SizeOfProlog : 0x01 + CountOfUnwindCodes: 1
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)

-32 (-30.48%) : 6536.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan1[uint]):int (FullOpts)

@@ -9,14 +9,16 @@ ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]> ;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
-; V02 loc0 [V02,T00] ( 7, 24.50) int -> registers
+; V02 loc0 [V02,T00] ( 7, 24.50) int -> rax
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T01] ( 6, 20 ) int -> r8 "dup spill" -; V05 tmp2 [V05,T05] ( 3, 5.50) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP -; V06 tmp3 [V06,T04] ( 5, 7 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP -; V07 tmp4 [V07,T06] ( 3, 5.50) byref -> rdx single-def "field V01._reference (fldOffset=0x0)" P-INDEP -; V08 tmp5 [V08,T03] ( 6, 7.50) int -> rcx single-def "field V01._length (fldOffset=0x8)" P-INDEP -; V09 cse0 [V09,T02] ( 6, 13.50) long -> r9 multi-def "CSE - aggressive"
+; V04 tmp1 [V04,T01] ( 2, 16 ) int -> rax "dup spill" +; V05 tmp2 [V05,T07] ( 2, 5 ) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP +; V06 tmp3 [V06,T04] ( 4, 6.50) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP +; V07 tmp4 [V07,T08] ( 2, 5 ) byref -> rdx single-def "field V01._reference (fldOffset=0x0)" P-INDEP +; V08 tmp5 [V08,T03] ( 5, 7 ) int -> rcx single-def "field V01._length (fldOffset=0x8)" P-INDEP +; V09 cse0 [V09,T05] ( 3, 8.50) int -> r9 "CSE - aggressive" +; V10 cse1 [V10,T06] ( 3, 8.50) int -> r8 "CSE - aggressive" +; V11 cse2 [V11,T02] ( 3, 12 ) long -> r8 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -32,72 +34,59 @@ G_M264_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, b G_M264_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; byrRegs -[rdx rdi] cmp esi, ecx
- jl SHORT G_M264_IG12 - jmp SHORT G_M264_IG10
+ jl SHORT G_M264_IG11 + jmp SHORT G_M264_IG07
;; size=6 bbWeight=0.50 PerfScore 1.62 G_M264_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref ; byrRegs +[rdx rdi]
- mov r8d, ecx - ;; size=3 bbWeight=0.50 PerfScore 0.12
+ mov eax, ecx + ;; size=2 bbWeight=0.50 PerfScore 0.12
G_M264_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref, isz
- dec r8d - mov eax, r8d - test eax, eax - jl SHORT G_M264_IG06
+ dec eax + js SHORT G_M264_IG09
cmp eax, esi
- jae SHORT G_M264_IG14 - mov r9d, eax - mov r10d, dword ptr [rdi+4*r9] - cmp eax, ecx - jae SHORT G_M264_IG14 - cmp r10d, dword ptr [rdx+4*r9] - je SHORT G_M264_IG08 - ;; size=31 bbWeight=4 PerfScore 42.00 -G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref, isz - test r8d, r8d - jge SHORT G_M264_IG09 - xor eax, eax - ;; size=7 bbWeight=0.50 PerfScore 0.75 -G_M264_IG07: ; bbWeight=0.50, epilog, nogc, extend - pop rbp - ret - ;; size=2 bbWeight=0.50 PerfScore 0.75 -G_M264_IG08: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, gcvars, byref, isz
+ jae SHORT G_M264_IG13
mov r8d, eax
- jmp SHORT G_M264_IG05 - ;; size=5 bbWeight=2 PerfScore 4.50 -G_M264_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref, isz - cmp r8d, esi - jae SHORT G_M264_IG14 - mov r9d, r8d - mov eax, dword ptr [rdi+4*r9] - cmp r8d, ecx - jae SHORT G_M264_IG14 - cmp eax, dword ptr [rdx+4*r9] - jb SHORT G_M264_IG12 - ;; size=23 bbWeight=0.50 PerfScore 4.38 -G_M264_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov r9d, dword ptr [rdi+4*r8] + cmp eax, ecx + jae SHORT G_M264_IG13 + mov r8d, dword ptr [rdx+4*r8] + cmp r9d, r8d + je SHORT G_M264_IG05 + ;; size=28 bbWeight=4 PerfScore 37.00 +G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rdx rdi]
+ cmp r8d, r9d + ja SHORT G_M264_IG11 + ;; size=5 bbWeight=0.50 PerfScore 0.62 +G_M264_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov eax, 1 ;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M264_IG11: ; bbWeight=0.50, epilog, nogc, extend
+G_M264_IG08: ; bbWeight=0.50, epilog, nogc, extend
pop rbp ret ;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M264_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M264_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + xor eax, eax + ;; size=2 bbWeight=0.50 PerfScore 0.12 +G_M264_IG10: ; bbWeight=0.50, epilog, nogc, extend + pop rbp + ret + ;; size=2 bbWeight=0.50 PerfScore 0.75 +G_M264_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov eax, -1 ;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M264_IG13: ; bbWeight=0.50, epilog, nogc, extend
+G_M264_IG12: ; bbWeight=0.50, epilog, nogc, extend
pop rbp ret ;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M264_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M264_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 105, prolog size 4, PerfScore 58.38, instruction count 43, allocated bytes for code 105 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
+; Total bytes of code 73, prolog size 4, PerfScore 44.50, instruction count 32, allocated bytes for code 73 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
; ============================================================ Unwind Info:

-5 (-7.94%) : 4086.dasm - System.Buffers.ReadOnlySequence1[ubyte]:SeekMultiSegment(System.Buffers.ReadOnlySequenceSegment1[ubyte],System.Object,int,long,int):System.SequencePosition (FullOpts)

@@ -8,7 +8,7 @@ ; 0 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 9, 21.50) ref -> rdi class-hnd <System.Buffers.ReadOnlySequenceSegment`1[ubyte]>
+; V00 arg0 [V00,T00] ( 8, 21 ) ref -> rdi class-hnd <System.Buffers.ReadOnlySequenceSegment`1[ubyte]>
; V01 arg1 [V01,T02] ( 3, 6 ) ref -> rsi class-hnd single-def <System.Object> ; V02 arg2 [V02,T04] ( 3, 2.50) int -> rdx single-def ; V03 arg3 [V03,T01] ( 7, 9.50) long -> rcx @@ -45,7 +45,7 @@ G_M36051_IG03: ; bbWeight=2, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, ;; size=17 bbWeight=2 PerfScore 11.50 G_M36051_IG04: ; bbWeight=8, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz test rdi, rdi
- je SHORT G_M36051_IG06
+ je SHORT G_M36051_IG09
;; size=5 bbWeight=8 PerfScore 10.00 G_M36051_IG05: ; bbWeight=4, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz cmp rdi, rsi @@ -53,12 +53,10 @@ G_M36051_IG05: ; bbWeight=4, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, ;; size=5 bbWeight=4 PerfScore 5.00 G_M36051_IG06: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rsi]
- test rdi, rdi - je SHORT G_M36051_IG09
movsxd rax, edx cmp rax, rcx jl SHORT G_M36051_IG09
- ;; size=13 bbWeight=0.50 PerfScore 1.38
+ ;; size=8 bbWeight=0.50 PerfScore 0.75
G_M36051_IG07: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref mov edx, ecx mov rax, rdi @@ -76,7 +74,7 @@ G_M36051_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { int3 ;; size=10 bbWeight=0 PerfScore 0.00
-; Total bytes of code 63, prolog size 4, PerfScore 33.12, instruction count 25, allocated bytes for code 63 (MethodHash=6911732c) for method System.Buffers.ReadOnlySequence`1[ubyte]:SeekMultiSegment(System.Buffers.ReadOnlySequenceSegment`1[ubyte],System.Object,int,long,int):System.SequencePosition (FullOpts)
+; Total bytes of code 58, prolog size 4, PerfScore 32.50, instruction count 23, allocated bytes for code 58 (MethodHash=6911732c) for method System.Buffers.ReadOnlySequence`1[ubyte]:SeekMultiSegment(System.Buffers.ReadOnlySequenceSegment`1[ubyte],System.Object,int,long,int):System.SequencePosition (FullOpts)
; ============================================================ Unwind Info:

+27 (+3.00%) : 3851.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)

@@ -9,9 +9,9 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T07] ( 22, 23 ) ref -> rbx class-hnd single-def <System.Collections.Generic.List`1[System.String]>
-; V01 loc0 [V01,T02] ( 13, 47.50) ref -> r15 class-hnd exact single-def <System.String>
+; V01 loc0 [V01,T03] ( 13, 47.50) ref -> r15 class-hnd exact single-def <System.String>
; V02 loc1 [V02 ] ( 20, 54 ) struct (16) [rbp-0x38] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Span`1[ushort]>
-; V03 loc2 [V03,T00] ( 40,153.08) int -> r13
+; V03 loc2 [V03,T00] ( 42,187.08) int -> r13
; V04 loc3 [V04,T20] ( 4, 2 ) int -> rdi ;* V05 loc4 [V05 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[ushort]> ; V06 loc5 [V06,T06] ( 9, 25.50) int -> r14 @@ -46,13 +46,13 @@ ; V35 cse2 [V35,T11] ( 3, 12 ) int -> rdx "CSE - moderate" ; V36 cse3 [V36,T10] ( 3, 12 ) ref -> rsi "CSE - moderate" ; V37 cse4 [V37,T26] ( 3, 1.50) long -> r12 "CSE - moderate"
-; V38 cse5 [V38,T03] ( 15, 30.54) int -> r14 "CSE - aggressive"
+; V38 cse5 [V38,T01] ( 17, 64.54) int -> r14 "CSE - aggressive"
; V39 cse6 [V39,T25] ( 3, 1.50) ref -> rsi "CSE - moderate" ; V40 cse7 [V40,T16] ( 2, 8 ) int -> rax "CSE - moderate" ; V41 cse8 [V41,T12] ( 3, 11.88) int -> rdi "CSE - moderate" ; V42 cse9 [V42,T18] ( 7, 3.50) int -> [rbp-0x3C] spill-single-def "CSE - moderate" ; V43 cse10 [V43,T17] ( 3, 6 ) int -> rdx "CSE - moderate"
-; V44 cse11 [V44,T01] ( 3, 48 ) long -> rsi "CSE - aggressive"
+; V44 cse11 [V44,T02] ( 3, 48 ) long -> rsi "CSE - aggressive"
; ; Lcl frame size = 40 @@ -74,24 +74,24 @@ G_M28069_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=42 bbWeight=1 PerfScore 9.50 G_M28069_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref cmp dword ptr [rbx+0x10], 0
- je G_M28069_IG27
+ je G_M28069_IG26
;; size=10 bbWeight=1 PerfScore 4.00 G_M28069_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz mov rax, gword ptr [rbx+0x08] ; gcrRegs +[rax] cmp dword ptr [rax+0x08], 0
- jbe G_M28069_IG31
+ jbe G_M28069_IG30
mov r15, gword ptr [rax+0x10] ; gcrRegs +[r15] mov r14d, dword ptr [r15+0x08] cmp r14d, 100
- jg G_M28069_IG27
+ jg G_M28069_IG26
lea edi, [r14+0x02] mov eax, edi ; gcrRegs -[rax] mov esi, 2 mul rdx:rax, rsi
- jb G_M28069_IG30
+ jb G_M28069_IG29
mov rsi, rax test rsi, rsi je SHORT G_M28069_IG05 @@ -112,100 +112,100 @@ G_M28069_IG04: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 ;; size=22 bbWeight=0.50 PerfScore 2.62 G_M28069_IG05: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref test edi, edi
- jl G_M28069_IG32
+ jl G_M28069_IG31
mov bword ptr [rbp-0x38], rsi mov dword ptr [rbp-0x30], edi xor r13d, r13d test r14d, r14d
- jle G_M28069_IG14
+ jle G_M28069_IG13
;; size=27 bbWeight=0.50 PerfScore 2.38 G_M28069_IG06: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz mov edi, r13d movzx rdi, word ptr [r15+2*rdi+0x0C] cmp edi, 39
- jne SHORT G_M28069_IG10
+ jne SHORT G_M28069_IG09
;; size=14 bbWeight=4 PerfScore 14.00 G_M28069_IG07: ; bbWeight=16, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz cmp r13d, dword ptr [rbp-0x30]
- jae G_M28069_IG31
+ jae G_M28069_IG30
mov rdi, bword ptr [rbp-0x38] ; byrRegs +[rdi] mov esi, r13d
+ cmp r13d, r14d + jae G_M28069_IG30
movzx rax, word ptr [r15+2*rsi+0x0C] mov word ptr [rdi+2*rsi], ax inc r13d cmp r14d, r13d
- jle SHORT G_M28069_IG08
+ jle G_M28069_IG26 + cmp r13d, r14d + jae G_M28069_IG30
mov edi, r13d ; byrRegs -[rdi] cmp word ptr [r15+2*rdi+0x0C], 39 jne SHORT G_M28069_IG07
- ;; size=47 bbWeight=16 PerfScore 208.00 -G_M28069_IG08: ; bbWeight=2, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz - cmp r14d, r13d - jg SHORT G_M28069_IG11 - ;; size=5 bbWeight=2 PerfScore 2.50 -G_M28069_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[rbx r15] - jmp G_M28069_IG27 - ;; size=5 bbWeight=0.50 PerfScore 1.00 -G_M28069_IG10: ; bbWeight=2, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[rbx r15]
+ ;; size=69 bbWeight=16 PerfScore 248.00 +G_M28069_IG08: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz + jmp SHORT G_M28069_IG10 + ;; size=2 bbWeight=4 PerfScore 8.00 +G_M28069_IG09: ; bbWeight=2, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
cmp edi, 121
- je SHORT G_M28069_IG13
+ je SHORT G_M28069_IG12
;; size=5 bbWeight=2 PerfScore 2.50
-G_M28069_IG11: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG10: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
cmp r13d, dword ptr [rbp-0x30]
- jae G_M28069_IG31
+ jae G_M28069_IG30
mov rdi, bword ptr [rbp-0x38] ; byrRegs +[rdi] mov esi, r13d
+ cmp r13d, r14d + jae G_M28069_IG30
mov eax, r13d movzx rax, word ptr [r15+2*rax+0x0C] mov word ptr [rdi+2*rsi], ax inc r13d cmp r14d, r13d
- jg SHORT G_M28069_IG06 - ;; size=38 bbWeight=4 PerfScore 36.00 -G_M28069_IG12: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+ jg G_M28069_IG06 + ;; size=51 bbWeight=4 PerfScore 41.00 +G_M28069_IG11: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rdi]
- jmp SHORT G_M28069_IG14
+ jmp SHORT G_M28069_IG13
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M28069_IG13: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+G_M28069_IG12: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
cmp r13d, dword ptr [rbp-0x30]
- jae G_M28069_IG31
+ jae G_M28069_IG30
mov rdi, bword ptr [rbp-0x38] ; byrRegs +[rdi] mov esi, r13d mov word ptr [rdi+2*rsi], 121 ;; size=23 bbWeight=0.50 PerfScore 2.62
-G_M28069_IG14: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG13: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rdi] lea edi, [r14-0x01] cmp edi, r13d
- jle G_M28069_IG27
+ jle G_M28069_IG26
lea edi, [r13+0x01] cmp edi, r14d
- jae G_M28069_IG31
+ jae G_M28069_IG30
lea edi, [r13+0x01] mov r12d, edi cmp word ptr [r15+2*r12+0x0C], 121
- jne G_M28069_IG27
+ jne G_M28069_IG26
lea eax, [r13+0x02] mov dword ptr [rbp-0x3C], eax cmp r14d, eax
- jle SHORT G_M28069_IG15
+ jle SHORT G_M28069_IG14
cmp eax, r14d
- jae G_M28069_IG31
+ jae G_M28069_IG30
mov edi, eax cmp word ptr [r15+2*rdi+0x0C], 121 mov eax, dword ptr [rbp-0x3C]
- je G_M28069_IG27
+ je G_M28069_IG26
;; size=85 bbWeight=0.50 PerfScore 8.75
-G_M28069_IG15: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG14: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
lea edi, [r13+0x03] cmp edi, dword ptr [rbp-0x30]
- jl SHORT G_M28069_IG16
+ jl SHORT G_M28069_IG15
mov rsi, 0xD1FFAB1E ; gcrRegs +[rsi] mov rdi, rsi @@ -215,37 +215,37 @@ G_M28069_IG15: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 ; gcr arg pop 0 mov eax, dword ptr [rbp-0x3C] ;; size=31 bbWeight=0.50 PerfScore 4.00
-G_M28069_IG16: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG15: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
lea edi, [r13+0x01] cmp edi, dword ptr [rbp-0x30]
- jae G_M28069_IG31
+ jae G_M28069_IG30
mov rdi, bword ptr [rbp-0x38] ; byrRegs +[rdi] mov word ptr [rdi+2*r12], 121 cmp eax, dword ptr [rbp-0x30]
- jae G_M28069_IG31
+ jae G_M28069_IG30
mov rdi, bword ptr [rbp-0x38] mov ecx, eax mov word ptr [rdi+2*rcx], 121 lea edi, [r13+0x03] ; byrRegs -[rdi] cmp edi, dword ptr [rbp-0x30]
- jae G_M28069_IG31
+ jae G_M28069_IG30
mov rdi, bword ptr [rbp-0x38] ; byrRegs +[rdi] lea ecx, [r13+0x03] mov word ptr [rdi+2*rcx], 121 mov r13d, eax cmp r14d, r13d
- jle SHORT G_M28069_IG20
+ jle SHORT G_M28069_IG19
test r13d, r13d
- jl SHORT G_M28069_IG19
+ jl SHORT G_M28069_IG18
;; size=85 bbWeight=0.50 PerfScore 9.75
-G_M28069_IG17: ; bbWeight=3.96, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG16: ; bbWeight=3.96, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rdi] lea edi, [r13+0x02] cmp edi, dword ptr [rbp-0x30]
- jae G_M28069_IG31
+ jae G_M28069_IG30
mov rax, bword ptr [rbp-0x38] ; byrRegs +[rax] mov ecx, r13d @@ -253,29 +253,29 @@ G_M28069_IG17: ; bbWeight=3.96, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 mov word ptr [rax+2*rdi], cx inc r13d cmp r14d, r13d
- jg SHORT G_M28069_IG17
+ jg SHORT G_M28069_IG16
;; size=38 bbWeight=3.96 PerfScore 36.63
-G_M28069_IG18: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG17: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rax]
- jmp SHORT G_M28069_IG20
+ jmp SHORT G_M28069_IG19
...

+2 (+3.23%) : 5919.dasm - System.Net.Http.HttpConnectionPool:GetSslOptionsForRequest(System.Net.Http.HttpRequestMessage):System.Net.Security.SslClientAuthenticationOptions:this (FullOpts)

@@ -13,6 +13,7 @@ ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Version> ;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Version>
+; V05 cse0 [V05,T02] ( 2, 1 ) int -> rax "CSE - moderate"
; ; Lcl frame size = 0 @@ -28,12 +29,15 @@ G_M47920_IG02: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, G_M47920_IG03: ; bbWeight=0.50, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz mov rax, gword ptr [rsi+0x20] ; gcrRegs +[rax]
- cmp dword ptr [rax+0x08], 2
+ mov eax, dword ptr [rax+0x08] + ; gcrRegs -[rax] + cmp eax, 2
jl SHORT G_M47920_IG05 cmp dword ptr [rsi+0x3C], 0 je SHORT G_M47920_IG06 mov rax, gword ptr [rdi+0x98]
- ;; size=23 bbWeight=0.50 PerfScore 6.00
+ ; gcrRegs +[rax] + ;; size=25 bbWeight=0.50 PerfScore 5.62
G_M47920_IG04: ; bbWeight=0.50, epilog, nogc, extend pop rbp ret @@ -62,7 +66,7 @@ G_M47920_IG09: ; bbWeight=0.50, epilog, nogc, extend ret ;; size=2 bbWeight=0.50 PerfScore 0.75
-; Total bytes of code 62, prolog size 4, PerfScore 17.50, instruction count 20, allocated bytes for code 62 (MethodHash=a75444cf) for method System.Net.Http.HttpConnectionPool:GetSslOptionsForRequest(System.Net.Http.HttpRequestMessage):System.Net.Security.SslClientAuthenticationOptions:this (FullOpts)
+; Total bytes of code 64, prolog size 4, PerfScore 17.12, instruction count 21, allocated bytes for code 64 (MethodHash=a75444cf) for method System.Net.Http.HttpConnectionPool:GetSslOptionsForRequest(System.Net.Http.HttpRequestMessage):System.Net.Security.SslClientAuthenticationOptions:this (FullOpts)
; ============================================================ Unwind Info:

+3 (+3.70%) : 1868.dasm - System.Security.Cryptography.UniversalCryptoDecryptor:Dispose(ubyte):this (FullOpts)

@@ -8,11 +8,12 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 5, 4 ) ref -> rbx this class-hnd single-def <System.Security.Cryptography.UniversalCryptoDecryptor> -; V01 arg1 [V01,T02] ( 3, 3 ) ubyte -> rsi single-def -; V02 loc0 [V02,T03] ( 3, 1.50) ref -> rdi class-hnd single-def <<unknown class>>
+; V00 this [V00,T00] ( 5, 3.50) ref -> rbx this class-hnd single-def <System.Security.Cryptography.UniversalCryptoDecryptor> +; V01 arg1 [V01,T01] ( 3, 3 ) ubyte -> rsi single-def +; V02 loc0 [V02,T04] ( 3, 1.50) ref -> rdi class-hnd single-def <<unknown class>>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T00] ( 4, 8 ) ref -> rbx class-hnd single-def "Inlining Arg" <System.Security.Cryptography.BasicSymmetricCipher>
+; V04 tmp1 [V04,T02] ( 4, 4 ) ref -> rbx class-hnd single-def "Inlining Arg" <System.Security.Cryptography.BasicSymmetricCipher> +; V05 cse0 [V05,T03] ( 2, 2 ) int -> rdi "CSE - aggressive"
; ; Lcl frame size = 8 @@ -25,9 +26,10 @@ G_M4640_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {} ; gcrRegs +[rbx] ;; size=11 bbWeight=1 PerfScore 3.75 G_M4640_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- test sil, sil
+ movzx rdi, sil + test edi, edi
je SHORT G_M4640_IG06
- ;; size=5 bbWeight=1 PerfScore 1.25
+ ;; size=8 bbWeight=1 PerfScore 1.50
G_M4640_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz mov rdi, gword ptr [rbx+0x18] ; gcrRegs +[rdi] @@ -39,7 +41,7 @@ G_M4640_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, b call [System.Array:Clear(System.Array)] ; gcrRegs -[rax rdi] ;; size=21 bbWeight=0.50 PerfScore 3.75
-G_M4640_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M4640_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rbx, gword ptr [rbx+0x08] mov rdi, rbx ; gcrRegs +[rdi] @@ -50,13 +52,13 @@ G_M4640_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byre ; gcrRegs -[rdi] mov rdi, rbx ; gcrRegs +[rdi]
- ;; size=25 bbWeight=1 PerfScore 9.75 -G_M4640_IG05: ; bbWeight=1, epilog, nogc, extend
+ ;; size=25 bbWeight=0.50 PerfScore 4.88 +G_M4640_IG05: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 8 pop rbx pop rbp tail.jmp [System.GC:SuppressFinalize(System.Object)]
- ;; size=12 bbWeight=1 PerfScore 3.25
+ ;; size=12 bbWeight=0.50 PerfScore 1.62
G_M4640_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; gcrRegs -[rbx rdi] add rsp, 8 @@ -65,7 +67,7 @@ G_M4640_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre ret ;; size=7 bbWeight=0.50 PerfScore 1.12
-; Total bytes of code 81, prolog size 8, PerfScore 22.88, instruction count 28, allocated bytes for code 81 (MethodHash=97d5eddf) for method System.Security.Cryptography.UniversalCryptoDecryptor:Dispose(ubyte):this (FullOpts)
+; Total bytes of code 84, prolog size 8, PerfScore 16.62, instruction count 29, allocated bytes for code 84 (MethodHash=97d5eddf) for method System.Security.Cryptography.UniversalCryptoDecryptor:Dispose(ubyte):this (FullOpts)
; ============================================================ Unwind Info:

benchmarks.run_pgo.linux.x64.checked.mch

-35 (-42.68%) : 147653.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)

@@ -9,77 +9,58 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 3, 3 ) byref -> r15 this single-def -; V01 arg1 [V01,T00] ( 5, 4.50) ref -> rbx class-hnd single-def <System.Object>
+; V00 this [V00,T02] ( 3, 3 ) byref -> rdi this single-def +; V01 arg1 [V01,T00] ( 4, 4 ) ref -> rsi class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> rax class-hnd "spilling QMark2" <System.Reflection.MetadataImport> ;* V04 tmp2 [V04 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Reflection.MetadataImport> ;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref "field V04.m_keepalive (fldOffset=0x0)" P-INDEP
-; V06 tmp4 [V06,T05] ( 2, 2 ) long -> rax "field V04.m_metadataImport2 (fldOffset=0x8)" P-INDEP -; V07 cse0 [V07,T03] ( 4, 2.50) long -> rdi "CSE - aggressive" -; V08 cse1 [V08,T04] ( 3, 2 ) long -> rsi "CSE - aggressive"
+; V06 tmp4 [V06,T03] ( 2, 2 ) long -> rax "field V04.m_metadataImport2 (fldOffset=0x8)" P-INDEP +; V07 cse0 [V07,T04] ( 2, 1 ) long -> rcx "CSE - moderate"
; ; Lcl frame size = 0 G_M38955_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp
- push r15 - push rbx - lea rbp, [rsp+0x10] - mov r15, rdi - ; byrRegs +[r15] - mov rbx, rsi - ; gcrRegs +[rbx] - ;; size=15 bbWeight=1 PerfScore 4.00 -G_M38955_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref, isz - mov rax, rbx
+ mov rbp, rsp + ;; size=4 bbWeight=1 PerfScore 1.25 +G_M38955_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, byref, isz + ; gcrRegs +[rsi] + ; byrRegs +[rdi] + mov rax, rsi
; gcrRegs +[rax] test rax, rax
- je SHORT G_M38955_IG08
+ jne SHORT G_M38955_IG05
;; size=8 bbWeight=1 PerfScore 1.50
-G_M38955_IG03: ; bbWeight=0.50, gcrefRegs=0009 {rax rbx}, byrefRegs=8000 {r15}, byref, isz - mov rsi, qword ptr [rax] - mov rdi, 0xD1FFAB1E ; System.Reflection.MetadataImport - cmp rsi, rdi - jne SHORT G_M38955_IG08 - ;; size=18 bbWeight=0.50 PerfScore 1.75 -G_M38955_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref, isz
+G_M38955_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[rax rsi] + ; byrRegs -[rdi] + xor eax, eax + ;; size=2 bbWeight=1 PerfScore 0.25 +G_M38955_IG04: ; bbWeight=1, epilog, nogc, extend + pop rbp + ret + ;; size=2 bbWeight=1 PerfScore 1.50 +G_M38955_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0041 {rax rsi}, byrefRegs=0080 {rdi}, gcvars, byref, isz + ; gcrRegs +[rax rsi] + ; byrRegs +[rdi] + mov rcx, 0xD1FFAB1E ; System.Reflection.MetadataImport + cmp qword ptr [rax], rcx + jne SHORT G_M38955_IG03 + ;; size=15 bbWeight=0.50 PerfScore 2.12 +G_M38955_IG06: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, byref
; gcrRegs -[rax]
- cmp rsi, rdi - jne SHORT G_M38955_IG07 - ;; size=5 bbWeight=1 PerfScore 1.25 -G_M38955_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref - mov rax, qword ptr [rbx+0x10] - cmp rax, qword ptr [r15+0x08]
+ mov rax, qword ptr [rsi+0x10] + cmp rax, qword ptr [rdi+0x08]
sete al movzx rax, al ;; size=14 bbWeight=1 PerfScore 6.25
-G_M38955_IG06: ; bbWeight=1, epilog, nogc, extend - pop rbx - pop r15
+G_M38955_IG07: ; bbWeight=1, epilog, nogc, extend
pop rbp ret
- ;; size=5 bbWeight=1 PerfScore 2.50 -G_M38955_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, gcvars, byref, isz - mov rsi, rbx - ; gcrRegs +[rsi] - call CORINFO_HELP_UNBOX - ; gcrRegs -[rsi] - jmp SHORT G_M38955_IG05 - ;; size=10 bbWeight=0.50 PerfScore 1.62 -G_M38955_IG08: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[rbx] - ; byrRegs -[r15] - xor eax, eax - ;; size=2 bbWeight=0.25 PerfScore 0.06 -G_M38955_IG09: ; bbWeight=0.25, epilog, nogc, extend - pop rbx - pop r15 - pop rbp - ret - ;; size=5 bbWeight=0.25 PerfScore 0.62
+ ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 82, prolog size 9, PerfScore 19.56, instruction count 31, allocated bytes for code 82 (MethodHash=885867d4) for method System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 47, prolog size 4, PerfScore 14.38, instruction count 17, allocated bytes for code 47 (MethodHash=885867d4) for method System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -87,11 +68,9 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x04 - CountOfUnwindCodes: 3
+ SizeOfProlog : 0x01 + CountOfUnwindCodes: 1
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)

-35 (-42.68%) : 45195.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)

@@ -9,77 +9,58 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 3, 3 ) byref -> r15 this single-def -; V01 arg1 [V01,T00] ( 5, 4.50) ref -> rbx class-hnd single-def <System.Object>
+; V00 this [V00,T02] ( 3, 3 ) byref -> rdi this single-def +; V01 arg1 [V01,T00] ( 4, 4 ) ref -> rsi class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> rax class-hnd "spilling QMark2" <System.Reflection.MetadataImport> ;* V04 tmp2 [V04 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Reflection.MetadataImport> ;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref "field V04.m_keepalive (fldOffset=0x0)" P-INDEP
-; V06 tmp4 [V06,T05] ( 2, 2 ) long -> rax "field V04.m_metadataImport2 (fldOffset=0x8)" P-INDEP -; V07 cse0 [V07,T03] ( 4, 2.50) long -> rdi "CSE - aggressive" -; V08 cse1 [V08,T04] ( 3, 2 ) long -> rsi "CSE - aggressive"
+; V06 tmp4 [V06,T03] ( 2, 2 ) long -> rax "field V04.m_metadataImport2 (fldOffset=0x8)" P-INDEP +; V07 cse0 [V07,T04] ( 2, 1 ) long -> rcx "CSE - moderate"
; ; Lcl frame size = 0 G_M38955_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp
- push r15 - push rbx - lea rbp, [rsp+0x10] - mov r15, rdi - ; byrRegs +[r15] - mov rbx, rsi - ; gcrRegs +[rbx] - ;; size=15 bbWeight=1 PerfScore 4.00 -G_M38955_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref, isz - mov rax, rbx
+ mov rbp, rsp + ;; size=4 bbWeight=1 PerfScore 1.25 +G_M38955_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, byref, isz + ; gcrRegs +[rsi] + ; byrRegs +[rdi] + mov rax, rsi
; gcrRegs +[rax] test rax, rax
- je SHORT G_M38955_IG08
+ jne SHORT G_M38955_IG05
;; size=8 bbWeight=1 PerfScore 1.50
-G_M38955_IG03: ; bbWeight=0.50, gcrefRegs=0009 {rax rbx}, byrefRegs=8000 {r15}, byref, isz - mov rsi, qword ptr [rax] - mov rdi, 0xD1FFAB1E ; System.Reflection.MetadataImport - cmp rsi, rdi - jne SHORT G_M38955_IG08 - ;; size=18 bbWeight=0.50 PerfScore 1.75 -G_M38955_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref, isz
+G_M38955_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[rax rsi] + ; byrRegs -[rdi] + xor eax, eax + ;; size=2 bbWeight=1 PerfScore 0.25 +G_M38955_IG04: ; bbWeight=1, epilog, nogc, extend + pop rbp + ret + ;; size=2 bbWeight=1 PerfScore 1.50 +G_M38955_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0041 {rax rsi}, byrefRegs=0080 {rdi}, gcvars, byref, isz + ; gcrRegs +[rax rsi] + ; byrRegs +[rdi] + mov rcx, 0xD1FFAB1E ; System.Reflection.MetadataImport + cmp qword ptr [rax], rcx + jne SHORT G_M38955_IG03 + ;; size=15 bbWeight=0.50 PerfScore 2.12 +G_M38955_IG06: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, byref
; gcrRegs -[rax]
- cmp rsi, rdi - jne SHORT G_M38955_IG07 - ;; size=5 bbWeight=1 PerfScore 1.25 -G_M38955_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref - mov rax, qword ptr [rbx+0x10] - cmp rax, qword ptr [r15+0x08]
+ mov rax, qword ptr [rsi+0x10] + cmp rax, qword ptr [rdi+0x08]
sete al movzx rax, al ;; size=14 bbWeight=1 PerfScore 6.25
-G_M38955_IG06: ; bbWeight=1, epilog, nogc, extend - pop rbx - pop r15
+G_M38955_IG07: ; bbWeight=1, epilog, nogc, extend
pop rbp ret
- ;; size=5 bbWeight=1 PerfScore 2.50 -G_M38955_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, gcvars, byref, isz - mov rsi, rbx - ; gcrRegs +[rsi] - call CORINFO_HELP_UNBOX - ; gcrRegs -[rsi] - jmp SHORT G_M38955_IG05 - ;; size=10 bbWeight=0.50 PerfScore 1.62 -G_M38955_IG08: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[rbx] - ; byrRegs -[r15] - xor eax, eax - ;; size=2 bbWeight=0.25 PerfScore 0.06 -G_M38955_IG09: ; bbWeight=0.25, epilog, nogc, extend - pop rbx - pop r15 - pop rbp - ret - ;; size=5 bbWeight=0.25 PerfScore 0.62
+ ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 82, prolog size 9, PerfScore 19.56, instruction count 31, allocated bytes for code 82 (MethodHash=885867d4) for method System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 47, prolog size 4, PerfScore 14.38, instruction count 17, allocated bytes for code 47 (MethodHash=885867d4) for method System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -87,11 +68,9 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x04 - CountOfUnwindCodes: 3
+ SizeOfProlog : 0x01 + CountOfUnwindCodes: 1
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)

-29 (-29.00%) : 137448.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan1[uint]):int (Tier1)

@@ -5,19 +5,21 @@ ; optimized using Dynamic PGO ; rbp based frame ; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 8127
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 8127
; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]> ;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
-; V02 loc0 [V02,T02] ( 7, 6.95) int -> registers
+; V02 loc0 [V02,T00] ( 7, 6.95) int -> rax
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T00] ( 6, 11.74) int -> rax "dup spill" -; V05 tmp2 [V05,T05] ( 3, 2.97) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP -; V06 tmp3 [V06,T03] ( 5, 4.00) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP -; V07 tmp4 [V07,T06] ( 3, 2.97) byref -> rdx single-def "field V01._reference (fldOffset=0x0)" P-INDEP -; V08 tmp5 [V08,T01] ( 6, 4.97) int -> rcx single-def "field V01._length (fldOffset=0x8)" P-INDEP -; V09 cse0 [V09,T04] ( 6, 5.90) long -> r9 multi-def "CSE - aggressive"
+; V04 tmp1 [V04,T05] ( 2, 3.99) int -> rax "dup spill" +; V05 tmp2 [V05,T03] ( 2, 2.00) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP +; V06 tmp3 [V06,T02] ( 4, 3.03) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP +; V07 tmp4 [V07,T04] ( 2, 2.00) byref -> rdx single-def "field V01._reference (fldOffset=0x0)" P-INDEP +; V08 tmp5 [V08,T01] ( 5, 4.00) int -> rcx single-def "field V01._length (fldOffset=0x8)" P-INDEP +; V09 cse0 [V09,T07] ( 3, 2.96) int -> r9 "CSE - aggressive" +; V10 cse1 [V10,T08] ( 3, 2.96) int -> r8 "CSE - aggressive" +; V11 cse2 [V11,T06] ( 3, 2.99) long -> r8 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -28,76 +30,61 @@ G_M264_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, n G_M264_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref, isz ; byrRegs +[rdx rdi] cmp esi, ecx
- jne SHORT G_M264_IG09
+ jne SHORT G_M264_IG10
;; size=4 bbWeight=1 PerfScore 1.25 G_M264_IG03: ; bbWeight=0.97, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref mov eax, ecx ;; size=2 bbWeight=0.97 PerfScore 0.24 G_M264_IG04: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref, isz dec eax
- mov r8d, eax - test r8d, r8d - jl SHORT G_M264_IG05 - cmp r8d, esi - jae SHORT G_M264_IG12 - mov r9d, r8d - mov r10d, dword ptr [rdi+4*r9] - cmp r8d, ecx - jae SHORT G_M264_IG12 - cmp r10d, dword ptr [rdx+4*r9] - je SHORT G_M264_IG08 - ;; size=33 bbWeight=1.00 PerfScore 10.47 -G_M264_IG05: ; bbWeight=0.97, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref, isz - test eax, eax - jl SHORT G_M264_IG13
+ js SHORT G_M264_IG08
cmp eax, esi
- jae SHORT G_M264_IG12 - mov r9d, eax - mov edi, dword ptr [rdi+4*r9] - ; byrRegs -[rdi]
+ jae SHORT G_M264_IG13 + mov r8d, eax + mov r9d, dword ptr [rdi+4*r8]
cmp eax, ecx
- jae SHORT G_M264_IG12 - cmp edi, dword ptr [rdx+4*r9] - jb SHORT G_M264_IG10 - ;; size=25 bbWeight=0.97 PerfScore 9.69
+ jae SHORT G_M264_IG13 + mov r8d, dword ptr [rdx+4*r8] + cmp r9d, r8d + je SHORT G_M264_IG04 + ;; size=28 bbWeight=1.00 PerfScore 9.23 +G_M264_IG05: ; bbWeight=0.97, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ; byrRegs -[rdx rdi] + cmp r8d, r9d + ja SHORT G_M264_IG11 + ;; size=5 bbWeight=0.97 PerfScore 1.21
G_M264_IG06: ; bbWeight=0.74, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[rdx]
mov eax, 1 ;; size=5 bbWeight=0.74 PerfScore 0.18 G_M264_IG07: ; bbWeight=0.74, epilog, nogc, extend pop rbp ret ;; size=2 bbWeight=0.74 PerfScore 1.10
-G_M264_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, gcvars, byref, isz - ; byrRegs +[rdx rdi] - mov eax, r8d - jmp SHORT G_M264_IG04 - ;; size=5 bbWeight=0.50 PerfScore 1.12 -G_M264_IG09: ; bbWeight=0.03, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ; byrRegs -[rdx rdi]
+G_M264_IG08: ; bbWeight=0.97, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + xor eax, eax + ;; size=2 bbWeight=0.97 PerfScore 0.24 +G_M264_IG09: ; bbWeight=0.97, epilog, nogc, extend + pop rbp + ret + ;; size=2 bbWeight=0.97 PerfScore 1.45 +G_M264_IG10: ; bbWeight=0.03, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
cmp esi, ecx jge SHORT G_M264_IG06 ;; size=4 bbWeight=0.03 PerfScore 0.04
-G_M264_IG10: ; bbWeight=0.26, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M264_IG11: ; bbWeight=0.26, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov eax, -1 ;; size=5 bbWeight=0.26 PerfScore 0.07
-G_M264_IG11: ; bbWeight=0.26, epilog, nogc, extend
+G_M264_IG12: ; bbWeight=0.26, epilog, nogc, extend
pop rbp ret ;; size=2 bbWeight=0.26 PerfScore 0.40
-G_M264_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M264_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0
- ;; size=5 bbWeight=0 PerfScore 0.00 -G_M264_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - xor eax, eax - ;; size=2 bbWeight=0 PerfScore 0.00 -G_M264_IG14: ; bbWeight=0, epilog, nogc, extend - pop rbp - ret - ;; size=2 bbWeight=0 PerfScore 0.00
+ int3 + ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 100, prolog size 4, PerfScore 25.81, instruction count 41, allocated bytes for code 100 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
+; Total bytes of code 71, prolog size 4, PerfScore 16.66, instruction count 31, allocated bytes for code 71 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
; ============================================================ Unwind Info:

+31 (+9.84%) : 96806.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_IsDelaySigned():ubyte:this (Tier1)

@@ -20,16 +20,16 @@ ;* V08 tmp6 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions> ;* V09 tmp7 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V10 tmp8 [V10,T10] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
-; V11 tmp9 [V11,T03] ( 5, 5 ) ubyte -> r14 "Inline stloc first use temp"
+; V11 tmp9 [V11,T06] ( 5, 3 ) ubyte -> r14 "Inline stloc first use temp"
;* V12 tmp10 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]> ;* V13 tmp11 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
-; V14 tmp12 [V14,T06] ( 5, 4 ) ref -> r13 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]> -; V15 tmp13 [V15,T04] ( 3, 4.50) ref -> rsi single-def "CASTCLASS eval op1"
+; V14 tmp12 [V14,T05] ( 5, 4 ) ref -> r13 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]> +; V15 tmp13 [V15,T03] ( 3, 4.50) ref -> rsi single-def "CASTCLASS eval op1"
; V16 tmp14 [V16,T08] ( 3, 2.50) long -> rdi "fgMakeTemp is creating a new local variable"
-; V17 tmp15 [V17,T01] ( 5, 7.50) ref -> rax class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]> -; V18 tmp16 [V18,T05] ( 3, 4.50) ref -> rsi single-def "CASTCLASS eval op1"
+; V17 tmp15 [V17,T01] ( 5, 5.50) ref -> rax class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]> +; V18 tmp16 [V18,T04] ( 3, 4.50) ref -> rsi single-def "CASTCLASS eval op1"
; V19 tmp17 [V19,T09] ( 3, 2.50) long -> rdi "fgMakeTemp is creating a new local variable"
-; V20 tmp18 [V20,T02] ( 5, 7.50) ref -> rax class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
+; V20 tmp18 [V20,T02] ( 5, 5.50) ref -> rcx class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
;* V21 tmp19 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]> ; V22 tmp20 [V22 ] ( 4, 2 ) ubyte -> [rbp-0x28] do-not-enreg[X] addr-exposed "field V01.hasValue (fldOffset=0x0)" P-DEP ; V23 tmp21 [V23 ] ( 3, 1 ) ubyte -> [rbp-0x27] do-not-enreg[X] addr-exposed "field V01.value (fldOffset=0x1)" P-DEP @@ -57,16 +57,16 @@ G_M43884_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcrRegs -[rdi] mov word ptr [rbp-0x28], di cmp byte ptr [rbp-0x28], 0
- jne G_M43884_IG14
+ jne G_M43884_IG12
cmp byte ptr [r15+0x88], 0
- jne G_M43884_IG16
+ jne G_M43884_IG14
xor r14d, r14d mov r13, gword ptr [rbx+0x80] ; gcrRegs +[r13] test r13, r13
- je G_M43884_IG18
+ je G_M43884_IG16
test byte ptr [r13+0x18], 2
- je G_M43884_IG18
+ je G_M43884_IG16
;; size=74 bbWeight=1 PerfScore 21.50 G_M43884_IG03: ; bbWeight=1, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r15] @@ -75,60 +75,58 @@ G_M43884_IG03: ; bbWeight=1, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, mov rax, rsi ; gcrRegs +[rax] test rax, rax
- je SHORT G_M43884_IG07
+ je SHORT G_M43884_IG06
;; size=12 bbWeight=1 PerfScore 3.50
-G_M43884_IG04: ; bbWeight=0.50, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M43884_IG04: ; bbWeight=0.50, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[r13] mov rdi, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol] cmp qword ptr [rax], rdi
- je SHORT G_M43884_IG06 - ;; size=15 bbWeight=0.50 PerfScore 2.12
+ je G_M43884_IG17 + ;; size=19 bbWeight=0.50 PerfScore 2.12
G_M43884_IG05: ; bbWeight=0.25, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref ; gcrRegs -[rax] call CORINFO_HELP_CHKCASTCLASS_SPECIAL ; gcrRegs -[rsi] +[rax]
- ;; size=5 bbWeight=0.25 PerfScore 0.25 -G_M43884_IG06: ; bbWeight=1, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref - movzx r14, byte ptr [rax+0x84] - ;; size=8 bbWeight=1 PerfScore 2.00 -G_M43884_IG07: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jmp G_M43884_IG17 + ;; size=10 bbWeight=0.25 PerfScore 0.75 +G_M43884_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax] test r14d, r14d
- jne SHORT G_M43884_IG12
+ jne SHORT G_M43884_IG10
cmp gword ptr [rbx+0x88], 0
- je G_M43884_IG19
+ je G_M43884_IG18
;; size=19 bbWeight=1 PerfScore 5.25
-G_M43884_IG08: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M43884_IG07: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rdi, gword ptr [rbx+0x88] ; gcrRegs +[rdi] mov rsi, gword ptr [rdi+0x08] ; gcrRegs +[rsi]
- mov rax, rsi - ; gcrRegs +[rax] - test rax, rax - je SHORT G_M43884_IG12
+ mov rcx, rsi + ; gcrRegs +[rcx] + test rcx, rcx + je SHORT G_M43884_IG10
;; size=19 bbWeight=1 PerfScore 5.50
-G_M43884_IG09: ; bbWeight=0.50, gcrefRegs=0041 {rax rsi}, byrefRegs=0000 {}, byref, isz
+G_M43884_IG08: ; bbWeight=0.50, gcrefRegs=0042 {rcx rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx rdi] mov rdi, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]
- cmp qword ptr [rax], rdi - je SHORT G_M43884_IG11 - ;; size=15 bbWeight=0.50 PerfScore 2.12 -G_M43884_IG10: ; bbWeight=0.25, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax]
+ cmp qword ptr [rcx], rdi + je G_M43884_IG19 + ;; size=19 bbWeight=0.50 PerfScore 2.12 +G_M43884_IG09: ; bbWeight=0.25, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref + ; gcrRegs -[rcx]
call CORINFO_HELP_CHKCASTCLASS_SPECIAL ; gcrRegs -[rsi] +[rax]
- ;; size=5 bbWeight=0.25 PerfScore 0.25 -G_M43884_IG11: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref - movzx r14, byte ptr [rax+0x84] - ;; size=8 bbWeight=1 PerfScore 2.00 -G_M43884_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax]
+ mov rcx, rax + ; gcrRegs +[rcx] + jmp G_M43884_IG19 + ;; size=13 bbWeight=0.25 PerfScore 0.81 +G_M43884_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[rax rcx]
xor eax, eax cmp r14d, 2 sete al ;; size=9 bbWeight=1 PerfScore 1.50
-G_M43884_IG13: ; bbWeight=1, epilog, nogc, extend
+G_M43884_IG11: ; bbWeight=1, epilog, nogc, extend
add rsp, 16 pop rbx pop r13 @@ -137,7 +135,7 @@ G_M43884_IG13: ; bbWeight=1, epilog, nogc, extend pop rbp ret ;; size=13 bbWeight=1 PerfScore 3.75
-G_M43884_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, gcvars, byref
+G_M43884_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[r15] mov di, word ptr [r15+0x98] mov word ptr [rbp-0x28], di @@ -146,6 +144,18 @@ G_M43884_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8000 { ; gcrRegs -[r15] nop ;; size=23 bbWeight=0 PerfScore 0.00
+G_M43884_IG13: ; bbWeight=0, epilog, nogc, extend + add rsp, 16 + pop rbx + pop r13 + pop r14 + pop r15 + pop rbp + ret + ;; size=13 bbWeight=0 PerfScore 0.00 +G_M43884_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + xor eax, eax + ;; size=2 bbWeight=0 PerfScore 0.00
G_M43884_IG15: ; bbWeight=0, epilog, nogc, extend add rsp, 16 pop rbx @@ -155,19 +165,7 @@ G_M43884_IG15: ; bbWeight=0, epilog, nogc, extend pop rbp ret ;; size=13 bbWeight=0 PerfScore 0.00
-G_M43884_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - xor eax, eax - ;; size=2 bbWeight=0 PerfScore 0.00 -G_M43884_IG17: ; bbWeight=0, epilog, nogc, extend - add rsp, 16 - pop rbx - pop r13 - pop r14 - pop r15 - pop rbp - ret - ;; size=13 bbWeight=0 PerfScore 0.00 -G_M43884_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+G_M43884_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rbx] mov rdi, rbx ; gcrRegs +[rdi] @@ -177,8 +175,13 @@ G_M43884_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 { ; gcrRegs +[r13] jmp G_M43884_IG03 ;; size=21 bbWeight=0 PerfScore 0.00
-G_M43884_IG19: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - ; gcrRegs -[r13]
+G_M43884_IG17: ; bbWeight=0, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref + ; gcrRegs -[r13] +[rax] + movzx r14, byte ptr [rax+0x84] + jmp G_M43884_IG06 + ;; size=13 bbWeight=0 PerfScore 0.00 +G_M43884_IG18: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref + ; gcrRegs -[rax]
lea rsi, bword ptr [rbx+0x88] ; byrRegs +[rsi] mov rdi, rbx @@ -186,10 +189,15 @@ G_M43884_IG19: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr call [<unknown method>] ; gcrRegs -[rdi] ; byrRegs -[rsi]
- jmp G_M43884_IG08
+ jmp G_M43884_IG07
;; size=21 bbWeight=0 PerfScore 0.00
+G_M43884_IG19: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref + ; gcrRegs -[rbx] +[rcx] + movzx r14, byte ptr [rcx+0x84] + jmp G_M43884_IG10 + ;; size=13 bbWeight=0 PerfScore 0.00
-; Total bytes of code 315, prolog size 17, PerfScore 55.75, instruction count 83, allocated bytes for code 315 (MethodHash=8b225493) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_IsDelaySigned():ubyte:this (Tier1)
+; Total bytes of code 346, prolog size 17, PerfScore 52.81, instruction count 88, allocated bytes for code 346 (MethodHash=8b225493) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_IsDelaySigned():ubyte:this (Tier1)
; ============================================================ Unwind Info:

+19 (+10.44%) : 98035.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)

@@ -9,18 +9,18 @@ ; 3 inlinees with PGO data; 8 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 9, 5 ) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol> -; V01 loc0 [V01,T03] ( 5, 5 ) int -> r15
+; V00 this [V00,T00] ( 10, 5 ) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol> +; V01 loc0 [V01,T08] ( 5, 2 ) int -> r15
;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]> ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
-; V05 tmp2 [V05,T06] ( 5, 4 ) ref -> r14 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]> -; V06 tmp3 [V06,T04] ( 3, 4.50) ref -> rsi single-def "CASTCLASS eval op1" -; V07 tmp4 [V07,T07] ( 3, 2.50) long -> rdi "fgMakeTemp is creating a new local variable" -; V08 tmp5 [V08,T00] ( 5, 7.50) ref -> rax class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]> -; V09 tmp6 [V09,T05] ( 3, 4.50) ref -> rsi single-def "CASTCLASS eval op1" -; V10 tmp7 [V10,T08] ( 3, 2.50) long -> rdi "fgMakeTemp is creating a new local variable" -; V11 tmp8 [V11,T01] ( 5, 7.50) ref -> rax class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
+; V05 tmp2 [V05,T05] ( 5, 4 ) ref -> r14 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]> +; V06 tmp3 [V06,T03] ( 3, 4.50) ref -> rsi single-def "CASTCLASS eval op1" +; V07 tmp4 [V07,T06] ( 3, 2.50) long -> rdi "fgMakeTemp is creating a new local variable" +; V08 tmp5 [V08,T01] ( 5, 5.50) ref -> rax class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]> +; V09 tmp6 [V09,T04] ( 3, 4.50) ref -> rsi single-def "CASTCLASS eval op1" +; V10 tmp7 [V10,T07] ( 3, 2.50) long -> rdi "fgMakeTemp is creating a new local variable" +; V11 tmp8 [V11,T02] ( 5, 5.50) ref -> rcx class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
;* V12 tmp9 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]> ; ; Lcl frame size = 8 @@ -40,9 +40,9 @@ G_M4380_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byre mov r14, gword ptr [rbx+0x80] ; gcrRegs +[r14] test r14, r14
- je SHORT G_M4380_IG14
+ je SHORT G_M4380_IG12
test byte ptr [r14+0x18], 2
- je SHORT G_M4380_IG14
+ je SHORT G_M4380_IG12
;; size=22 bbWeight=1 PerfScore 7.50 G_M4380_IG03: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz mov rsi, gword ptr [r14+0x08] @@ -50,56 +50,54 @@ G_M4380_IG03: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, mov rax, rsi ; gcrRegs +[rax] test rax, rax
- je SHORT G_M4380_IG07
+ je SHORT G_M4380_IG06
;; size=12 bbWeight=1 PerfScore 3.50 G_M4380_IG04: ; bbWeight=0.50, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r14] mov rdi, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol] cmp qword ptr [rax], rdi
- je SHORT G_M4380_IG06
+ je SHORT G_M4380_IG13
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M4380_IG05: ; bbWeight=0.25, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+G_M4380_IG05: ; bbWeight=0.25, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax] call CORINFO_HELP_CHKCASTCLASS_SPECIAL ; gcrRegs -[rsi] +[rax]
- ;; size=5 bbWeight=0.25 PerfScore 0.25 -G_M4380_IG06: ; bbWeight=1, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref - mov r15d, dword ptr [rax+0x80] - ;; size=7 bbWeight=1 PerfScore 2.00 -G_M4380_IG07: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M4380_IG13 + ;; size=7 bbWeight=0.25 PerfScore 0.75 +G_M4380_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax] cmp gword ptr [rbx+0x88], 0
- je SHORT G_M4380_IG15
+ je SHORT G_M4380_IG14
;; size=10 bbWeight=1 PerfScore 4.00
-G_M4380_IG08: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M4380_IG07: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rdi, gword ptr [rbx+0x88] ; gcrRegs +[rdi] mov rsi, gword ptr [rdi+0x08] ; gcrRegs +[rsi]
- mov rax, rsi - ; gcrRegs +[rax] - test rax, rax - je SHORT G_M4380_IG12
+ mov rcx, rsi + ; gcrRegs +[rcx] + test rcx, rcx + je SHORT G_M4380_IG10
;; size=19 bbWeight=1 PerfScore 5.50
-G_M4380_IG09: ; bbWeight=0.50, gcrefRegs=0041 {rax rsi}, byrefRegs=0000 {}, byref, isz
+G_M4380_IG08: ; bbWeight=0.50, gcrefRegs=0042 {rcx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbx rdi] mov rdi, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]
- cmp qword ptr [rax], rdi - je SHORT G_M4380_IG11
+ cmp qword ptr [rcx], rdi + je SHORT G_M4380_IG15
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M4380_IG10: ; bbWeight=0.25, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax]
+G_M4380_IG09: ; bbWeight=0.25, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rcx]
call CORINFO_HELP_CHKCASTCLASS_SPECIAL ; gcrRegs -[rsi] +[rax]
- ;; size=5 bbWeight=0.25 PerfScore 0.25 -G_M4380_IG11: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref - or r15d, dword ptr [rax+0x80] - ;; size=7 bbWeight=1 PerfScore 3.00 -G_M4380_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax]
+ mov rcx, rax + ; gcrRegs +[rcx] + jmp SHORT G_M4380_IG15 + ;; size=10 bbWeight=0.25 PerfScore 0.81 +G_M4380_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[rax rcx]
mov eax, r15d ;; size=3 bbWeight=1 PerfScore 0.25
-G_M4380_IG13: ; bbWeight=1, epilog, nogc, extend
+G_M4380_IG11: ; bbWeight=1, epilog, nogc, extend
add rsp, 8 pop rbx pop r14 @@ -107,7 +105,7 @@ G_M4380_IG13: ; bbWeight=1, epilog, nogc, extend pop rbp ret ;; size=11 bbWeight=1 PerfScore 3.25
-G_M4380_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M4380_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rbx] mov rdi, rbx ; gcrRegs +[rdi] @@ -117,8 +115,14 @@ G_M4380_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {r ; gcrRegs +[r14] jmp SHORT G_M4380_IG03 ;; size=18 bbWeight=0 PerfScore 0.00
-G_M4380_IG15: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r14]
+G_M4380_IG13: ; bbWeight=0, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r14] +[rax] + mov r15d, dword ptr [rax+0x80] + cmp gword ptr [rbx+0x88], 0 + jne SHORT G_M4380_IG07 + ;; size=17 bbWeight=0 PerfScore 0.00 +G_M4380_IG14: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rax]
lea rsi, bword ptr [rbx+0x88] ; byrRegs +[rsi] mov rdi, rbx @@ -126,10 +130,15 @@ G_M4380_IG15: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byre call [<unknown method>] ; gcrRegs -[rdi] ; byrRegs -[rsi]
- jmp SHORT G_M4380_IG08
+ jmp SHORT G_M4380_IG07
;; size=18 bbWeight=0 PerfScore 0.00
+G_M4380_IG15: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rbx] +[rcx] + or r15d, dword ptr [rcx+0x80] + jmp SHORT G_M4380_IG10 + ;; size=9 bbWeight=0 PerfScore 0.00
-; Total bytes of code 182, prolog size 12, PerfScore 39.50, instruction count 49, allocated bytes for code 182 (MethodHash=64b3eee3) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)
+; Total bytes of code 201, prolog size 12, PerfScore 35.56, instruction count 55, allocated bytes for code 201 (MethodHash=64b3eee3) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)
; ============================================================ Unwind Info:

+47 (+13.17%) : 145196.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:TryMatch(byref,int,byref,uint,byref):ubyte:this (Tier1)

@@ -5,22 +5,22 @@ ; optimized using Dynamic PGO ; rbp based frame ; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 45560
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 45560
; 8 inlinees with PGO data; 19 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T03] ( 3, 3 ) ref -> r14 this class-hnd single-def <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]> -; V01 arg1 [V01,T01] ( 4, 4 ) byref -> r15 single-def -; V02 arg2 [V02,T00] ( 5, 4 ) int -> rbx single-def -; V03 arg3 [V03,T04] ( 3, 3 ) byref -> r13 single-def
+; V00 this [V00,T03] ( 4, 3 ) ref -> r14 this class-hnd single-def <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]> +; V01 arg1 [V01,T01] ( 5, 4 ) byref -> r15 single-def +; V02 arg2 [V02,T00] ( 6, 4 ) int -> rbx single-def +; V03 arg3 [V03,T04] ( 4, 3 ) byref -> r13 single-def
; V04 arg4 [V04,T06] ( 3, 3 ) int -> r8 single-def ; V05 arg5 [V05,T05] ( 3, 3 ) byref -> r12 single-def
-; V06 loc0 [V06,T09] ( 3, 3 ) int -> [rbp-0x2C] spill-single-def -; V07 loc1 [V07,T08] ( 3, 3 ) byref -> r13
+; V06 loc0 [V06,T09] ( 4, 3 ) int -> [rbp-0x2C] spill-single-def +; V07 loc1 [V07,T08] ( 5, 3 ) byref -> r13
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V09 tmp1 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V10 tmp2 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V11 tmp3 [V11,T07] ( 3, 4 ) int -> r14 "Inlining Arg"
+; V11 tmp3 [V11,T07] ( 4, 4 ) int -> r14 "Inlining Arg"
;* V12 tmp4 [V12 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V13 tmp5 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V14 tmp6 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -29,7 +29,7 @@ ;* V17 tmp9 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V18 tmp10 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V19 tmp11 [V19 ] ( 0, 0 ) byref -> zero-ref "Spilling op1 side effects for Unsafe.ByteOffset"
-; V20 tmp12 [V20,T02] ( 8, 5 ) long -> [rbp-0x38] spill-single-def "Inline stloc first use temp"
+; V20 tmp12 [V20,T02] ( 10, 5 ) long -> [rbp-0x38] "Inline stloc first use temp"
;* V21 tmp13 [V21 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V22 tmp14 [V22 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V23 tmp15 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -83,45 +83,33 @@ G_M44984_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov r12, r9 ; byrRegs +[r12] ;; size=33 bbWeight=1 PerfScore 8.00
-G_M44984_IG02: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=B000 {r12 r13 r15}, byref - xor eax, eax - tzcnt eax, r8d - mov dword ptr [rbp-0x2C], eax - test al, 1 - jne G_M44984_IG09 - ;; size=18 bbWeight=1 PerfScore 4.50 -G_M44984_IG03: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=B000 {r12 r13 r15}, byref, isz - cdqe
+G_M44984_IG02: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=B000 {r12 r13 r15}, byref, isz + xor ecx, ecx + tzcnt ecx, r8d + mov dword ptr [rbp-0x2C], ecx + test cl, 1 + jne SHORT G_M44984_IG10 + movsxd rax, ecx
add r13, rax
- mov rdi, gword ptr [r14+0x10] - ; gcrRegs +[rdi] - mov r14d, dword ptr [rdi+0x08]
+ mov rax, gword ptr [r14+0x10] + ; gcrRegs +[rax] + mov r14d, dword ptr [rax+0x08]
; gcrRegs -[r14] test ebx, ebx
- jge SHORT G_M44984_IG04 - mov rdi, 0xD1FFAB1E - mov rsi, 0xD1FFAB1E - ; gcrRegs +[rsi] - call [<unknown method>] - ; gcrRegs -[rsi rdi] - mov rdi, 0xD1FFAB1E - ; gcrRegs +[rdi] - mov rsi, 0xD1FFAB1E - ; gcrRegs +[rsi] - call [<unknown method>] - ; gcrRegs -[rsi rdi] - ;; size=69 bbWeight=1 PerfScore 12.75 -G_M44984_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=B000 {r12 r13 r15}, byref, isz
+ jl G_M44984_IG11 + ;; size=37 bbWeight=1 PerfScore 10.25 +G_M44984_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=B000 {r12 r13 r15}, byref, isz + ; gcrRegs -[rax]
mov rax, r13 ; byrRegs +[rax] sub rax, r15 ; byrRegs -[rax]
- mov qword ptr [rbp-0x38], rax - test rax, rax - jl SHORT G_M44984_IG10
+ js SHORT G_M44984_IG09 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M44984_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=B000 {r12 r13 r15}, byref, isz
test al, 1 jne SHORT G_M44984_IG08
- ;; size=19 bbWeight=1 PerfScore 4.00
+ ;; size=4 bbWeight=1 PerfScore 1.25
G_M44984_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=B000 {r12 r13 r15}, byref mov rdi, rax shr rdi, 63 @@ -129,7 +117,7 @@ G_M44984_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=B000 {r12 r13 r sar rax, 1 sub ebx, eax cmp ebx, r14d
- jl G_M44984_IG12
+ jl G_M44984_IG14
;; size=24 bbWeight=1 PerfScore 3.00 G_M44984_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=B000 {r12 r13 r15}, byref sub r13, r15 @@ -148,11 +136,16 @@ G_M44984_IG07: ; bbWeight=1, epilog, nogc, extend pop rbp ret ;; size=15 bbWeight=1 PerfScore 4.25
-G_M44984_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=B000 {r12 r13 r15}, gcvars, byref, isz
+G_M44984_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=B000 {r12 r13 r15}, gcvars, byref
; byrRegs +[r13]
- jmp SHORT G_M44984_IG11 - ;; size=2 bbWeight=0.50 PerfScore 1.00 -G_M44984_IG09: ; bbWeight=0, gcrefRegs=4000 {r14}, byrefRegs=B000 {r12 r13 r15}, byref
+ mov qword ptr [rbp-0x38], rax + jmp G_M44984_IG13 + ;; size=9 bbWeight=0.50 PerfScore 1.50 +G_M44984_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=B000 {r12 r13 r15}, byref, isz + mov qword ptr [rbp-0x38], rax + jmp SHORT G_M44984_IG12 + ;; size=6 bbWeight=0.50 PerfScore 1.50 +G_M44984_IG10: ; bbWeight=0, gcrefRegs=4000 {r14}, byrefRegs=B000 {r12 r13 r15}, byref, isz
; gcrRegs +[r14] mov rdi, 0xD1FFAB1E ; gcrRegs +[rdi] @@ -160,11 +153,38 @@ G_M44984_IG09: ; bbWeight=0, gcrefRegs=4000 {r14}, byrefRegs=B000 {r12 r1 ; gcrRegs +[rsi] call [<unknown method>] ; gcrRegs -[rsi rdi]
- mov eax, dword ptr [rbp-0x2C] - jmp G_M44984_IG03 - ;; size=34 bbWeight=0 PerfScore 0.00 -G_M44984_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=B000 {r12 r13 r15}, byref, isz
+ movsxd rdi, dword ptr [rbp-0x2C] + add r13, rdi + mov rdi, gword ptr [r14+0x10] + ; gcrRegs +[rdi] + mov r14d, dword ptr [rdi+0x08]
; gcrRegs -[r14]
+ test ebx, ebx + jge SHORT G_M44984_IG03 + ;; size=45 bbWeight=0 PerfScore 0.00 +G_M44984_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=B000 {r12 r13 r15}, byref + ; gcrRegs -[rdi] + mov rdi, 0xD1FFAB1E + ; gcrRegs +[rdi] + mov rsi, 0xD1FFAB1E + ; gcrRegs +[rsi] + call [<unknown method>] + ; gcrRegs -[rsi rdi] + mov rdi, 0xD1FFAB1E + ; gcrRegs +[rdi] + mov rsi, 0xD1FFAB1E + ; gcrRegs +[rsi] + call [<unknown method>] + ; gcrRegs -[rsi rdi] + mov rax, r13 + ; byrRegs +[rax] + sub rax, r15 + ; byrRegs -[rax] + mov qword ptr [rbp-0x38], rax + test rax, rax + jge G_M44984_IG16 + ;; size=71 bbWeight=0 PerfScore 0.00 +G_M44984_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=B000 {r12 r13 r15}, byref, isz
mov rdi, 0xD1FFAB1E ; gcrRegs +[rdi] mov rsi, 0xD1FFAB1E @@ -172,9 +192,9 @@ G_M44984_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=B000 {r12 r13 r call [<unknown method>] ; gcrRegs -[rsi rdi] test byte ptr [rbp-0x38], 1
- je SHORT G_M44984_IG13
+ je SHORT G_M44984_IG15
;; size=32 bbWeight=0 PerfScore 0.00
-G_M44984_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=B000 {r12 r13 r15}, byref
+G_M44984_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=B000 {r12 r13 r15}, byref
mov rdi, 0xD1FFAB1E ; gcrRegs +[rdi] mov rsi, 0xD1FFAB1E @@ -191,7 +211,7 @@ G_M44984_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=B000 {r12 r13 r cmp edi, r14d jge G_M44984_IG06 ;; size=56 bbWeight=0 PerfScore 0.00
-G_M44984_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=B000 {r12 r13 r15}, byref
+G_M44984_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=B000 {r12 r13 r15}, byref
mov rdi, 0xD1FFAB1E ; gcrRegs +[rdi] mov rsi, 0xD1FFAB1E @@ -200,12 +220,16 @@ G_M44984_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=B000 {r12 r13 r ; gcrRegs -[rsi rdi] jmp G_M44984_IG06 ;; size=31 bbWeight=0 PerfScore 0.00
-G_M44984_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=B000 {r12 r13 r15}, byref
+G_M44984_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=B000 {r12 r13 r15}, byref
mov rax, qword ptr [rbp-0x38] jmp G_M44984_IG05 ;; size=9 bbWeight=0 PerfScore 0.00
+G_M44984_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=B000 {r12 r13 r15}, byref + mov rax, qword ptr [rbp-0x38] + jmp G_M44984_IG04 + ;; size=9 bbWeight=0 PerfScore 0.00
-; Total bytes of code 357, prolog size 19, PerfScore 39.50, instruction count 85, allocated bytes for code 357 (MethodHash=d0aa5047) for method System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:TryMatch(byref,int,byref,uint,byref):ubyte:this (Tier1)
+; Total bytes of code 404, prolog size 19, PerfScore 33.25, instruction count 97, allocated bytes for code 404 (MethodHash=d0aa5047) for method System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:TryMatch(byref,int,byref,uint,byref):ubyte:this (Tier1)
; ============================================================ Unwind Info:

benchmarks.run_tiered.linux.x64.checked.mch

-33 (-41.25%) : 9995.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)

@@ -8,77 +8,56 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 3, 2.50) byref -> r15 this single-def -; V01 arg1 [V01,T00] ( 5, 3.75) ref -> rbx class-hnd single-def <System.Object>
+; V00 this [V00,T02] ( 3, 2.50) byref -> rdi this single-def +; V01 arg1 [V01,T00] ( 4, 3.50) ref -> rsi class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T01] ( 3, 4.50) ref -> rax class-hnd "spilling QMark2" <System.Reflection.MetadataImport> ;* V04 tmp2 [V04 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Reflection.MetadataImport> ;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref "field V04.m_keepalive (fldOffset=0x0)" P-INDEP
-; V06 tmp4 [V06,T05] ( 2, 1 ) long -> rax "field V04.m_metadataImport2 (fldOffset=0x8)" P-INDEP -; V07 cse0 [V07,T03] ( 4, 1.25) long -> rdi "CSE - moderate" -; V08 cse1 [V08,T04] ( 3, 1 ) long -> rsi "CSE - moderate"
+; V06 tmp4 [V06,T03] ( 2, 1 ) long -> rax "field V04.m_metadataImport2 (fldOffset=0x8)" P-INDEP
; ; Lcl frame size = 0
-G_M38955_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M38955_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push rbp
- push r15 - push rbx - lea rbp, [rsp+0x10] - mov r15, rdi - ; byrRegs +[r15] - mov rbx, rsi - ; gcrRegs +[rbx] - ;; size=15 bbWeight=1 PerfScore 4.00 -G_M38955_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref, isz - mov rax, rbx
+ mov rbp, rsp + ;; size=4 bbWeight=1 PerfScore 1.25 +G_M38955_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, byref, isz + ; gcrRegs +[rsi] + ; byrRegs +[rdi] + mov rax, rsi
; gcrRegs +[rax] test rax, rax je SHORT G_M38955_IG04 ;; size=8 bbWeight=1 PerfScore 1.50
-G_M38955_IG03: ; bbWeight=0.25, gcrefRegs=0009 {rax rbx}, byrefRegs=8000 {r15}, byref, isz - mov rsi, qword ptr [rax] - mov rdi, 0xD1FFAB1E ; System.Reflection.MetadataImport - cmp rsi, rdi
+G_M38955_IG03: ; bbWeight=0.25, gcrefRegs=0041 {rax rsi}, byrefRegs=0080 {rdi}, byref, isz + mov rcx, 0xD1FFAB1E ; System.Reflection.MetadataImport + cmp qword ptr [rax], rcx
je SHORT G_M38955_IG06
- ;; size=18 bbWeight=0.25 PerfScore 0.88
+ ;; size=15 bbWeight=0.25 PerfScore 1.06
G_M38955_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax rbx] - ; byrRegs -[r15]
+ ; gcrRegs -[rax rsi] + ; byrRegs -[rdi]
xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M38955_IG05: ; bbWeight=0.50, epilog, nogc, extend
- pop rbx - pop r15
pop rbp ret
- ;; size=5 bbWeight=0.50 PerfScore 1.25 -G_M38955_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, gcvars, byref, isz - ; gcrRegs +[rbx] - ; byrRegs +[r15] - cmp rsi, rdi - je SHORT G_M38955_IG08 - ;; size=5 bbWeight=0.50 PerfScore 0.62 -G_M38955_IG07: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref - mov rsi, rbx
+ ;; size=2 bbWeight=0.50 PerfScore 0.75 +G_M38955_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, gcvars, byref
; gcrRegs +[rsi]
- call CORINFO_HELP_UNBOX - ; gcrRegs -[rsi] - ;; size=8 bbWeight=0.25 PerfScore 0.31 -G_M38955_IG08: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref - mov rax, qword ptr [rbx+0x10] - cmp rax, qword ptr [r15+0x08]
+ ; byrRegs +[rdi] + mov rax, qword ptr [rsi+0x10] + cmp rax, qword ptr [rdi+0x08]
sete al movzx rax, al ;; size=14 bbWeight=0.50 PerfScore 3.12
-G_M38955_IG09: ; bbWeight=0.50, epilog, nogc, extend - pop rbx - pop r15
+G_M38955_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop rbp ret
- ;; size=5 bbWeight=0.50 PerfScore 1.25
+ ;; size=2 bbWeight=0.50 PerfScore 0.75
-; Total bytes of code 80, prolog size 9, PerfScore 13.06, instruction count 30, allocated bytes for code 80 (MethodHash=885867d4) for method System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 47, prolog size 4, PerfScore 8.56, instruction count 17, allocated bytes for code 47 (MethodHash=885867d4) for method System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -86,11 +65,9 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x04 - CountOfUnwindCodes: 3
+ SizeOfProlog : 0x01 + CountOfUnwindCodes: 1
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)

-32 (-30.48%) : 60259.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan1[uint]):int (Tier1)

@@ -9,14 +9,16 @@ ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]> ;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
-; V02 loc0 [V02,T00] ( 7, 24.50) int -> registers
+; V02 loc0 [V02,T00] ( 7, 24.50) int -> rax
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T01] ( 6, 20 ) int -> r8 "dup spill" -; V05 tmp2 [V05,T05] ( 3, 5.50) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP -; V06 tmp3 [V06,T04] ( 5, 7 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP -; V07 tmp4 [V07,T06] ( 3, 5.50) byref -> rdx single-def "field V01._reference (fldOffset=0x0)" P-INDEP -; V08 tmp5 [V08,T03] ( 6, 7.50) int -> rcx single-def "field V01._length (fldOffset=0x8)" P-INDEP -; V09 cse0 [V09,T02] ( 6, 13.50) long -> r9 multi-def "CSE - aggressive"
+; V04 tmp1 [V04,T01] ( 2, 16 ) int -> rax "dup spill" +; V05 tmp2 [V05,T07] ( 2, 5 ) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP +; V06 tmp3 [V06,T04] ( 4, 6.50) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP +; V07 tmp4 [V07,T08] ( 2, 5 ) byref -> rdx single-def "field V01._reference (fldOffset=0x0)" P-INDEP +; V08 tmp5 [V08,T03] ( 5, 7 ) int -> rcx single-def "field V01._length (fldOffset=0x8)" P-INDEP +; V09 cse0 [V09,T05] ( 3, 8.50) int -> r9 "CSE - aggressive" +; V10 cse1 [V10,T06] ( 3, 8.50) int -> r8 "CSE - aggressive" +; V11 cse2 [V11,T02] ( 3, 12 ) long -> r8 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -32,72 +34,59 @@ G_M264_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, b G_M264_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; byrRegs -[rdx rdi] cmp esi, ecx
- jl SHORT G_M264_IG12 - jmp SHORT G_M264_IG10
+ jl SHORT G_M264_IG11 + jmp SHORT G_M264_IG07
;; size=6 bbWeight=0.50 PerfScore 1.62 G_M264_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref ; byrRegs +[rdx rdi]
- mov r8d, ecx - ;; size=3 bbWeight=0.50 PerfScore 0.12
+ mov eax, ecx + ;; size=2 bbWeight=0.50 PerfScore 0.12
G_M264_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref, isz
- dec r8d - mov eax, r8d - test eax, eax - jl SHORT G_M264_IG06
+ dec eax + js SHORT G_M264_IG09
cmp eax, esi
- jae SHORT G_M264_IG14 - mov r9d, eax - mov r10d, dword ptr [rdi+4*r9] - cmp eax, ecx - jae SHORT G_M264_IG14 - cmp r10d, dword ptr [rdx+4*r9] - je SHORT G_M264_IG08 - ;; size=31 bbWeight=4 PerfScore 42.00 -G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref, isz - test r8d, r8d - jge SHORT G_M264_IG09 - xor eax, eax - ;; size=7 bbWeight=0.50 PerfScore 0.75 -G_M264_IG07: ; bbWeight=0.50, epilog, nogc, extend - pop rbp - ret - ;; size=2 bbWeight=0.50 PerfScore 0.75 -G_M264_IG08: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, gcvars, byref, isz
+ jae SHORT G_M264_IG13
mov r8d, eax
- jmp SHORT G_M264_IG05 - ;; size=5 bbWeight=2 PerfScore 4.50 -G_M264_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref, isz - cmp r8d, esi - jae SHORT G_M264_IG14 - mov r9d, r8d - mov eax, dword ptr [rdi+4*r9] - cmp r8d, ecx - jae SHORT G_M264_IG14 - cmp eax, dword ptr [rdx+4*r9] - jb SHORT G_M264_IG12 - ;; size=23 bbWeight=0.50 PerfScore 4.38 -G_M264_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov r9d, dword ptr [rdi+4*r8] + cmp eax, ecx + jae SHORT G_M264_IG13 + mov r8d, dword ptr [rdx+4*r8] + cmp r9d, r8d + je SHORT G_M264_IG05 + ;; size=28 bbWeight=4 PerfScore 37.00 +G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rdx rdi]
+ cmp r8d, r9d + ja SHORT G_M264_IG11 + ;; size=5 bbWeight=0.50 PerfScore 0.62 +G_M264_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov eax, 1 ;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M264_IG11: ; bbWeight=0.50, epilog, nogc, extend
+G_M264_IG08: ; bbWeight=0.50, epilog, nogc, extend
pop rbp ret ;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M264_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M264_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + xor eax, eax + ;; size=2 bbWeight=0.50 PerfScore 0.12 +G_M264_IG10: ; bbWeight=0.50, epilog, nogc, extend + pop rbp + ret + ;; size=2 bbWeight=0.50 PerfScore 0.75 +G_M264_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov eax, -1 ;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M264_IG13: ; bbWeight=0.50, epilog, nogc, extend
+G_M264_IG12: ; bbWeight=0.50, epilog, nogc, extend
pop rbp ret ;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M264_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M264_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 105, prolog size 4, PerfScore 58.38, instruction count 43, allocated bytes for code 105 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
+; Total bytes of code 73, prolog size 4, PerfScore 44.50, instruction count 32, allocated bytes for code 73 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
; ============================================================ Unwind Info:

-16 (-7.17%) : 10084.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (Tier1)

@@ -12,7 +12,7 @@ ; V01 arg1 [V01,T06] ( 7, 4.50) byref -> rdx single-def ; V02 loc0 [V02,T07] ( 5, 3 ) ushort -> rcx ; V03 loc1 [V03,T05] ( 5, 7 ) int -> rax
-; V04 loc2 [V04,T00] ( 7, 13.50) int -> r8
+; V04 loc2 [V04,T00] ( 5, 12.50) int -> r8
; V05 loc3 [V05,T09] ( 3, 1.50) int -> rax ; V06 loc4 [V06,T10] ( 3, 1.50) int -> rax ; V07 loc5 [V07,T11] ( 3, 1.50) int -> r8 @@ -20,9 +20,9 @@ ; V09 tmp1 [V09,T04] ( 2, 8 ) int -> r8 "impSpillLclRefs" ;* V10 tmp2 [V10 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg" ; V11 tmp3 [V11,T08] ( 2, 2 ) int -> rcx "Single return block return value"
-; V12 tmp4 [V12,T03] ( 7, 7.50) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP -; V13 tmp5 [V13,T02] ( 8, 8.50) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP -; V14 cse0 [V14,T01] ( 5, 11 ) int -> r9 multi-def "CSE - aggressive"
+; V12 tmp4 [V12,T03] ( 6, 7 ) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP +; V13 tmp5 [V13,T02] ( 7, 8 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP +; V14 cse0 [V14,T01] ( 4, 10.50) int -> r9 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -46,8 +46,8 @@ G_M3969_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi cmp esi, 1 jne SHORT G_M3969_IG04 mov dword ptr [rdx], -1
- jmp G_M3969_IG11 - ;; size=36 bbWeight=0.50 PerfScore 4.12
+ jmp SHORT G_M3969_IG11 + ;; size=33 bbWeight=0.50 PerfScore 4.12
G_M3969_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref, isz cmp esi, 2 jne SHORT G_M3969_IG05 @@ -89,23 +89,19 @@ G_M3969_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, ;; size=18 bbWeight=2 PerfScore 6.00 G_M3969_IG08: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref, isz cmp r8d, esi
- jae SHORT G_M3969_IG09
+ jae SHORT G_M3969_IG10
mov r9d, r8d movzx r9, word ptr [rdi+2*r9] lea r10d, [r9-0x30] cmp r10d, 9 jbe SHORT G_M3969_IG07 ;; size=23 bbWeight=4 PerfScore 21.00
-G_M3969_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref, isz - cmp r8d, esi - jae SHORT G_M3969_IG10 - mov r9d, r8d - movzx r9, word ptr [rdi+2*r9]
+G_M3969_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0004 {rdx}, byref, isz + ; byrRegs -[rdi]
test r9d, r9d jne SHORT G_M3969_IG13
- ;; size=18 bbWeight=0.50 PerfScore 2.38
+ ;; size=5 bbWeight=0.50 PerfScore 0.62
G_M3969_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0004 {rdx}, byref
- ; byrRegs -[rdi]
mov dword ptr [rdx], eax ;; size=2 bbWeight=0.50 PerfScore 0.50 G_M3969_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref @@ -143,7 +139,7 @@ G_M3969_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {} int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 223, prolog size 4, PerfScore 52.38, instruction count 76, allocated bytes for code 223 (MethodHash=db41f07e) for method System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (Tier1)
+; Total bytes of code 207, prolog size 4, PerfScore 50.62, instruction count 72, allocated bytes for code 207 (MethodHash=db41f07e) for method System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (Tier1)
; ============================================================ Unwind Info:

+27 (+2.32%) : 5290.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (Tier0-FullOpts)

@@ -10,14 +10,14 @@ ; ; V00 this [V00,T00] ( 27, 55.50) byref -> rbx this single-def ; V01 arg1 [V01,T19] ( 4, 3.50) byref -> r15 single-def
-; V02 loc0 [V02,T01] ( 18, 55.50) ushort -> r12
+; V02 loc0 [V02,T01] ( 18, 57.50) ushort -> r12
; V03 loc1 [V03 ] ( 36, 70.50) struct (32) [rbp-0x48] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Text.ValueStringBuilder>
-; V04 loc2 [V04,T04] ( 8, 16 ) ushort -> [rbp-0x4C]
+; V04 loc2 [V04,T09] ( 6, 8 ) ushort -> [rbp-0x4C]
;* V05 loc3 [V05 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[ushort]> ;* V06 loc4 [V06 ] ( 0, 0 ) int -> zero-ref ;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V08 tmp1 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V09 tmp2 [V09,T07] ( 5, 14.50) ushort -> r13 "Inline stloc first use temp"
+; V09 tmp2 [V09,T06] ( 5, 14.50) ushort -> r13 "Inline stloc first use temp"
; V10 tmp3 [V10,T10] ( 4, 8 ) int -> rdi "Inline stloc first use temp" ;* V11 tmp4 [V11 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ; V12 tmp5 [V12,T32] ( 2, 2 ) long -> rax "Inlining Arg" @@ -25,7 +25,7 @@ ; V14 tmp7 [V14,T31] ( 4, 2 ) int -> rax "Inline stloc first use temp" ;* V15 tmp8 [V15 ] ( 0, 0 ) byref -> zero-ref single-def "impAppendStmt" ; V16 tmp9 [V16,T02] ( 16, 32 ) ushort -> rsi "Inline stloc first use temp"
-; V17 tmp10 [V17,T11] ( 4, 8 ) int -> r13 "Inline stloc first use temp"
+; V17 tmp10 [V17,T11] ( 4, 8 ) int -> rdi "Inline stloc first use temp"
;* V18 tmp11 [V18 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ; V19 tmp12 [V19,T12] ( 4, 8 ) int -> rdi "Inline stloc first use temp" ;* V20 tmp13 [V20 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]> @@ -37,14 +37,14 @@ ;* V26 tmp19 [V26 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]> ; V27 tmp20 [V27,T16] ( 4, 8 ) int -> rdi "Inline stloc first use temp" ;* V28 tmp21 [V28 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]>
-; V29 tmp22 [V29,T09] ( 4, 10 ) ushort -> r12 "Inline stloc first use temp"
+; V29 tmp22 [V29,T08] ( 4, 10 ) ushort -> r12 "Inline stloc first use temp"
; V30 tmp23 [V30,T17] ( 4, 8 ) int -> rdi "Inline stloc first use temp" ;* V31 tmp24 [V31 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
-; V32 tmp25 [V32,T05] ( 4, 16 ) int -> rbx "Inlining Arg"
+; V32 tmp25 [V32,T04] ( 4, 16 ) int -> rbx "Inlining Arg"
;* V33 tmp26 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V34 tmp27 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V35 tmp28 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V36 tmp29 [V36,T03] ( 4, 32 ) int -> rbx "Inlining Arg"
+; V36 tmp29 [V36,T03] ( 4, 32 ) int -> r12 "Inlining Arg"
;* V37 tmp30 [V37 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V38 tmp31 [V38 ] ( 0, 0 ) byref -> zero-ref single-def "field V05._reference (fldOffset=0x0)" P-INDEP ;* V39 tmp32 [V39 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP @@ -63,8 +63,8 @@ ; V52 GsCookie [V52 ] ( 1, 1 ) long -> [rbp-0x58] do-not-enreg[X] addr-exposed "GSSecurityCookie" ; V53 cse0 [V53,T18] ( 5, 7 ) int -> r13 multi-def "CSE - moderate" ; V54 cse1 [V54,T33] ( 3, 1.50) int -> rax "CSE - conservative"
-; V55 cse2 [V55,T08] ( 8, 14 ) ref -> r14 "CSE - aggressive" -; V56 cse3 [V56,T06] ( 4, 16 ) int -> rdi "CSE - aggressive"
+; V55 cse2 [V55,T07] ( 8, 14 ) ref -> r14 "CSE - aggressive" +; V56 cse3 [V56,T05] ( 4, 16 ) int -> rdi "CSE - aggressive"
; ; Lcl frame size = 56 @@ -103,31 +103,31 @@ G_M25128_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, G_M25128_IG03: ; bbWeight=8, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref mov edi, dword ptr [rbx+0x10] cmp edi, dword ptr [rbx+0x08]
- jge G_M25128_IG24
+ jge G_M25128_IG20
;; size=12 bbWeight=8 PerfScore 48.00 G_M25128_IG04: ; bbWeight=2, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref mov edi, dword ptr [rbx+0x10] lea eax, [rdi+0x01] mov dword ptr [rbx+0x10], eax cmp edi, dword ptr [rbx+0x08]
- jae G_M25128_IG61
+ jae G_M25128_IG59
mov rax, bword ptr [rbx] ; byrRegs +[rax] movzx r13, word ptr [rax+2*rdi] test r13d, r13d
- je G_M25128_IG62
+ je G_M25128_IG60
;; size=35 bbWeight=2 PerfScore 25.50 G_M25128_IG05: ; bbWeight=8, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref ; byrRegs -[rax] mov r12d, r13d test r12d, r12d
- je G_M25128_IG31
+ je G_M25128_IG27
;; size=12 bbWeight=8 PerfScore 12.00 G_M25128_IG06: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref, isz cmp r12d, 44
- je G_M25128_IG25
+ je G_M25128_IG21
cmp r12d, 61
- je G_M25128_IG28
+ je G_M25128_IG24
mov edi, r12d call [System.Reflection.AssemblyNameParser:IsWhiteSpace(ushort):ubyte] ; gcr arg pop 0 @@ -159,132 +159,110 @@ G_M25128_IG10: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx mov ecx, r13d mov eax, dword ptr [rbx+0x10] cmp eax, dword ptr [rbx+0x08]
- jge G_M25128_IG34
+ jge G_M25128_IG30
lea edi, [rax+0x01] mov dword ptr [rbx+0x10], edi cmp eax, dword ptr [rbx+0x08]
- jae G_M25128_IG61
+ jae G_M25128_IG59
mov rdi, bword ptr [rbx] ; byrRegs +[rdi] movzx r12, word ptr [rdi+2*rax] test r12d, r12d
- je G_M25128_IG62
+ je G_M25128_IG60
;; size=47 bbWeight=0.50 PerfScore 8.50
-G_M25128_IG11: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref, isz
+G_M25128_IG11: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref
; byrRegs -[rdi] test r12d, r12d
- je G_M25128_IG49
+ je G_M25128_IG47
test ecx, ecx
- je SHORT G_M25128_IG13 - ;; size=13 bbWeight=4 PerfScore 10.00
+ je G_M25128_IG31 + ;; size=17 bbWeight=4 PerfScore 10.00
G_M25128_IG12: ; bbWeight=2, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref cmp r12d, ecx
- je G_M25128_IG50
+ je G_M25128_IG48
;; size=9 bbWeight=2 PerfScore 2.50
-G_M25128_IG13: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref, isz - test ecx, ecx - jne SHORT G_M25128_IG15 - ;; size=4 bbWeight=4 PerfScore 5.00 -G_M25128_IG14: ; bbWeight=2, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref - cmp r12d, 44 - je G_M25128_IG57 - cmp r12d, 61 - je G_M25128_IG57 - ;; size=20 bbWeight=2 PerfScore 5.00 -G_M25128_IG15: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref, isz - mov dword ptr [rbp-0x4C], ecx - test ecx, ecx - jne SHORT G_M25128_IG17 - ;; size=7 bbWeight=4 PerfScore 9.00 -G_M25128_IG16: ; bbWeight=2, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref - cmp r12d, 39 - je G_M25128_IG62 - cmp r12d, 34 - je G_M25128_IG62 - ;; size=20 bbWeight=2 PerfScore 5.00 -G_M25128_IG17: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref
+G_M25128_IG13: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref
cmp r12d, 92
- jne G_M25128_IG46
+ jne G_M25128_IG44
;; size=10 bbWeight=4 PerfScore 5.00
-G_M25128_IG18: ; bbWeight=2, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref
+G_M25128_IG14: ; bbWeight=2, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref
mov r13d, dword ptr [rbx+0x10] cmp r13d, dword ptr [rbx+0x08]
- jge G_M25128_IG35 - lea edi, [r13+0x01] - mov dword ptr [rbx+0x10], edi - cmp r13d, dword ptr [rbx+0x08] - jae G_M25128_IG61 - mov rdi, bword ptr [rbx] - ; byrRegs +[rdi] - mov esi, r13d - movzx rsi, word ptr [rdi+2*rsi]
+ jge G_M25128_IG33 + mov edi, r13d + lea esi, [rdi+0x01] + mov dword ptr [rbx+0x10], esi + cmp edi, dword ptr [rbx+0x08] + jae G_M25128_IG59 + mov rsi, bword ptr [rbx] + ; byrRegs +[rsi] + movzx rsi, word ptr [rsi+2*rdi] + ; byrRegs -[rsi]
test esi, esi
- je G_M25128_IG62 - ;; size=49 bbWeight=2 PerfScore 34.00 -G_M25128_IG19: ; bbWeight=2, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref, isz - ; byrRegs -[rdi]
+ je G_M25128_IG60 + ;; size=47 bbWeight=2 PerfScore 34.00 +G_M25128_IG15: ; bbWeight=2, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref, isz
cmp esi, 61
- ja G_M25128_IG37
+ ja G_M25128_IG35
cmp esi, 39
- ja G_M25128_IG36
+ ja G_M25128_IG34
cmp esi, 34
- je SHORT G_M25128_IG20
+ je SHORT G_M25128_IG16
cmp esi, 39
- jne G_M25128_IG62
+ jne G_M25128_IG60
;; size=32 bbWeight=2 PerfScore 10.00
-G_M25128_IG20: ; bbWeight=2, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref
+G_M25128_IG16: ; bbWeight=2, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref
mov edi, dword ptr [rbp-0x40] mov rax, bword ptr [rbp-0x38] ; byrRegs +[rax] mov edx, dword ptr [rbp-0x30] cmp edi, edx
- jae G_M25128_IG39
+ jae G_M25128_IG37
mov edx, edi mov word ptr [rax+2*rdx], si inc edi mov dword ptr [rbp-0x40], edi ;; size=29 bbWeight=2 PerfScore 13.50
-G_M25128_IG21: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref
+G_M25128_IG17: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref
; byrRegs -[rax] mov edi, dword ptr [rbx+0x10] cmp edi, dword ptr [rbx+0x08]
- jge G_M25128_IG48
+ jge G_M25128_IG46
;; size=12 bbWeight=4 PerfScore 24.00
-G_M25128_IG22: ; bbWeight=2, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref
+G_M25128_IG18: ; bbWeight=2, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref
mov edi, dword ptr [rbx+0x10]
- lea esi, [rdi+0x01] - mov dword ptr [rbx+0x10], esi
+ lea eax, [rdi+0x01] + mov dword ptr [rbx+0x10], eax
cmp edi, dword ptr [rbx+0x08]
- jae G_M25128_IG61 - mov rsi, bword ptr [rbx] - ; byrRegs +[rsi] - movzx r12, word ptr [rsi+2*rdi]
+ jae G_M25128_IG59 + mov rax, bword ptr [rbx] + ; byrRegs +[rax] + movzx r12, word ptr [rax+2*rdi]
test r12d, r12d
- je G_M25128_IG62
+ je G_M25128_IG60
;; size=35 bbWeight=2 PerfScore 25.50
-G_M25128_IG23: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref - ; byrRegs -[rsi] - mov ecx, dword ptr [rbp-0x4C]
+G_M25128_IG19: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref + ; byrRegs -[rax]
jmp G_M25128_IG11
- ;; size=8 bbWeight=4 PerfScore 12.00 -G_M25128_IG24: ; bbWeight=2, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref
+ ;; size=5 bbWeight=4 PerfScore 8.00
...

+27 (+3.00%) : 7330.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (Tier0-FullOpts)

@@ -9,9 +9,9 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T07] ( 22, 23 ) ref -> rbx class-hnd single-def <System.Collections.Generic.List`1[System.String]>
-; V01 loc0 [V01,T02] ( 13, 47.50) ref -> r15 class-hnd exact single-def <System.String>
+; V01 loc0 [V01,T03] ( 13, 47.50) ref -> r15 class-hnd exact single-def <System.String>
; V02 loc1 [V02 ] ( 20, 54 ) struct (16) [rbp-0x38] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Span`1[ushort]>
-; V03 loc2 [V03,T00] ( 40,153.08) int -> r13
+; V03 loc2 [V03,T00] ( 42,187.08) int -> r13
; V04 loc3 [V04,T20] ( 4, 2 ) int -> rdi ;* V05 loc4 [V05 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[ushort]> ; V06 loc5 [V06,T06] ( 9, 25.50) int -> r14 @@ -46,13 +46,13 @@ ; V35 cse2 [V35,T11] ( 3, 12 ) int -> rdx "CSE - moderate" ; V36 cse3 [V36,T10] ( 3, 12 ) ref -> rsi "CSE - moderate" ; V37 cse4 [V37,T26] ( 3, 1.50) long -> r12 "CSE - moderate"
-; V38 cse5 [V38,T03] ( 15, 30.54) int -> r14 "CSE - aggressive"
+; V38 cse5 [V38,T01] ( 17, 64.54) int -> r14 "CSE - aggressive"
; V39 cse6 [V39,T25] ( 3, 1.50) ref -> rsi "CSE - moderate" ; V40 cse7 [V40,T16] ( 2, 8 ) int -> rax "CSE - moderate" ; V41 cse8 [V41,T12] ( 3, 11.88) int -> rdi "CSE - moderate" ; V42 cse9 [V42,T18] ( 7, 3.50) int -> [rbp-0x3C] spill-single-def "CSE - moderate" ; V43 cse10 [V43,T17] ( 3, 6 ) int -> rdx "CSE - moderate"
-; V44 cse11 [V44,T01] ( 3, 48 ) long -> rsi "CSE - aggressive"
+; V44 cse11 [V44,T02] ( 3, 48 ) long -> rsi "CSE - aggressive"
; ; Lcl frame size = 40 @@ -74,24 +74,24 @@ G_M28069_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=42 bbWeight=1 PerfScore 9.50 G_M28069_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref cmp dword ptr [rbx+0x10], 0
- je G_M28069_IG27
+ je G_M28069_IG26
;; size=10 bbWeight=1 PerfScore 4.00 G_M28069_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz mov rax, gword ptr [rbx+0x08] ; gcrRegs +[rax] cmp dword ptr [rax+0x08], 0
- jbe G_M28069_IG31
+ jbe G_M28069_IG30
mov r15, gword ptr [rax+0x10] ; gcrRegs +[r15] mov r14d, dword ptr [r15+0x08] cmp r14d, 100
- jg G_M28069_IG27
+ jg G_M28069_IG26
lea edi, [r14+0x02] mov eax, edi ; gcrRegs -[rax] mov esi, 2 mul rdx:rax, rsi
- jb G_M28069_IG30
+ jb G_M28069_IG29
mov rsi, rax test rsi, rsi je SHORT G_M28069_IG05 @@ -112,100 +112,100 @@ G_M28069_IG04: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 ;; size=22 bbWeight=0.50 PerfScore 2.62 G_M28069_IG05: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref test edi, edi
- jl G_M28069_IG32
+ jl G_M28069_IG31
mov bword ptr [rbp-0x38], rsi mov dword ptr [rbp-0x30], edi xor r13d, r13d test r14d, r14d
- jle G_M28069_IG14
+ jle G_M28069_IG13
;; size=27 bbWeight=0.50 PerfScore 2.38 G_M28069_IG06: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz mov edi, r13d movzx rdi, word ptr [r15+2*rdi+0x0C] cmp edi, 39
- jne SHORT G_M28069_IG10
+ jne SHORT G_M28069_IG09
;; size=14 bbWeight=4 PerfScore 14.00 G_M28069_IG07: ; bbWeight=16, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz cmp r13d, dword ptr [rbp-0x30]
- jae G_M28069_IG31
+ jae G_M28069_IG30
mov rdi, bword ptr [rbp-0x38] ; byrRegs +[rdi] mov esi, r13d
+ cmp r13d, r14d + jae G_M28069_IG30
movzx rax, word ptr [r15+2*rsi+0x0C] mov word ptr [rdi+2*rsi], ax inc r13d cmp r14d, r13d
- jle SHORT G_M28069_IG08
+ jle G_M28069_IG26 + cmp r13d, r14d + jae G_M28069_IG30
mov edi, r13d ; byrRegs -[rdi] cmp word ptr [r15+2*rdi+0x0C], 39 jne SHORT G_M28069_IG07
- ;; size=47 bbWeight=16 PerfScore 208.00 -G_M28069_IG08: ; bbWeight=2, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz - cmp r14d, r13d - jg SHORT G_M28069_IG11 - ;; size=5 bbWeight=2 PerfScore 2.50 -G_M28069_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[rbx r15] - jmp G_M28069_IG27 - ;; size=5 bbWeight=0.50 PerfScore 1.00 -G_M28069_IG10: ; bbWeight=2, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[rbx r15]
+ ;; size=69 bbWeight=16 PerfScore 248.00 +G_M28069_IG08: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz + jmp SHORT G_M28069_IG10 + ;; size=2 bbWeight=4 PerfScore 8.00 +G_M28069_IG09: ; bbWeight=2, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
cmp edi, 121
- je SHORT G_M28069_IG13
+ je SHORT G_M28069_IG12
;; size=5 bbWeight=2 PerfScore 2.50
-G_M28069_IG11: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG10: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
cmp r13d, dword ptr [rbp-0x30]
- jae G_M28069_IG31
+ jae G_M28069_IG30
mov rdi, bword ptr [rbp-0x38] ; byrRegs +[rdi] mov esi, r13d
+ cmp r13d, r14d + jae G_M28069_IG30
mov eax, r13d movzx rax, word ptr [r15+2*rax+0x0C] mov word ptr [rdi+2*rsi], ax inc r13d cmp r14d, r13d
- jg SHORT G_M28069_IG06 - ;; size=38 bbWeight=4 PerfScore 36.00 -G_M28069_IG12: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+ jg G_M28069_IG06 + ;; size=51 bbWeight=4 PerfScore 41.00 +G_M28069_IG11: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rdi]
- jmp SHORT G_M28069_IG14
+ jmp SHORT G_M28069_IG13
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M28069_IG13: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+G_M28069_IG12: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
cmp r13d, dword ptr [rbp-0x30]
- jae G_M28069_IG31
+ jae G_M28069_IG30
mov rdi, bword ptr [rbp-0x38] ; byrRegs +[rdi] mov esi, r13d mov word ptr [rdi+2*rsi], 121 ;; size=23 bbWeight=0.50 PerfScore 2.62
-G_M28069_IG14: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG13: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rdi] lea edi, [r14-0x01] cmp edi, r13d
- jle G_M28069_IG27
+ jle G_M28069_IG26
lea edi, [r13+0x01] cmp edi, r14d
- jae G_M28069_IG31
+ jae G_M28069_IG30
lea edi, [r13+0x01] mov r12d, edi cmp word ptr [r15+2*r12+0x0C], 121
- jne G_M28069_IG27
+ jne G_M28069_IG26
lea eax, [r13+0x02] mov dword ptr [rbp-0x3C], eax cmp r14d, eax
- jle SHORT G_M28069_IG15
+ jle SHORT G_M28069_IG14
cmp eax, r14d
- jae G_M28069_IG31
+ jae G_M28069_IG30
mov edi, eax cmp word ptr [r15+2*rdi+0x0C], 121 mov eax, dword ptr [rbp-0x3C]
- je G_M28069_IG27
+ je G_M28069_IG26
;; size=85 bbWeight=0.50 PerfScore 8.75
-G_M28069_IG15: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG14: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
lea edi, [r13+0x03] cmp edi, dword ptr [rbp-0x30]
- jl SHORT G_M28069_IG16
+ jl SHORT G_M28069_IG15
mov rsi, 0xD1FFAB1E ; gcrRegs +[rsi] mov rdi, rsi @@ -215,37 +215,37 @@ G_M28069_IG15: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 ; gcr arg pop 0 mov eax, dword ptr [rbp-0x3C] ;; size=31 bbWeight=0.50 PerfScore 4.00
-G_M28069_IG16: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG15: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
lea edi, [r13+0x01] cmp edi, dword ptr [rbp-0x30]
- jae G_M28069_IG31
+ jae G_M28069_IG30
mov rdi, bword ptr [rbp-0x38] ; byrRegs +[rdi] mov word ptr [rdi+2*r12], 121 cmp eax, dword ptr [rbp-0x30]
- jae G_M28069_IG31
+ jae G_M28069_IG30
mov rdi, bword ptr [rbp-0x38] mov ecx, eax mov word ptr [rdi+2*rcx], 121 lea edi, [r13+0x03] ; byrRegs -[rdi] cmp edi, dword ptr [rbp-0x30]
- jae G_M28069_IG31
+ jae G_M28069_IG30
mov rdi, bword ptr [rbp-0x38] ; byrRegs +[rdi] lea ecx, [r13+0x03] mov word ptr [rdi+2*rcx], 121 mov r13d, eax cmp r14d, r13d
- jle SHORT G_M28069_IG20
+ jle SHORT G_M28069_IG19
test r13d, r13d
- jl SHORT G_M28069_IG19
+ jl SHORT G_M28069_IG18
;; size=85 bbWeight=0.50 PerfScore 9.75
-G_M28069_IG17: ; bbWeight=3.96, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG16: ; bbWeight=3.96, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rdi] lea edi, [r13+0x02] cmp edi, dword ptr [rbp-0x30]
- jae G_M28069_IG31
+ jae G_M28069_IG30
mov rax, bword ptr [rbp-0x38] ; byrRegs +[rax] mov ecx, r13d @@ -253,29 +253,29 @@ G_M28069_IG17: ; bbWeight=3.96, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 mov word ptr [rax+2*rdi], cx inc r13d cmp r14d, r13d
- jg SHORT G_M28069_IG17
+ jg SHORT G_M28069_IG16
;; size=38 bbWeight=3.96 PerfScore 36.63
-G_M28069_IG18: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG17: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rax]
- jmp SHORT G_M28069_IG20
+ jmp SHORT G_M28069_IG19
...

+3 (+3.70%) : 14597.dasm - System.Security.Cryptography.UniversalCryptoDecryptor:Dispose(ubyte):this (Tier1)

@@ -8,11 +8,12 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 5, 4 ) ref -> rbx this class-hnd single-def <System.Security.Cryptography.UniversalCryptoDecryptor> -; V01 arg1 [V01,T02] ( 3, 3 ) ubyte -> rsi single-def -; V02 loc0 [V02,T03] ( 3, 1.50) ref -> rdi class-hnd single-def <<unknown class>>
+; V00 this [V00,T00] ( 5, 3.50) ref -> rbx this class-hnd single-def <System.Security.Cryptography.UniversalCryptoDecryptor> +; V01 arg1 [V01,T01] ( 3, 3 ) ubyte -> rsi single-def +; V02 loc0 [V02,T04] ( 3, 1.50) ref -> rdi class-hnd single-def <<unknown class>>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T00] ( 4, 8 ) ref -> rbx class-hnd single-def "Inlining Arg" <System.Security.Cryptography.BasicSymmetricCipher>
+; V04 tmp1 [V04,T02] ( 4, 4 ) ref -> rbx class-hnd single-def "Inlining Arg" <System.Security.Cryptography.BasicSymmetricCipher> +; V05 cse0 [V05,T03] ( 2, 2 ) int -> rdi "CSE - aggressive"
; ; Lcl frame size = 8 @@ -25,9 +26,10 @@ G_M4640_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {} ; gcrRegs +[rbx] ;; size=11 bbWeight=1 PerfScore 3.75 G_M4640_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- test sil, sil
+ movzx rdi, sil + test edi, edi
je SHORT G_M4640_IG06
- ;; size=5 bbWeight=1 PerfScore 1.25
+ ;; size=8 bbWeight=1 PerfScore 1.50
G_M4640_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz mov rdi, gword ptr [rbx+0x18] ; gcrRegs +[rdi] @@ -39,7 +41,7 @@ G_M4640_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, b call [System.Array:Clear(System.Array)] ; gcrRegs -[rax rdi] ;; size=21 bbWeight=0.50 PerfScore 3.75
-G_M4640_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M4640_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rbx, gword ptr [rbx+0x08] mov rdi, rbx ; gcrRegs +[rdi] @@ -50,13 +52,13 @@ G_M4640_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byre ; gcrRegs -[rdi] mov rdi, rbx ; gcrRegs +[rdi]
- ;; size=25 bbWeight=1 PerfScore 9.75 -G_M4640_IG05: ; bbWeight=1, epilog, nogc, extend
+ ;; size=25 bbWeight=0.50 PerfScore 4.88 +G_M4640_IG05: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 8 pop rbx pop rbp tail.jmp [System.GC:SuppressFinalize(System.Object)]
- ;; size=12 bbWeight=1 PerfScore 3.25
+ ;; size=12 bbWeight=0.50 PerfScore 1.62
G_M4640_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; gcrRegs -[rbx rdi] add rsp, 8 @@ -65,7 +67,7 @@ G_M4640_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre ret ;; size=7 bbWeight=0.50 PerfScore 1.12
-; Total bytes of code 81, prolog size 8, PerfScore 22.88, instruction count 28, allocated bytes for code 81 (MethodHash=97d5eddf) for method System.Security.Cryptography.UniversalCryptoDecryptor:Dispose(ubyte):this (Tier1)
+; Total bytes of code 84, prolog size 8, PerfScore 16.62, instruction count 29, allocated bytes for code 84 (MethodHash=97d5eddf) for method System.Security.Cryptography.UniversalCryptoDecryptor:Dispose(ubyte):this (Tier1)
; ============================================================ Unwind Info:

coreclr_tests.run.linux.x64.checked.mch

-37 (-45.68%) : 222553.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)

@@ -9,74 +9,55 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 3 ) byref -> rdi this single-def
-; V01 arg1 [V01,T00] ( 5, 4.50) ref -> rbx class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 4, 4 ) ref -> rsi class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> rax class-hnd "spilling QMark2" <System.Int32>
-; V04 tmp2 [V04,T03] ( 2, 4 ) int -> r15 "impAppendStmt" -; V05 cse0 [V05,T04] ( 4, 2.50) long -> rcx "CSE - aggressive" -; V06 cse1 [V06,T05] ( 3, 2 ) long -> rsi "CSE - aggressive"
+; V04 tmp2 [V04,T03] ( 2, 4 ) int -> rax "impAppendStmt" +; V05 cse0 [V05,T04] ( 2, 1 ) long -> rcx "CSE - moderate"
; ; Lcl frame size = 0 G_M40448_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp
- push r15 - push rbx - lea rbp, [rsp+0x10] - mov rbx, rsi - ; gcrRegs +[rbx] - ;; size=12 bbWeight=1 PerfScore 3.75 -G_M40448_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, byref, isz
+ mov rbp, rsp + ;; size=4 bbWeight=1 PerfScore 1.25 +G_M40448_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, byref, isz + ; gcrRegs +[rsi]
; byrRegs +[rdi]
- mov rax, rbx
+ mov rax, rsi
; gcrRegs +[rax] test rax, rax
- je SHORT G_M40448_IG08
+ jne SHORT G_M40448_IG05
;; size=8 bbWeight=1 PerfScore 1.50
-G_M40448_IG03: ; bbWeight=0.50, gcrefRegs=0009 {rax rbx}, byrefRegs=0080 {rdi}, byref, isz - mov rsi, qword ptr [rax] - mov rcx, 0xD1FFAB1E ; System.Int32 - cmp rsi, rcx - jne SHORT G_M40448_IG08 - ;; size=18 bbWeight=0.50 PerfScore 1.75 -G_M40448_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, byref, isz - ; gcrRegs -[rax] - mov r15d, dword ptr [rdi] - cmp rsi, rcx - jne SHORT G_M40448_IG07 - ;; size=8 bbWeight=1 PerfScore 3.25 -G_M40448_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M40448_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[rax rsi]
; byrRegs -[rdi] xor eax, eax
- cmp r15d, dword ptr [rbx+0x08]
+ ;; size=2 bbWeight=1 PerfScore 0.25 +G_M40448_IG04: ; bbWeight=1, epilog, nogc, extend + pop rbp + ret + ;; size=2 bbWeight=1 PerfScore 1.50 +G_M40448_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0041 {rax rsi}, byrefRegs=0080 {rdi}, gcvars, byref, isz + ; gcrRegs +[rax rsi] + ; byrRegs +[rdi] + mov rcx, 0xD1FFAB1E ; System.Int32 + cmp qword ptr [rax], rcx + jne SHORT G_M40448_IG03 + ;; size=15 bbWeight=0.50 PerfScore 2.12 +G_M40448_IG06: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, byref + ; gcrRegs -[rax] + mov eax, dword ptr [rdi] + cmp eax, dword ptr [rsi+0x08]
sete al
- ;; size=9 bbWeight=1 PerfScore 4.25 -G_M40448_IG06: ; bbWeight=1, epilog, nogc, extend - pop rbx - pop r15
+ movzx rax, al + ;; size=11 bbWeight=1 PerfScore 6.25 +G_M40448_IG07: ; bbWeight=1, epilog, nogc, extend
pop rbp ret
- ;; size=5 bbWeight=1 PerfScore 2.50 -G_M40448_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz - mov rsi, rbx - ; gcrRegs +[rsi] - mov rdi, rcx - call [CORINFO_HELP_UNBOX] - ; gcrRegs -[rsi] - jmp SHORT G_M40448_IG05 - ;; size=14 bbWeight=0.50 PerfScore 2.75 -G_M40448_IG08: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[rbx] - xor eax, eax - ;; size=2 bbWeight=0.25 PerfScore 0.06 -G_M40448_IG09: ; bbWeight=0.25, epilog, nogc, extend - pop rbx - pop r15 - pop rbp - ret - ;; size=5 bbWeight=0.25 PerfScore 0.62
+ ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 81, prolog size 9, PerfScore 20.44, instruction count 31, allocated bytes for code 81 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 44, prolog size 4, PerfScore 14.38, instruction count 17, allocated bytes for code 44 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -84,11 +65,9 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x04 - CountOfUnwindCodes: 3
+ SizeOfProlog : 0x01 + CountOfUnwindCodes: 1
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)

-37 (-45.68%) : 23834.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)

@@ -9,74 +9,55 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 3 ) byref -> rdi this single-def
-; V01 arg1 [V01,T00] ( 5, 4.50) ref -> rbx class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 4, 4 ) ref -> rsi class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> rax class-hnd "spilling QMark2" <System.Int32>
-; V04 tmp2 [V04,T03] ( 2, 4 ) int -> r15 "impAppendStmt" -; V05 cse0 [V05,T04] ( 4, 2.50) long -> rcx "CSE - aggressive" -; V06 cse1 [V06,T05] ( 3, 2 ) long -> rsi "CSE - aggressive"
+; V04 tmp2 [V04,T03] ( 2, 4 ) int -> rax "impAppendStmt" +; V05 cse0 [V05,T04] ( 2, 1 ) long -> rcx "CSE - moderate"
; ; Lcl frame size = 0 G_M40448_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp
- push r15 - push rbx - lea rbp, [rsp+0x10] - mov rbx, rsi - ; gcrRegs +[rbx] - ;; size=12 bbWeight=1 PerfScore 3.75 -G_M40448_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, byref, isz
+ mov rbp, rsp + ;; size=4 bbWeight=1 PerfScore 1.25 +G_M40448_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, byref, isz + ; gcrRegs +[rsi]
; byrRegs +[rdi]
- mov rax, rbx
+ mov rax, rsi
; gcrRegs +[rax] test rax, rax
- je SHORT G_M40448_IG08
+ jne SHORT G_M40448_IG05
;; size=8 bbWeight=1 PerfScore 1.50
-G_M40448_IG03: ; bbWeight=0.50, gcrefRegs=0009 {rax rbx}, byrefRegs=0080 {rdi}, byref, isz - mov rsi, qword ptr [rax] - mov rcx, 0xD1FFAB1E ; System.Int32 - cmp rsi, rcx - jne SHORT G_M40448_IG08 - ;; size=18 bbWeight=0.50 PerfScore 1.75 -G_M40448_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, byref, isz - ; gcrRegs -[rax] - mov r15d, dword ptr [rdi] - cmp rsi, rcx - jne SHORT G_M40448_IG07 - ;; size=8 bbWeight=1 PerfScore 3.25 -G_M40448_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M40448_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[rax rsi]
; byrRegs -[rdi] xor eax, eax
- cmp r15d, dword ptr [rbx+0x08]
+ ;; size=2 bbWeight=1 PerfScore 0.25 +G_M40448_IG04: ; bbWeight=1, epilog, nogc, extend + pop rbp + ret + ;; size=2 bbWeight=1 PerfScore 1.50 +G_M40448_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0041 {rax rsi}, byrefRegs=0080 {rdi}, gcvars, byref, isz + ; gcrRegs +[rax rsi] + ; byrRegs +[rdi] + mov rcx, 0xD1FFAB1E ; System.Int32 + cmp qword ptr [rax], rcx + jne SHORT G_M40448_IG03 + ;; size=15 bbWeight=0.50 PerfScore 2.12 +G_M40448_IG06: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, byref + ; gcrRegs -[rax] + mov eax, dword ptr [rdi] + cmp eax, dword ptr [rsi+0x08]
sete al
- ;; size=9 bbWeight=1 PerfScore 4.25 -G_M40448_IG06: ; bbWeight=1, epilog, nogc, extend - pop rbx - pop r15
+ movzx rax, al + ;; size=11 bbWeight=1 PerfScore 6.25 +G_M40448_IG07: ; bbWeight=1, epilog, nogc, extend
pop rbp ret
- ;; size=5 bbWeight=1 PerfScore 2.50 -G_M40448_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz - mov rsi, rbx - ; gcrRegs +[rsi] - mov rdi, rcx - call [CORINFO_HELP_UNBOX] - ; gcrRegs -[rsi] - jmp SHORT G_M40448_IG05 - ;; size=14 bbWeight=0.50 PerfScore 2.75 -G_M40448_IG08: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[rbx] - xor eax, eax - ;; size=2 bbWeight=0.25 PerfScore 0.06 -G_M40448_IG09: ; bbWeight=0.25, epilog, nogc, extend - pop rbx - pop r15 - pop rbp - ret - ;; size=5 bbWeight=0.25 PerfScore 0.62
+ ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 81, prolog size 9, PerfScore 20.44, instruction count 31, allocated bytes for code 81 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 44, prolog size 4, PerfScore 14.38, instruction count 17, allocated bytes for code 44 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -84,11 +65,9 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x04 - CountOfUnwindCodes: 3
+ SizeOfProlog : 0x01 + CountOfUnwindCodes: 1
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)

-35 (-44.30%) : 207261.dasm - System.UInt32:Equals(System.Object):ubyte:this (Tier1)

@@ -9,73 +9,54 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 3 ) byref -> rdi this single-def
-; V01 arg1 [V01,T00] ( 5, 4.50) ref -> rbx class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 4, 4 ) ref -> rsi class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> rsi class-hnd "spilling QMark2" <System.UInt32> -; V04 tmp2 [V04,T03] ( 2, 4 ) int -> r15 "impAppendStmt" -; V05 cse0 [V05,T04] ( 4, 2.50) long -> rax "CSE - aggressive" -; V06 cse1 [V06,T05] ( 3, 2 ) long -> rsi "CSE - aggressive"
+; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> rax class-hnd "spilling QMark2" <System.UInt32> +; V04 tmp2 [V04,T03] ( 2, 4 ) int -> rax "impAppendStmt" +; V05 cse0 [V05,T04] ( 2, 1 ) long -> rcx "CSE - moderate"
; ; Lcl frame size = 0 G_M22229_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG push rbp
- push r15 - push rbx - lea rbp, [rsp+0x10] - mov rbx, rsi - ; gcrRegs +[rbx] - ;; size=12 bbWeight=1 PerfScore 3.75 -G_M22229_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, byref, isz
+ mov rbp, rsp + ;; size=4 bbWeight=1 PerfScore 1.25 +G_M22229_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, byref, isz + ; gcrRegs +[rsi]
; byrRegs +[rdi]
- mov rsi, rbx - ; gcrRegs +[rsi] - test rsi, rsi - je SHORT G_M22229_IG08
+ mov rax, rsi + ; gcrRegs +[rax] + test rax, rax + je SHORT G_M22229_IG04
;; size=8 bbWeight=1 PerfScore 1.50
-G_M22229_IG03: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0080 {rdi}, byref, isz - mov rsi, qword ptr [rsi] - ; gcrRegs -[rsi] - mov rax, 0xD1FFAB1E ; System.UInt32 - cmp rsi, rax - jne SHORT G_M22229_IG08 - ;; size=18 bbWeight=0.50 PerfScore 1.75 -G_M22229_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, byref, isz - mov r15d, dword ptr [rdi] - cmp rsi, rax
+G_M22229_IG03: ; bbWeight=0.50, gcrefRegs=0041 {rax rsi}, byrefRegs=0080 {rdi}, byref, isz + mov rcx, 0xD1FFAB1E ; System.UInt32 + cmp qword ptr [rax], rcx
je SHORT G_M22229_IG06
- ;; size=8 bbWeight=1 PerfScore 3.25 -G_M22229_IG05: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ;; size=15 bbWeight=0.50 PerfScore 2.12 +G_M22229_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[rax rsi]
; byrRegs -[rdi]
- mov rsi, rbx
+ xor eax, eax + ;; size=2 bbWeight=1 PerfScore 0.25 +G_M22229_IG05: ; bbWeight=1, epilog, nogc, extend + pop rbp + ret + ;; size=2 bbWeight=1 PerfScore 1.50 +G_M22229_IG06: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, gcvars, byref
; gcrRegs +[rsi]
- mov rdi, rax - call [CORINFO_HELP_UNBOX] - ; gcrRegs -[rsi] - ;; size=12 bbWeight=0.50 PerfScore 1.75 -G_M22229_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - xor eax, eax - cmp r15d, dword ptr [rbx+0x08]
+ ; byrRegs +[rdi] + mov eax, dword ptr [rdi] + cmp eax, dword ptr [rsi+0x08]
sete al
- ;; size=9 bbWeight=1 PerfScore 4.25
+ movzx rax, al + ;; size=11 bbWeight=1 PerfScore 6.25
G_M22229_IG07: ; bbWeight=1, epilog, nogc, extend
- pop rbx - pop r15
pop rbp ret
- ;; size=5 bbWeight=1 PerfScore 2.50 -G_M22229_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[rbx] - xor eax, eax - ;; size=2 bbWeight=0 PerfScore 0.00 -G_M22229_IG09: ; bbWeight=0, epilog, nogc, extend - pop rbx - pop r15 - pop rbp - ret - ;; size=5 bbWeight=0 PerfScore 0.00
+ ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 79, prolog size 9, PerfScore 18.75, instruction count 30, allocated bytes for code 79 (MethodHash=4843a92a) for method System.UInt32:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 44, prolog size 4, PerfScore 14.38, instruction count 17, allocated bytes for code 44 (MethodHash=4843a92a) for method System.UInt32:Equals(System.Object):ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -83,11 +64,9 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x04 - CountOfUnwindCodes: 3
+ SizeOfProlog : 0x01 + CountOfUnwindCodes: 1
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)

+16 (+5.23%) : 398519.dasm - Internal.TypeSystem.TypeSystemHelpers:HasLayout(Internal.TypeSystem.MetadataType):ubyte (Tier1)

@@ -9,61 +9,66 @@ ; 4 inlinees with PGO data; 16 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 9, 7.08) ref -> rbx class-hnd single-def <Internal.TypeSystem.MetadataType>
+; V00 arg0 [V00,T00] ( 7, 5.77) ref -> rbx class-hnd single-def <Internal.TypeSystem.MetadataType>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T11] ( 2, 2 ) int -> rax "guarded devirt return temp"
+; V02 tmp1 [V02,T12] ( 2, 2 ) int -> rax "guarded devirt return temp"
;* V03 tmp2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V04 tmp3 [V04,T13] ( 3, 1.92) int -> r15 "guarded devirt return temp"
+; V04 tmp3 [V04,T15] ( 3, 1.92) int -> r14 "guarded devirt return temp"
;* V05 tmp4 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V06 tmp5 [V06,T14] ( 3, 1.62) int -> r15 "Inline return value spill temp"
+; V06 tmp5 [V06,T16] ( 3, 1.62) int -> r14 "Inline return value spill temp"
; V07 tmp6 [V07,T03] ( 4, 4.86) byref -> rdi single-def "Inlining Arg"
-; V08 tmp7 [V08,T01] ( 4, 6.48) byref -> r15 single-def "impAppendStmt"
+; V08 tmp7 [V08,T01] ( 4, 6.48) byref -> r14 single-def "impAppendStmt"
;* V09 tmp8 [V09 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Reflection.Metadata.TypeDefinitionHandle> ;* V10 tmp9 [V10 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V11 tmp10 [V11 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Reflection.Metadata.TypeDefinitionHandle> ;* V12 tmp11 [V12 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Reflection.Metadata.TypeDefinitionHandle>
-; V13 tmp12 [V13,T15] ( 2, 1.62) int -> rax "Inline stloc first use temp"
+; V13 tmp12 [V13,T17] ( 2, 1.62) int -> rax "Inline stloc first use temp"
;* V14 tmp13 [V14 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ; V15 tmp14 [V15,T04] ( 3, 4.86) byref -> rdi single-def "Inlining Arg" ; V16 tmp15 [V16,T05] ( 3, 4.86) int -> rax "Inlining Arg" ;* V17 tmp16 [V17 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V18 tmp17 [V18,T17] ( 3, 1.30) int -> r15 "Inline return value spill temp"
+; V18 tmp17 [V18,T19] ( 3, 1.30) int -> r14 "Inline return value spill temp"
; V19 tmp18 [V19,T07] ( 4, 3.91) byref -> rdi single-def "Inlining Arg" ; V20 tmp19 [V20,T02] ( 4, 5.22) byref -> rdi single-def "impAppendStmt" ;* V21 tmp20 [V21 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Reflection.Metadata.TypeDefinitionHandle> ;* V22 tmp21 [V22 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V23 tmp22 [V23 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Reflection.Metadata.TypeDefinitionHandle> ;* V24 tmp23 [V24 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Reflection.Metadata.TypeDefinitionHandle>
-; V25 tmp24 [V25,T18] ( 2, 1.30) int -> rax "Inline stloc first use temp"
+; V25 tmp24 [V25,T20] ( 2, 1.30) int -> rax "Inline stloc first use temp"
;* V26 tmp25 [V26 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ; V27 tmp26 [V27,T08] ( 3, 3.91) byref -> rcx single-def "Inlining Arg" ; V28 tmp27 [V28,T09] ( 3, 3.91) int -> rax "Inlining Arg" ;* V29 tmp28 [V29 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V30 tmp29 [V30 ] ( 0, 0 ) int -> zero-ref "field V09._rowId (fldOffset=0x0)" P-INDEP
-; V31 tmp30 [V31,T16] ( 2, 1.62) int -> rax "field V11._rowId (fldOffset=0x0)" P-INDEP
+; V31 tmp30 [V31,T18] ( 2, 1.62) int -> rax "field V11._rowId (fldOffset=0x0)" P-INDEP
;* V32 tmp31 [V32 ] ( 0, 0 ) int -> zero-ref "field V12._rowId (fldOffset=0x0)" P-INDEP ;* V33 tmp32 [V33 ] ( 0, 0 ) int -> zero-ref "field V21._rowId (fldOffset=0x0)" P-INDEP
-; V34 tmp33 [V34,T19] ( 2, 1.30) int -> rax "field V23._rowId (fldOffset=0x0)" P-INDEP
+; V34 tmp33 [V34,T21] ( 2, 1.30) int -> rax "field V23._rowId (fldOffset=0x0)" P-INDEP
;* V35 tmp34 [V35 ] ( 0, 0 ) int -> zero-ref "field V24._rowId (fldOffset=0x0)" P-INDEP
-; V36 tmp35 [V36,T06] ( 6, 4.39) ref -> r15 "Field obj" -; V37 cse0 [V37,T10] ( 3, 2.43) int -> rax "CSE - moderate" -; V38 cse1 [V38,T12] ( 3, 1.96) int -> rax "CSE - moderate"
+; V36 tmp35 [V36,T06] ( 6, 4.39) ref -> r14 "Field obj" +; V37 cse0 [V37,T11] ( 3, 2.43) int -> rax "CSE - moderate" +; V38 cse1 [V38,T14] ( 3, 1.96) int -> rax "CSE - moderate" +; V39 cse2 [V39,T10] ( 4, 3.31) long -> r15 "CSE - moderate" +; V40 cse3 [V40,T13] ( 2, 2 ) long -> rdi "CSE - moderate"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M18137_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp push r15
+ push r14
push rbx
- lea rbp, [rsp+0x10]
+ push rax + lea rbp, [rsp+0x20]
mov rbx, rdi ; gcrRegs +[rbx]
- ;; size=12 bbWeight=1 PerfScore 3.75
+ ;; size=15 bbWeight=1 PerfScore 5.75
G_M18137_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ mov r15, qword ptr [rbx]
mov rdi, 0xD1FFAB1E ; Internal.TypeSystem.Ecma.EcmaType
- cmp qword ptr [rbx], rdi
+ cmp r15, rdi
jne SHORT G_M18137_IG05
- ;; size=15 bbWeight=1 PerfScore 4.25
+ ;; size=18 bbWeight=1 PerfScore 3.50
G_M18137_IG03: ; bbWeight=0.81, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref lea rdi, bword ptr [rbx+0x90] ; byrRegs +[rdi] @@ -73,17 +78,17 @@ G_M18137_IG03: ; bbWeight=0.81, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, movzx rcx, cl test ecx, ecx jne G_M18137_IG14
- mov r15, gword ptr [rdi] - ; gcrRegs +[r15] - cmp byte ptr [r15], r15b - add r15, 280 - ; gcrRegs -[r15] - ; byrRegs +[r15]
+ mov r14, gword ptr [rdi] + ; gcrRegs +[r14] + cmp byte ptr [r14], r14b + add r14, 280 + ; gcrRegs -[r14] + ; byrRegs +[r14]
and eax, 0xD1FFAB1E dec eax
- imul eax, dword ptr [r15+0x20] - lea rdi, bword ptr [r15+0x28] - add eax, dword ptr [r15+0x08]
+ imul eax, dword ptr [r14+0x20] + lea rdi, bword ptr [r14+0x28] + add eax, dword ptr [r14+0x08]
mov ecx, eax add rcx, 4 movsxd rdx, dword ptr [rdi+0x08] @@ -92,27 +97,26 @@ G_M18137_IG03: ; bbWeight=0.81, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, mov rdi, qword ptr [rdi] ; byrRegs -[rdi] cdqe
- mov r15d, dword ptr [rdi+rax] - ; byrRegs -[r15]
+ mov r14d, dword ptr [rdi+rax] + ; byrRegs -[r14]
;; size=87 bbWeight=0.81 PerfScore 23.49 G_M18137_IG04: ; bbWeight=0.81, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- test r15b, 8
+ test r14b, 8
jne G_M18137_IG12 jmp SHORT G_M18137_IG07 ;; size=12 bbWeight=0.81 PerfScore 2.63
-G_M18137_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M18137_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rdi, rbx ; gcrRegs +[rdi]
- mov rax, qword ptr [rbx] - mov rax, qword ptr [rax+0x70]
+ mov rax, qword ptr [r15+0x70]
call [rax]<unknown method> ; gcrRegs -[rdi] test eax, eax
- jne SHORT G_M18137_IG12 - ;; size=16 bbWeight=1 PerfScore 8.50 -G_M18137_IG06: ; bbWeight=0.96, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jne G_M18137_IG12 + ;; size=17 bbWeight=1 PerfScore 6.50 +G_M18137_IG06: ; bbWeight=0.31, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
jmp SHORT G_M18137_IG11
- ;; size=2 bbWeight=0.96 PerfScore 1.92
+ ;; size=2 bbWeight=0.31 PerfScore 0.61
G_M18137_IG07: ; bbWeight=0.65, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz lea rdi, bword ptr [rbx+0x90] ; byrRegs +[rdi] @@ -122,10 +126,10 @@ G_M18137_IG07: ; bbWeight=0.65, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, movzx rcx, cl test ecx, ecx jne G_M18137_IG16
- mov r15, gword ptr [rdi] - ; gcrRegs +[r15] - cmp byte ptr [r15], r15b - lea rdi, bword ptr [r15+0x118]
+ mov r14, gword ptr [rdi] + ; gcrRegs +[r14] + cmp byte ptr [r14], r14b + lea rdi, bword ptr [r14+0x118]
and eax, 0xD1FFAB1E dec eax imul eax, dword ptr [rdi+0x20] @@ -140,51 +144,54 @@ G_M18137_IG07: ; bbWeight=0.65, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, ja SHORT G_M18137_IG15 mov rdi, qword ptr [rcx] cdqe
- mov r15d, dword ptr [rdi+rax] - ; gcrRegs -[r15]
+ mov r14d, dword ptr [rdi+rax] + ; gcrRegs -[r14]
;; size=81 bbWeight=0.65 PerfScore 19.07 G_M18137_IG08: ; bbWeight=0.65, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[rbx] ; byrRegs -[rcx]
- test r15b, 16 - setne r15b - movzx r15, r15b
+ test r14b, 16 + setne r14b + movzx r14, r14b
;; size=12 bbWeight=0.65 PerfScore 0.98 G_M18137_IG09: ; bbWeight=0.96, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movzx rax, r15b
+ movzx rax, r14b
;; size=4 bbWeight=0.96 PerfScore 0.24 G_M18137_IG10: ; bbWeight=0.96, epilog, nogc, extend
+ add rsp, 8
pop rbx
+ pop r14
pop r15 pop rbp ret
- ;; size=5 bbWeight=0.96 PerfScore 2.40
+ ;; size=11 bbWeight=0.96 PerfScore 3.12
G_M18137_IG11: ; bbWeight=0.31, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs +[rbx] mov rdi, rbx ; gcrRegs +[rdi]
- mov rax, qword ptr [rbx] - mov rax, qword ptr [rax+0x68]
+ mov rax, qword ptr [r15+0x68]
call [rax+0x38]<unknown method> ; gcrRegs -[rbx rdi]
- mov r15d, eax
+ mov r14d, eax
jmp SHORT G_M18137_IG09
- ;; size=18 bbWeight=0.31 PerfScore 2.92
+ ;; size=15 bbWeight=0.31 PerfScore 2.30
G_M18137_IG12: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov eax, 1 ;; size=5 bbWeight=0.04 PerfScore 0.01 G_M18137_IG13: ; bbWeight=0.04, epilog, nogc, extend
+ add rsp, 8
pop rbx
+ pop r14
pop r15 pop rbp ret
- ;; size=5 bbWeight=0.04 PerfScore 0.10
+ ;; size=11 bbWeight=0.04 PerfScore 0.13
G_M18137_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, gcvars, byref ; gcrRegs +[rbx] ; byrRegs +[rdi] call [<unknown method>] ; byrRegs -[rdi]
- mov r15d, eax
+ mov r14d, eax
jmp G_M18137_IG04 ;; size=14 bbWeight=0 PerfScore 0.00 G_M18137_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref @@ -196,11 +203,11 @@ G_M18137_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byr ; byrRegs +[rdi] call [<unknown method>] ; byrRegs -[rdi]
- mov r15d, eax
+ mov r14d, eax
jmp SHORT G_M18137_IG08 ;; size=11 bbWeight=0 PerfScore 0.00
-; Total bytes of code 306, prolog size 9, PerfScore 70.26, instruction count 91, allocated bytes for code 306 (MethodHash=3025b926) for method Internal.TypeSystem.TypeSystemHelpers:HasLayout(Internal.TypeSystem.MetadataType):ubyte (Tier1)
+; Total bytes of code 322, prolog size 12, PerfScore 68.34, instruction count 96, allocated bytes for code 322 (MethodHash=3025b926) for method Internal.TypeSystem.TypeSystemHelpers:HasLayout(Internal.TypeSystem.MetadataType):ubyte (Tier1)
; ============================================================ Unwind Info: @@ -208,11 +215,13 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00 ...

+40 (+7.92%) : 217049.dasm - System.Reflection.RuntimeAssembly:GetType(System.String,ubyte,ubyte):System.Type:this (Instrumented Tier1)

@@ -15,7 +15,7 @@ ;* V04 loc0 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.Reflection.RuntimeAssembly> ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V06 tmp1 [V06,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V07 tmp2 [V07 ] ( 37, 32.82) struct (64) [rbp-0x60] do-not-enreg[XSF] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <System.Reflection.TypeNameParser>
+; V07 tmp2 [V07 ] ( 37, 32.32) struct (64) [rbp-0x68] do-not-enreg[XSF] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <System.Reflection.TypeNameParser>
;* V08 tmp3 [V08 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V09 tmp4 [V09 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V10 tmp5 [V10 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> @@ -25,14 +25,14 @@ ;* V14 tmp9 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V15 tmp10 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V16 tmp11 [V16 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V17 tmp12 [V17,T17] ( 3, 1.50) ref -> rax class-hnd "Inline return value spill temp" <System.Type> -; V18 tmp13 [V18,T09] ( 6, 3 ) ref -> r15 class-hnd single-def "Inline stloc first use temp" <System.Reflection.TypeNameParser+TypeName> -; V19 tmp14 [V19,T18] ( 5, 1 ) ref -> r14 class-hnd "Inline stloc first use temp" <System.String>
+; V17 tmp12 [V17,T16] ( 3, 1.50) ref -> rax class-hnd "Inline return value spill temp" <System.Type> +; V18 tmp13 [V18,T09] ( 7, 3 ) ref -> r15 class-hnd single-def "Inline stloc first use temp" <System.Reflection.TypeNameParser+TypeName> +; V19 tmp14 [V19,T17] ( 5, 1 ) ref -> r14 class-hnd "Inline stloc first use temp" <System.String>
;* V20 tmp15 [V20 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ; V21 tmp16 [V21,T19] ( 3, 1 ) ref -> rax "guarded devirt return temp" ;* V22 tmp17 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Reflection.TypeNameParser+NamespaceTypeName> ;* V23 tmp18 [V23 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V24 tmp19 [V24,T12] ( 4, 2 ) int -> rbx "Inline stloc first use temp"
+; V24 tmp19 [V24,T18] ( 4, 1 ) int -> r12 "Inline stloc first use temp"
; V25 tmp20 [V25,T22] ( 3, 0 ) int -> rdi "Span.get_Item index" ; V26 tmp21 [V26,T20] ( 3, 1 ) int -> r13 ;* V27 tmp22 [V27 ] ( 0, 0 ) ushort -> zero-ref "Inline stloc first use temp" @@ -48,10 +48,10 @@ ;* V37 tmp32 [V37 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]> ;* V38 tmp33 [V38 ] ( 0, 0 ) byref -> zero-ref single-def "field V08._reference (fldOffset=0x0)" P-INDEP ;* V39 tmp34 [V39 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP
-; V40 tmp35 [V40,T13] ( 2, 2 ) byref -> rax "field V09._reference (fldOffset=0x0)" P-INDEP -; V41 tmp36 [V41,T15] ( 2, 2 ) int -> rsi "field V09._length (fldOffset=0x8)" P-INDEP -; V42 tmp37 [V42,T14] ( 2, 2 ) byref -> rax single-def "field V10._reference (fldOffset=0x0)" P-INDEP -; V43 tmp38 [V43,T16] ( 2, 2 ) int -> rsi "field V10._length (fldOffset=0x8)" P-INDEP
+; V40 tmp35 [V40,T12] ( 2, 2 ) byref -> rax "field V09._reference (fldOffset=0x0)" P-INDEP +; V41 tmp36 [V41,T14] ( 2, 2 ) int -> rsi "field V09._length (fldOffset=0x8)" P-INDEP +; V42 tmp37 [V42,T13] ( 2, 2 ) byref -> rax single-def "field V10._reference (fldOffset=0x0)" P-INDEP +; V43 tmp38 [V43,T15] ( 2, 2 ) int -> rsi "field V10._length (fldOffset=0x8)" P-INDEP
;* V44 tmp39 [V44 ] ( 0, 0 ) byref -> zero-ref single-def "field V11._reference (fldOffset=0x0)" P-INDEP ;* V45 tmp40 [V45 ] ( 0, 0 ) int -> zero-ref "field V11._length (fldOffset=0x8)" P-INDEP ;* V46 tmp41 [V46 ] ( 0, 0 ) byref -> zero-ref "field V31._reference (fldOffset=0x0)" P-INDEP @@ -70,30 +70,34 @@ ; V59 cse0 [V59,T02] ( 3, 11.82) int -> rdi "CSE - aggressive" ; V60 cse1 [V60,T03] ( 3, 11.82) int -> rax "CSE - aggressive" ;
-; Lcl frame size = 64
+; Lcl frame size = 72
G_M21860_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp push r15 push r14 push r13
+ push r12
push rbx
- sub rsp, 64 - lea rbp, [rsp+0x60]
+ sub rsp, 72 + lea rbp, [rsp+0x70] + xor eax, eax + mov qword ptr [rbp-0x68], rax
vxorps xmm8, xmm8, xmm8 vmovdqu ymmword ptr [rbp-0x60], ymm8
- vmovdqu ymmword ptr [rbp-0x40], ymm8
+ vmovdqa xmmword ptr [rbp-0x40], xmm8 + mov qword ptr [rbp-0x30], rax
mov rbx, rsi ; gcrRegs +[rbx]
- ;; size=35 bbWeight=1 PerfScore 10.33
+ ;; size=47 bbWeight=1 PerfScore 13.58
G_M21860_IG02: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref ; gcrRegs +[rdi] test rbx, rbx
- je G_M21860_IG23
+ je G_M21860_IG21
;; size=9 bbWeight=1 PerfScore 1.25 G_M21860_IG03: ; bbWeight=0.47, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref cmp dword ptr [rbx+0x08], 0
- je G_M21860_IG23
+ je G_M21860_IG21
;; size=10 bbWeight=0.47 PerfScore 1.88 G_M21860_IG04: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref lea rax, bword ptr [rbx+0x0C] @@ -101,36 +105,36 @@ G_M21860_IG04: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, mov esi, dword ptr [rbx+0x08] xor r8, r8 ; gcrRegs +[r8]
- mov gword ptr [rbp-0x60], r8
+ mov gword ptr [rbp-0x68], r8
;; size=14 bbWeight=1 PerfScore 3.75 G_M21860_IG05: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0001 {rax}, byref ; gcrRegs -[rbx r8]
- mov gword ptr [rbp-0x58], r8 - mov byte ptr [rbp-0x38], 0 - mov byte ptr [rbp-0x37], 0 - mov byte ptr [rbp-0x36], 0 - mov byte ptr [rbp-0x35], 0 - mov byte ptr [rbp-0x34], 0
+ mov gword ptr [rbp-0x60], r8 + mov byte ptr [rbp-0x40], 0 + mov byte ptr [rbp-0x3F], 0 + mov byte ptr [rbp-0x3E], 0 + mov byte ptr [rbp-0x3D], 0 + mov byte ptr [rbp-0x3C], 0
;; size=24 bbWeight=1 PerfScore 6.00 G_M21860_IG06: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0001 {rax}, byref
- mov gword ptr [rbp-0x50], r8
+ mov gword ptr [rbp-0x58], r8
;; size=4 bbWeight=1 PerfScore 1.00 G_M21860_IG07: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0001 {rax}, byref
- mov gword ptr [rbp-0x48], r8 - mov bword ptr [rbp-0x30], rax - mov dword ptr [rbp-0x28], esi
+ mov gword ptr [rbp-0x50], r8 + mov bword ptr [rbp-0x38], rax + mov dword ptr [rbp-0x30], esi
;; size=11 bbWeight=1 PerfScore 3.00 G_M21860_IG08: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref ; byrRegs -[rax]
- mov dword ptr [rbp-0x40], r8d
+ mov dword ptr [rbp-0x48], r8d
;; size=4 bbWeight=1 PerfScore 1.00 G_M21860_IG09: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
- mov dword ptr [rbp-0x3C], r8d - mov byte ptr [rbp-0x38], dl - mov byte ptr [rbp-0x37], cl - mov gword ptr [rbp-0x48], rdi
+ mov dword ptr [rbp-0x44], r8d + mov byte ptr [rbp-0x40], dl + mov byte ptr [rbp-0x3F], cl
mov gword ptr [rbp-0x50], rdi
- lea rdi, [rbp-0x60]
+ mov gword ptr [rbp-0x58], rdi + lea rdi, [rbp-0x68]
; gcrRegs -[rdi] call [<unknown method>] ; gcrRegs +[rax] @@ -138,25 +142,25 @@ G_M21860_IG09: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byr mov r15, rax ; gcrRegs +[r15] test r15, r15
- je G_M21860_IG24
+ je G_M21860_IG22
;; size=40 bbWeight=1 PerfScore 10.00 G_M21860_IG10: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref ; gcrRegs -[rax] xor r14, r14 ; gcrRegs +[r14]
- mov edi, dword ptr [rbp-0x40] - mov dword ptr [rbp-0x3C], edi
+ mov edi, dword ptr [rbp-0x48] + mov dword ptr [rbp-0x44], edi
;; size=9 bbWeight=0.50 PerfScore 1.12 G_M21860_IG11: ; bbWeight=4, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
- mov edi, dword ptr [rbp-0x40] - mov eax, dword ptr [rbp-0x28]
+ mov edi, dword ptr [rbp-0x48] + mov eax, dword ptr [rbp-0x30]
cmp edi, eax jge SHORT G_M21860_IG15 ;; size=10 bbWeight=4 PerfScore 13.00 G_M21860_IG12: ; bbWeight=3.82, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz cmp edi, eax
- jae G_M21860_IG22 - mov rax, bword ptr [rbp-0x30]
+ jae G_M21860_IG20 + mov rax, bword ptr [rbp-0x38]
; byrRegs +[rax] mov edi, edi movzx rdi, word ptr [rax+2*rdi] @@ -166,7 +170,7 @@ G_M21860_IG12: ; bbWeight=3.82, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 ; byrRegs -[rax] ; gcr arg pop 0 test eax, eax
- jne G_M21860_IG25
+ jne G_M21860_IG23
;; size=40 bbWeight=3.82 PerfScore 38.18 G_M21860_IG13: ; bbWeight=0.50, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz jmp SHORT G_M21860_IG15 @@ -175,61 +179,27 @@ G_M21860_IG14: ; bbWeight=3.82, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 mov edi, edi mov rax, 0xD1FFAB1E ; static handle test byte ptr [rdi+rax], 128
- jne G_M21860_IG25
+ jne G_M21860_IG23
;; size=22 bbWeight=3.82 PerfScore 17.18 G_M21860_IG15: ; bbWeight=0.50, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref
- mov edi, dword ptr [rbp-0x40] - cmp edi, dword ptr [rbp-0x28] - jl G_M21860_IG26
+ mov edi, dword ptr [rbp-0x48] + cmp edi, dword ptr [rbp-0x30] + jl G_M21860_IG24
xor r13d, r13d ;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M21860_IG16: ; bbWeight=0.50, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M21860_IG16: ; bbWeight=0.50, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref
movzx rdi, r13w call [System.Reflection.TypeNameParser:CharToToken(ushort):int] ; gcr arg pop 0
- mov ebx, eax - test ebx, ebx - je SHORT G_M21860_IG19 - cmp ebx, 7 - je SHORT G_M21860_IG17 - lea rdi, [rbp-0x60] - call [System.Reflection.TypeNameParser:Skip():this] - ; gcrRegs -[r14] - ; gcr arg pop 0 - ;; size=31 bbWeight=0.50 PerfScore 4.75 -G_M21860_IG17: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref - cmp ebx, 3 - jne G_M21860_IG27 - ;; size=9 bbWeight=0.50 PerfScore 0.62 -G_M21860_IG18: ; bbWeight=0, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz - lea rdi, [rbp-0x60] - call [System.Reflection.TypeNameParser:CheckTopLevelAssemblyQualifiedName():ubyte:this] - ; gcr arg pop 0 - test eax, eax - je G_M21860_IG24 - lea rdi, [rbp-0x60] - call [System.Reflection.TypeNameParser:GetNextAssemblyName():System.String:this] - ; gcrRegs +[rax] - ; gcr arg pop 0 - mov r14, rax - ; gcrRegs +[r14] - test r14, r14 - je SHORT G_M21860_IG24 - lea rdi, [rbp-0x60] - call [System.Reflection.TypeNameParser:get_Peek():int:this] - ; gcrRegs -[rax] - ; gcr arg pop 0 - xor edi, edi - test eax, eax - sete dil - call [System.Diagnostics.Debug:Assert(ubyte)] - ; gcr arg pop 0 - ;; size=60 bbWeight=0 PerfScore 0.00 -G_M21860_IG19: ; bbWeight=0.50, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
+ mov r12d, eax + test r12d, r12d + jne G_M21860_IG25
mov rsi, 0xD1FFAB1E ; System.Reflection.TypeNameParser+NamespaceTypeName cmp qword ptr [r15], rsi
- jne SHORT G_M21860_IG28 - lea rsi, [rbp-0x60]
+ jne G_M21860_IG28 + ;; size=41 bbWeight=0.50 PerfScore 4.50
...

+10 (+12.20%) : 538409.dasm - Runtime_49101:Test(int,int,int,int,int,int,int,int,int,float,float,float,float,float,float,float,float,float,System.Numerics.Vector3):int (FullOpts)

@@ -26,11 +26,12 @@ ;* V15 arg15 [V15 ] ( 0, 0 ) float -> zero-ref single-def ;* V16 arg16 [V16 ] ( 0, 0 ) float -> zero-ref single-def ;* V17 arg17 [V17 ] ( 0, 0 ) float -> zero-ref single-def
-; V18 arg18 [V18,T01] ( 1, 1 ) simd12 -> [rsp+0x30] single-def <System.Numerics.Vector3>
+; V18 arg18 [V18,T02] ( 1, 1 ) simd12 -> [rsp+0x30] single-def <System.Numerics.Vector3>
;# V19 OutArgs [V19 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V20 tmp1 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V21 tmp2 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V22 cse0 [V22,T00] ( 3, 3 ) ref -> rsi "CSE - moderate"
+; V22 cse0 [V22,T00] ( 2, 2 ) int -> rdi "CSE - aggressive" +; V23 cse1 [V23,T01] ( 3, 1.50) ref -> rsi "CSE - moderate"
; ; Lcl frame size = 8 @@ -46,7 +47,12 @@ G_M16340_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, vmovmskps rdi, xmm0 and edi, 7 cmp edi, 7
- je SHORT G_M16340_IG04
+ sete dil + movzx rdi, dil + test edi, edi + jne SHORT G_M16340_IG05 + ;; size=41 bbWeight=1 PerfScore 14.00 +G_M16340_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rsi, 0xD1FFAB1E ; gcrRegs +[rsi] mov rdi, rsi @@ -55,22 +61,22 @@ G_M16340_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs -[rsi rdi] ; gcr arg pop 0 mov eax, 101
- ;; size=55 bbWeight=1 PerfScore 16.25 -G_M16340_IG03: ; bbWeight=1, epilog, nogc, extend
+ ;; size=24 bbWeight=0.50 PerfScore 1.88 +G_M16340_IG04: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 8 ret
- ;; size=5 bbWeight=1 PerfScore 1.25 -G_M16340_IG04: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=5 bbWeight=0.50 PerfScore 0.62 +G_M16340_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov eax, 100 ;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M16340_IG05: ; bbWeight=0.50, epilog, nogc, extend
+G_M16340_IG06: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 8 ret ;; size=5 bbWeight=0.50 PerfScore 0.62 RWD00 dq 3F8000003F800000h, 000000003F800000h
-; Total bytes of code 82, prolog size 4, PerfScore 21.25, instruction count 19, allocated bytes for code 82 (MethodHash=48a0c02b) for method Runtime_49101:Test(int,int,int,int,int,int,int,int,int,float,float,float,float,float,float,float,float,float,System.Numerics.Vector3):int (FullOpts)
+; Total bytes of code 92, prolog size 4, PerfScore 20.25, instruction count 22, allocated bytes for code 92 (MethodHash=48a0c02b) for method Runtime_49101:Test(int,int,int,int,int,int,int,int,int,float,float,float,float,float,float,float,float,float,System.Numerics.Vector3):int (FullOpts)
; ============================================================ Unwind Info:

libraries.crossgen2.linux.x64.checked.mch

-32 (-30.19%) : 226656.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan1[uint]):int (FullOpts)

@@ -10,14 +10,16 @@ ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]> ;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
-; V02 loc0 [V02,T00] ( 7, 24.50) int -> registers
+; V02 loc0 [V02,T00] ( 7, 24.50) int -> rax
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T01] ( 6, 20 ) int -> r8 "dup spill" -; V05 tmp2 [V05,T05] ( 3, 5.50) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP -; V06 tmp3 [V06,T04] ( 5, 7 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP -; V07 tmp4 [V07,T06] ( 3, 5.50) byref -> rdx single-def "field V01._reference (fldOffset=0x0)" P-INDEP -; V08 tmp5 [V08,T03] ( 6, 7.50) int -> rcx single-def "field V01._length (fldOffset=0x8)" P-INDEP -; V09 cse0 [V09,T02] ( 6, 13.50) long -> r9 multi-def "CSE - aggressive"
+; V04 tmp1 [V04,T01] ( 2, 16 ) int -> rax "dup spill" +; V05 tmp2 [V05,T07] ( 2, 5 ) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP +; V06 tmp3 [V06,T04] ( 4, 6.50) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP +; V07 tmp4 [V07,T08] ( 2, 5 ) byref -> rdx single-def "field V01._reference (fldOffset=0x0)" P-INDEP +; V08 tmp5 [V08,T03] ( 5, 7 ) int -> rcx single-def "field V01._length (fldOffset=0x8)" P-INDEP +; V09 cse0 [V09,T05] ( 3, 8.50) int -> r9 "CSE - aggressive" +; V10 cse1 [V10,T06] ( 3, 8.50) int -> r8 "CSE - aggressive" +; V11 cse2 [V11,T02] ( 3, 12 ) long -> r8 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -33,72 +35,59 @@ G_M264_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, b G_M264_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; byrRegs -[rdx rdi] cmp esi, ecx
- jl SHORT G_M264_IG12 - jmp SHORT G_M264_IG10
+ jl SHORT G_M264_IG11 + jmp SHORT G_M264_IG07
;; size=6 bbWeight=0.50 PerfScore 1.62 G_M264_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref ; byrRegs +[rdx rdi]
- mov r8d, ecx - ;; size=3 bbWeight=0.50 PerfScore 0.12
+ mov eax, ecx + ;; size=2 bbWeight=0.50 PerfScore 0.12
G_M264_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref, isz
- dec r8d - mov eax, r8d - test eax, eax - jl SHORT G_M264_IG06
+ dec eax + js SHORT G_M264_IG09
cmp eax, esi
- jae SHORT G_M264_IG14 - mov r9d, eax - mov r10d, dword ptr [rdi+4*r9] - cmp eax, ecx - jae SHORT G_M264_IG14 - cmp r10d, dword ptr [rdx+4*r9] - je SHORT G_M264_IG08 - ;; size=31 bbWeight=4 PerfScore 42.00 -G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref, isz - test r8d, r8d - jge SHORT G_M264_IG09 - xor eax, eax - ;; size=7 bbWeight=0.50 PerfScore 0.75 -G_M264_IG07: ; bbWeight=0.50, epilog, nogc, extend - pop rbp - ret - ;; size=2 bbWeight=0.50 PerfScore 0.75 -G_M264_IG08: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, gcvars, byref, isz
+ jae SHORT G_M264_IG13
mov r8d, eax
- jmp SHORT G_M264_IG05 - ;; size=5 bbWeight=2 PerfScore 4.50 -G_M264_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref, isz - cmp r8d, esi - jae SHORT G_M264_IG14 - mov r9d, r8d - mov eax, dword ptr [rdi+4*r9] - cmp r8d, ecx - jae SHORT G_M264_IG14 - cmp eax, dword ptr [rdx+4*r9] - jb SHORT G_M264_IG12 - ;; size=23 bbWeight=0.50 PerfScore 4.38 -G_M264_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov r9d, dword ptr [rdi+4*r8] + cmp eax, ecx + jae SHORT G_M264_IG13 + mov r8d, dword ptr [rdx+4*r8] + cmp r9d, r8d + je SHORT G_M264_IG05 + ;; size=28 bbWeight=4 PerfScore 37.00 +G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rdx rdi]
+ cmp r8d, r9d + ja SHORT G_M264_IG11 + ;; size=5 bbWeight=0.50 PerfScore 0.62 +G_M264_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov eax, 1 ;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M264_IG11: ; bbWeight=0.50, epilog, nogc, extend
+G_M264_IG08: ; bbWeight=0.50, epilog, nogc, extend
pop rbp ret ;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M264_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M264_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + xor eax, eax + ;; size=2 bbWeight=0.50 PerfScore 0.12 +G_M264_IG10: ; bbWeight=0.50, epilog, nogc, extend + pop rbp + ret + ;; size=2 bbWeight=0.50 PerfScore 0.75 +G_M264_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov eax, -1 ;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M264_IG13: ; bbWeight=0.50, epilog, nogc, extend
+G_M264_IG12: ; bbWeight=0.50, epilog, nogc, extend
pop rbp ret ;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M264_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M264_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call [CORINFO_HELP_RNGCHKFAIL] ; gcr arg pop 0 int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 106, prolog size 4, PerfScore 58.38, instruction count 43, allocated bytes for code 106 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
+; Total bytes of code 74, prolog size 4, PerfScore 44.50, instruction count 32, allocated bytes for code 74 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
; ============================================================ Unwind Info:

-29 (-25.66%) : 127211.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)

@@ -8,15 +8,17 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T04] ( 5, 7.50) ref -> rdi class-hnd single-def <System.String> -; V01 arg1 [V01,T02] ( 6, 11 ) ref -> rsi class-hnd single-def <System.String> -; V02 arg2 [V02,T05] ( 4, 6.50) int -> rdx single-def -; V03 arg3 [V03,T07] ( 5, 4.50) int -> rcx single-def -; V04 loc0 [V04,T03] ( 6, 13 ) int -> r8 -; V05 loc1 [V05,T00] ( 11, 27.50) int -> r9
+; V00 arg0 [V00,T04] ( 4, 7 ) ref -> rdi class-hnd single-def <System.String> +; V01 arg1 [V01,T02] ( 4, 10 ) ref -> rsi class-hnd single-def <System.String> +; V02 arg2 [V02,T07] ( 3, 6 ) int -> rdx single-def +; V03 arg3 [V03,T08] ( 5, 4.50) int -> rcx single-def +; V04 loc0 [V04,T01] ( 5, 12 ) int -> r8 +; V05 loc1 [V05,T00] ( 7, 25 ) int -> r9
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 cse0 [V07,T06] ( 5, 7 ) int -> rax "CSE - aggressive" -; V08 cse1 [V08,T01] ( 6, 13.50) int -> r11 multi-def "CSE - aggressive"
+; V07 cse0 [V07,T05] ( 3, 8.50) int -> r11 "CSE - aggressive" +; V08 cse1 [V08,T06] ( 3, 8.50) int -> r10 "CSE - aggressive" +; V09 cse2 [V09,T09] ( 4, 6.50) int -> rax "CSE - aggressive" +; V10 cse3 [V10,T03] ( 3, 12 ) int -> r11 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -38,54 +40,43 @@ G_M6389_IG03: ; bbWeight=2, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, ;; size=3 bbWeight=2 PerfScore 0.50 G_M6389_IG04: ; bbWeight=8, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz cmp r9d, r8d
- jge SHORT G_M6389_IG06
+ jge SHORT G_M6389_IG08
;; size=5 bbWeight=8 PerfScore 10.00 G_M6389_IG05: ; bbWeight=4, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz cmp r9d, eax
- jae SHORT G_M6389_IG11
+ jae SHORT G_M6389_IG10
mov r10d, r9d movzx r10, word ptr [rdi+2*r10+0x0C] lea r11d, [rdx+r9] cmp r11d, dword ptr [rsi+0x08]
- jae SHORT G_M6389_IG11 - cmp r10w, word ptr [rsi+2*r11+0x0C]
+ jae SHORT G_M6389_IG10 + movzx r11, word ptr [rsi+2*r11+0x0C] + cmp r10d, r11d
je SHORT G_M6389_IG03
- ;; size=32 bbWeight=4 PerfScore 48.00 -G_M6389_IG06: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz - cmp r9d, r8d - jge SHORT G_M6389_IG09 - ;; size=5 bbWeight=1 PerfScore 1.25 -G_M6389_IG07: ; bbWeight=0.50, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz - cmp r9d, eax - jae SHORT G_M6389_IG11 - mov eax, r9d - movzx rax, word ptr [rdi+2*rax+0x0C] - lea r11d, [rdx+r9] - cmp r11d, dword ptr [rsi+0x08] - jae SHORT G_M6389_IG11 - mov ecx, r11d - movzx rcx, word ptr [rsi+2*rcx+0x0C] - sub eax, ecx - ;; size=33 bbWeight=0.50 PerfScore 5.25 -G_M6389_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=35 bbWeight=4 PerfScore 45.00 +G_M6389_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[rsi rdi] + mov eax, r10d + sub eax, r11d + ;; size=6 bbWeight=0.50 PerfScore 0.25 +G_M6389_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop rbp ret ;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M6389_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[rsi rdi]
+G_M6389_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
sub eax, ecx ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M6389_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M6389_IG09: ; bbWeight=0.50, epilog, nogc, extend
pop rbp ret ;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M6389_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M6389_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call [CORINFO_HELP_RNGCHKFAIL] ; gcr arg pop 0 int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 113, prolog size 4, PerfScore 72.88, instruction count 39, allocated bytes for code 113 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
+; Total bytes of code 84, prolog size 4, PerfScore 63.62, instruction count 30, allocated bytes for code 84 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
; ============================================================ Unwind Info:

-16 (-9.30%) : 141961.dasm - System.Configuration.Internal.WriteFileContext:ReplaceFile(System.String,System.String):this (FullOpts)

@@ -11,31 +11,29 @@ ; V00 this [V00,T02] ( 3, 10 ) ref -> r15 this class-hnd single-def <System.Configuration.Internal.WriteFileContext> ; V01 arg1 [V01,T03] ( 3, 10 ) ref -> r14 class-hnd single-def <System.String> ; V02 arg2 [V02,T00] ( 6, 18 ) ref -> rbx class-hnd single-def <System.String>
-; V03 loc0 [V03,T01] ( 3, 17 ) ubyte -> r12
+; V03 loc0 [V03,T01] ( 2, 16 ) ubyte -> rax
; V04 loc1 [V04,T04] ( 4, 9 ) int -> r13 ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V06 tmp1 [V06,T05] ( 3, 0 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> ; V07 tmp2 [V07,T06] ( 2, 0 ) ref -> rdi single-def "argument with side effect" ; V08 tmp3 [V08,T07] ( 2, 0 ) ref -> rsi single-def "argument with side effect" ;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M51267_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp push r15 push r14 push r13
- push r12
push rbx
- push rax - lea rbp, [rsp+0x30]
+ lea rbp, [rsp+0x20]
mov r15, rdi ; gcrRegs +[r15] mov r14, rsi ; gcrRegs +[r14] mov rbx, rdx ; gcrRegs +[rbx]
- ;; size=25 bbWeight=1 PerfScore 8.25
+ ;; size=22 bbWeight=1 PerfScore 6.25
G_M51267_IG02: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz xor r13d, r13d jmp SHORT G_M51267_IG04 @@ -54,10 +52,9 @@ G_M51267_IG04: ; bbWeight=8, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 ; gcrRegs +[rdx] call [<unknown method>] ; gcrRegs -[rdx rsi rdi]
- mov r12d, eax - test r12d, r12d - jne SHORT G_M51267_IG06 - ;; size=23 bbWeight=8 PerfScore 42.00
+ test eax, eax + jne SHORT G_M51267_IG07 + ;; size=19 bbWeight=8 PerfScore 40.00
G_M51267_IG05: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz cmp r13d, 0x2710 jge SHORT G_M51267_IG08 @@ -72,24 +69,22 @@ G_M51267_IG05: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 call [<unknown method>] ; gcrRegs -[rdi] test eax, eax
- je SHORT G_M51267_IG03
+ jne SHORT G_M51267_IG08
;; size=35 bbWeight=4 PerfScore 41.00
-G_M51267_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r14-r15] - test r12d, r12d - je SHORT G_M51267_IG08 - ;; size=5 bbWeight=1 PerfScore 1.25 -G_M51267_IG07: ; bbWeight=1, epilog, nogc, extend - add rsp, 8
+G_M51267_IG06: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz + jmp SHORT G_M51267_IG03 + ;; size=2 bbWeight=2 PerfScore 4.00 +G_M51267_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + ; gcrRegs -[rbx r14-r15]
pop rbx
- pop r12
pop r13 pop r14 pop r15 pop rbp ret
- ;; size=15 bbWeight=1 PerfScore 4.25
+ ;; size=9 bbWeight=1 PerfScore 3.50
G_M51267_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[rbx]
call [CORINFO_HELP_READYTORUN_NEW] ; gcrRegs +[rax] mov r15, rax @@ -114,7 +109,7 @@ G_M51267_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 { int3 ;; size=49 bbWeight=0 PerfScore 0.00
-; Total bytes of code 172, prolog size 16, PerfScore 106.00, instruction count 55, allocated bytes for code 172 (MethodHash=338d37bc) for method System.Configuration.Internal.WriteFileContext:ReplaceFile(System.String,System.String):this (FullOpts)
+; Total bytes of code 156, prolog size 13, PerfScore 104.00, instruction count 49, allocated bytes for code 156 (MethodHash=338d37bc) for method System.Configuration.Internal.WriteFileContext:ReplaceFile(System.String,System.String):this (FullOpts)
; ============================================================ Unwind Info: @@ -122,14 +117,12 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x0B - CountOfUnwindCodes: 7
+ SizeOfProlog : 0x08 + CountOfUnwindCodes: 5
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x0B UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08 - CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x09 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r12 (12)
+ CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13) CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14) CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)

+3 (+11.11%) : 174846.dasm - System.Security.Cryptography.SHA1CryptoServiceProvider:Dispose(ubyte):this (FullOpts)

@@ -9,9 +9,10 @@ ; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 4, 4 ) ref -> rbx this class-hnd single-def <System.Security.Cryptography.SHA1CryptoServiceProvider>
+; V00 this [V00,T00] ( 4, 3 ) ref -> rbx this class-hnd single-def <System.Security.Cryptography.SHA1CryptoServiceProvider>
; V01 arg1 [V01,T01] ( 3, 3 ) ubyte -> rsi single-def ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V03 cse0 [V03,T02] ( 2, 2 ) int -> rdi "CSE - aggressive"
; ; Lcl frame size = 0 @@ -21,8 +22,11 @@ G_M54186_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[rbx] ;; size=4 bbWeight=1 PerfScore 1.25 G_M54186_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- test sil, sil - je SHORT G_M54186_IG03
+ movzx rdi, sil + test edi, edi + je SHORT G_M54186_IG04 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M54186_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rdi, gword ptr [rbx+0x20] ; gcrRegs +[rdi] cmp dword ptr [rdi], edi @@ -30,14 +34,14 @@ G_M54186_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcrRegs -[rdi] ; gcr arg pop 0 mov byte ptr [rbx+0x18], 1
- ;; size=21 bbWeight=1 PerfScore 10.25 -G_M54186_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=16 bbWeight=0.50 PerfScore 4.50 +G_M54186_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rbx] pop rbx ret ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 27, prolog size 1, PerfScore 13.00, instruction count 10, allocated bytes for code 27 (MethodHash=9cf42c55) for method System.Security.Cryptography.SHA1CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
+; Total bytes of code 30, prolog size 1, PerfScore 8.75, instruction count 11, allocated bytes for code 30 (MethodHash=9cf42c55) for method System.Security.Cryptography.SHA1CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
; ============================================================ Unwind Info:

+3 (+11.11%) : 174939.dasm - System.Security.Cryptography.SHA512CryptoServiceProvider:Dispose(ubyte):this (FullOpts)

@@ -9,9 +9,10 @@ ; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 4, 4 ) ref -> rbx this class-hnd single-def <System.Security.Cryptography.SHA512CryptoServiceProvider>
+; V00 this [V00,T00] ( 4, 3 ) ref -> rbx this class-hnd single-def <System.Security.Cryptography.SHA512CryptoServiceProvider>
; V01 arg1 [V01,T01] ( 3, 3 ) ubyte -> rsi single-def ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V03 cse0 [V03,T02] ( 2, 2 ) int -> rdi "CSE - aggressive"
; ; Lcl frame size = 0 @@ -21,8 +22,11 @@ G_M31021_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[rbx] ;; size=4 bbWeight=1 PerfScore 1.25 G_M31021_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- test sil, sil - je SHORT G_M31021_IG03
+ movzx rdi, sil + test edi, edi + je SHORT G_M31021_IG04 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M31021_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rdi, gword ptr [rbx+0x20] ; gcrRegs +[rdi] cmp dword ptr [rdi], edi @@ -30,14 +34,14 @@ G_M31021_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcrRegs -[rdi] ; gcr arg pop 0 mov byte ptr [rbx+0x18], 1
- ;; size=21 bbWeight=1 PerfScore 10.25 -G_M31021_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=16 bbWeight=0.50 PerfScore 4.50 +G_M31021_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rbx] pop rbx ret ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 27, prolog size 1, PerfScore 13.00, instruction count 10, allocated bytes for code 27 (MethodHash=150886d2) for method System.Security.Cryptography.SHA512CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
+; Total bytes of code 30, prolog size 1, PerfScore 8.75, instruction count 11, allocated bytes for code 30 (MethodHash=150886d2) for method System.Security.Cryptography.SHA512CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
; ============================================================ Unwind Info:

+3 (+11.11%) : 174908.dasm - System.Security.Cryptography.SHA384CryptoServiceProvider:Dispose(ubyte):this (FullOpts)

@@ -9,9 +9,10 @@ ; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 4, 4 ) ref -> rbx this class-hnd single-def <System.Security.Cryptography.SHA384CryptoServiceProvider>
+; V00 this [V00,T00] ( 4, 3 ) ref -> rbx this class-hnd single-def <System.Security.Cryptography.SHA384CryptoServiceProvider>
; V01 arg1 [V01,T01] ( 3, 3 ) ubyte -> rsi single-def ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V03 cse0 [V03,T02] ( 2, 2 ) int -> rdi "CSE - aggressive"
; ; Lcl frame size = 0 @@ -21,8 +22,11 @@ G_M59236_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[rbx] ;; size=4 bbWeight=1 PerfScore 1.25 G_M59236_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- test sil, sil - je SHORT G_M59236_IG03
+ movzx rdi, sil + test edi, edi + je SHORT G_M59236_IG04 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M59236_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rdi, gword ptr [rbx+0x20] ; gcrRegs +[rdi] cmp dword ptr [rdi], edi @@ -30,14 +34,14 @@ G_M59236_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcrRegs -[rdi] ; gcr arg pop 0 mov byte ptr [rbx+0x18], 1
- ;; size=21 bbWeight=1 PerfScore 10.25 -G_M59236_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=16 bbWeight=0.50 PerfScore 4.50 +G_M59236_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rbx] pop rbx ret ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 27, prolog size 1, PerfScore 13.00, instruction count 10, allocated bytes for code 27 (MethodHash=ebc3189b) for method System.Security.Cryptography.SHA384CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
+; Total bytes of code 30, prolog size 1, PerfScore 8.75, instruction count 11, allocated bytes for code 30 (MethodHash=ebc3189b) for method System.Security.Cryptography.SHA384CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
; ============================================================ Unwind Info:

libraries.pmi.linux.x64.checked.mch

-36 (-39.56%) : 63028.dasm - ILCompiler.IBC.IBCProfileParser+IBCBlobKey:Equals(System.Object):ubyte:this (FullOpts)

@@ -8,87 +8,66 @@ ; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 4, 3 ) byref -> r15 this single-def -; V01 arg1 [V01,T00] ( 6, 4.25) ref -> rbx class-hnd single-def <System.Object>
+; V00 this [V00,T01] ( 4, 3 ) byref -> rdi this single-def +; V01 arg1 [V01,T00] ( 5, 4 ) ref -> rsi class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 3, 4.50) ref -> rax class-hnd "spilling QMark2" <ILCompiler.IBC.IBCProfileParser+IBCBlobKey> ; V04 tmp2 [V04,T03] ( 3, 1.50) ubyte -> rax "Inline return value spill temp" ;* V05 tmp3 [V05 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <ILCompiler.IBC.IBCProfileParser+IBCBlobKey>
-; V06 tmp4 [V06,T06] ( 2, 1 ) int -> rax "field V05.Token (fldOffset=0x0)" P-INDEP -; V07 tmp5 [V07,T07] ( 2, 1 ) int -> rcx "field V05.Type (fldOffset=0x4)" P-INDEP -; V08 cse0 [V08,T04] ( 4, 1.25) long -> rdi "CSE - moderate" -; V09 cse1 [V09,T05] ( 3, 1 ) long -> rsi "CSE - moderate"
+; V06 tmp4 [V06,T04] ( 2, 1 ) int -> rax "field V05.Token (fldOffset=0x0)" P-INDEP +; V07 tmp5 [V07,T05] ( 2, 1 ) int -> rcx "field V05.Type (fldOffset=0x4)" P-INDEP
; ; Lcl frame size = 0 G_M25636_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp
- push r15 - push rbx - lea rbp, [rsp+0x10] - mov r15, rdi - ; byrRegs +[r15] - mov rbx, rsi - ; gcrRegs +[rbx] - ;; size=15 bbWeight=1 PerfScore 4.00 -G_M25636_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref, isz - mov rax, rbx
+ mov rbp, rsp + ;; size=4 bbWeight=1 PerfScore 1.25 +G_M25636_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, byref, isz + ; gcrRegs +[rsi] + ; byrRegs +[rdi] + mov rax, rsi
; gcrRegs +[rax] test rax, rax je SHORT G_M25636_IG04 ;; size=8 bbWeight=1 PerfScore 1.50
-G_M25636_IG03: ; bbWeight=0.25, gcrefRegs=0009 {rax rbx}, byrefRegs=8000 {r15}, byref, isz - mov rsi, qword ptr [rax] - mov rdi, 0xD1FFAB1E ; ILCompiler.IBC.IBCProfileParser+IBCBlobKey - cmp rsi, rdi
+G_M25636_IG03: ; bbWeight=0.25, gcrefRegs=0041 {rax rsi}, byrefRegs=0080 {rdi}, byref, isz + mov rcx, 0xD1FFAB1E ; ILCompiler.IBC.IBCProfileParser+IBCBlobKey + cmp qword ptr [rax], rcx
je SHORT G_M25636_IG06
- ;; size=18 bbWeight=0.25 PerfScore 0.88
+ ;; size=15 bbWeight=0.25 PerfScore 1.06
G_M25636_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax rbx] - ; byrRegs -[r15]
+ ; gcrRegs -[rax rsi] + ; byrRegs -[rdi]
xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M25636_IG05: ; bbWeight=0.50, epilog, nogc, extend
- pop rbx - pop r15
pop rbp ret
- ;; size=5 bbWeight=0.50 PerfScore 1.25 -G_M25636_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, gcvars, byref, isz - ; gcrRegs +[rbx] - ; byrRegs +[r15] - cmp rsi, rdi - je SHORT G_M25636_IG08 - ;; size=5 bbWeight=0.50 PerfScore 0.62 -G_M25636_IG07: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref - mov rsi, rbx
+ ;; size=2 bbWeight=0.50 PerfScore 0.75 +G_M25636_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, gcvars, byref, isz
; gcrRegs +[rsi]
- call [CORINFO_HELP_UNBOX] - ; gcrRegs -[rsi] - ;; size=9 bbWeight=0.25 PerfScore 0.81 -G_M25636_IG08: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref, isz - mov eax, dword ptr [rbx+0x08] - mov ecx, dword ptr [rbx+0x0C] - cmp eax, dword ptr [r15] - jne SHORT G_M25636_IG09
+ ; byrRegs +[rdi] + mov eax, dword ptr [rsi+0x08] + mov ecx, dword ptr [rsi+0x0C] + cmp eax, dword ptr [rdi] + jne SHORT G_M25636_IG07
xor eax, eax
- cmp ecx, dword ptr [r15+0x04]
+ cmp ecx, dword ptr [rdi+0x04]
sete al
- jmp SHORT G_M25636_IG10 - ;; size=22 bbWeight=0.50 PerfScore 7.12 -G_M25636_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[rbx] - ; byrRegs -[r15]
+ jmp SHORT G_M25636_IG08 + ;; size=20 bbWeight=0.50 PerfScore 7.12 +G_M25636_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[rsi] + ; byrRegs -[rdi]
xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M25636_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - pop rbx - pop r15
+G_M25636_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
pop rbp ret
- ;; size=5 bbWeight=0.50 PerfScore 1.25
+ ;; size=2 bbWeight=0.50 PerfScore 0.75
-; Total bytes of code 91, prolog size 9, PerfScore 17.69, instruction count 35, allocated bytes for code 91 (MethodHash=acaf9bdb) for method ILCompiler.IBC.IBCProfileParser+IBCBlobKey:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 55, prolog size 4, PerfScore 12.69, instruction count 22, allocated bytes for code 55 (MethodHash=acaf9bdb) for method ILCompiler.IBC.IBCProfileParser+IBCBlobKey:Equals(System.Object):ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -96,11 +75,9 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x04 - CountOfUnwindCodes: 3
+ SizeOfProlog : 0x01 + CountOfUnwindCodes: 1
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)

-35 (-38.04%) : 58829.dasm - Microsoft.Diagnostics.Tracing.CLRRuntimeActivityComputer+IdOfIncompleteAction:Equals(System.Object):ubyte:this (FullOpts)

@@ -8,87 +8,66 @@ ; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 4, 3 ) byref -> r15 this single-def -; V01 arg1 [V01,T00] ( 6, 4.25) ref -> rbx class-hnd single-def <System.Object>
+; V00 this [V00,T01] ( 4, 3 ) byref -> rdi this single-def +; V01 arg1 [V01,T00] ( 5, 4 ) ref -> rsi class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 3, 4.50) ref -> rax class-hnd "spilling QMark2" <Microsoft.Diagnostics.Tracing.CLRRuntimeActivityComputer+IdOfIncompleteAction> ; V04 tmp2 [V04,T03] ( 3, 1.50) ubyte -> rax "Inline return value spill temp" ;* V05 tmp3 [V05 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <Microsoft.Diagnostics.Tracing.CLRRuntimeActivityComputer+IdOfIncompleteAction>
-; V06 tmp4 [V06,T06] ( 2, 1 ) long -> rax "field V05.Identifier (fldOffset=0x0)" P-INDEP -; V07 tmp5 [V07,T07] ( 2, 1 ) int -> rcx "field V05.ThreadID (fldOffset=0x8)" P-INDEP -; V08 cse0 [V08,T04] ( 4, 1.25) long -> rdi "CSE - moderate" -; V09 cse1 [V09,T05] ( 3, 1 ) long -> rsi "CSE - moderate"
+; V06 tmp4 [V06,T04] ( 2, 1 ) long -> rax "field V05.Identifier (fldOffset=0x0)" P-INDEP +; V07 tmp5 [V07,T05] ( 2, 1 ) int -> rcx "field V05.ThreadID (fldOffset=0x8)" P-INDEP
; ; Lcl frame size = 0 G_M52071_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp
- push r15 - push rbx - lea rbp, [rsp+0x10] - mov r15, rdi - ; byrRegs +[r15] - mov rbx, rsi - ; gcrRegs +[rbx] - ;; size=15 bbWeight=1 PerfScore 4.00 -G_M52071_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref, isz - mov rax, rbx
+ mov rbp, rsp + ;; size=4 bbWeight=1 PerfScore 1.25 +G_M52071_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, byref, isz + ; gcrRegs +[rsi] + ; byrRegs +[rdi] + mov rax, rsi
; gcrRegs +[rax] test rax, rax je SHORT G_M52071_IG04 ;; size=8 bbWeight=1 PerfScore 1.50
-G_M52071_IG03: ; bbWeight=0.25, gcrefRegs=0009 {rax rbx}, byrefRegs=8000 {r15}, byref, isz - mov rsi, qword ptr [rax] - mov rdi, 0xD1FFAB1E ; Microsoft.Diagnostics.Tracing.CLRRuntimeActivityComputer+IdOfIncompleteAction - cmp rsi, rdi
+G_M52071_IG03: ; bbWeight=0.25, gcrefRegs=0041 {rax rsi}, byrefRegs=0080 {rdi}, byref, isz + mov rcx, 0xD1FFAB1E ; Microsoft.Diagnostics.Tracing.CLRRuntimeActivityComputer+IdOfIncompleteAction + cmp qword ptr [rax], rcx
je SHORT G_M52071_IG06
- ;; size=18 bbWeight=0.25 PerfScore 0.88
+ ;; size=15 bbWeight=0.25 PerfScore 1.06
G_M52071_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax rbx] - ; byrRegs -[r15]
+ ; gcrRegs -[rax rsi] + ; byrRegs -[rdi]
xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M52071_IG05: ; bbWeight=0.50, epilog, nogc, extend
- pop rbx - pop r15
pop rbp ret
- ;; size=5 bbWeight=0.50 PerfScore 1.25 -G_M52071_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, gcvars, byref, isz - ; gcrRegs +[rbx] - ; byrRegs +[r15] - cmp rsi, rdi - je SHORT G_M52071_IG08 - ;; size=5 bbWeight=0.50 PerfScore 0.62 -G_M52071_IG07: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref - mov rsi, rbx
+ ;; size=2 bbWeight=0.50 PerfScore 0.75 +G_M52071_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, gcvars, byref, isz
; gcrRegs +[rsi]
- call [CORINFO_HELP_UNBOX] - ; gcrRegs -[rsi] - ;; size=9 bbWeight=0.25 PerfScore 0.81 -G_M52071_IG08: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref, isz - mov rax, qword ptr [rbx+0x08] - mov ecx, dword ptr [rbx+0x10] - cmp qword ptr [r15], rax - jne SHORT G_M52071_IG09
+ ; byrRegs +[rdi] + mov rax, qword ptr [rsi+0x08] + mov ecx, dword ptr [rsi+0x10] + cmp qword ptr [rdi], rax + jne SHORT G_M52071_IG07
xor eax, eax
- cmp dword ptr [r15+0x08], ecx
+ cmp dword ptr [rdi+0x08], ecx
sete al
- jmp SHORT G_M52071_IG10 - ;; size=23 bbWeight=0.50 PerfScore 7.12 -G_M52071_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[rbx] - ; byrRegs -[r15]
+ jmp SHORT G_M52071_IG08 + ;; size=22 bbWeight=0.50 PerfScore 7.12 +G_M52071_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[rsi] + ; byrRegs -[rdi]
xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M52071_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - pop rbx - pop r15
+G_M52071_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
pop rbp ret
- ;; size=5 bbWeight=0.50 PerfScore 1.25
+ ;; size=2 bbWeight=0.50 PerfScore 0.75
-; Total bytes of code 92, prolog size 9, PerfScore 17.69, instruction count 35, allocated bytes for code 92 (MethodHash=cc1f3498) for method Microsoft.Diagnostics.Tracing.CLRRuntimeActivityComputer+IdOfIncompleteAction:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 57, prolog size 4, PerfScore 12.69, instruction count 22, allocated bytes for code 57 (MethodHash=cc1f3498) for method Microsoft.Diagnostics.Tracing.CLRRuntimeActivityComputer+IdOfIncompleteAction:Equals(System.Object):ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -96,11 +75,9 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x04 - CountOfUnwindCodes: 3
+ SizeOfProlog : 0x01 + CountOfUnwindCodes: 1
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)

-32 (-30.48%) : 291734.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan1[uint]):int (FullOpts)

@@ -9,14 +9,16 @@ ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]> ;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
-; V02 loc0 [V02,T00] ( 7, 24.50) int -> registers
+; V02 loc0 [V02,T00] ( 7, 24.50) int -> rax
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T01] ( 6, 20 ) int -> r8 "dup spill" -; V05 tmp2 [V05,T05] ( 3, 5.50) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP -; V06 tmp3 [V06,T04] ( 5, 7 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP -; V07 tmp4 [V07,T06] ( 3, 5.50) byref -> rdx single-def "field V01._reference (fldOffset=0x0)" P-INDEP -; V08 tmp5 [V08,T03] ( 6, 7.50) int -> rcx single-def "field V01._length (fldOffset=0x8)" P-INDEP -; V09 cse0 [V09,T02] ( 6, 13.50) long -> r9 multi-def "CSE - aggressive"
+; V04 tmp1 [V04,T01] ( 2, 16 ) int -> rax "dup spill" +; V05 tmp2 [V05,T07] ( 2, 5 ) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP +; V06 tmp3 [V06,T04] ( 4, 6.50) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP +; V07 tmp4 [V07,T08] ( 2, 5 ) byref -> rdx single-def "field V01._reference (fldOffset=0x0)" P-INDEP +; V08 tmp5 [V08,T03] ( 5, 7 ) int -> rcx single-def "field V01._length (fldOffset=0x8)" P-INDEP +; V09 cse0 [V09,T05] ( 3, 8.50) int -> r9 "CSE - aggressive" +; V10 cse1 [V10,T06] ( 3, 8.50) int -> r8 "CSE - aggressive" +; V11 cse2 [V11,T02] ( 3, 12 ) long -> r8 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -32,72 +34,59 @@ G_M264_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, b G_M264_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; byrRegs -[rdx rdi] cmp esi, ecx
- jl SHORT G_M264_IG12 - jmp SHORT G_M264_IG10
+ jl SHORT G_M264_IG11 + jmp SHORT G_M264_IG07
;; size=6 bbWeight=0.50 PerfScore 1.62 G_M264_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref ; byrRegs +[rdx rdi]
- mov r8d, ecx - ;; size=3 bbWeight=0.50 PerfScore 0.12
+ mov eax, ecx + ;; size=2 bbWeight=0.50 PerfScore 0.12
G_M264_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref, isz
- dec r8d - mov eax, r8d - test eax, eax - jl SHORT G_M264_IG06
+ dec eax + js SHORT G_M264_IG09
cmp eax, esi
- jae SHORT G_M264_IG14 - mov r9d, eax - mov r10d, dword ptr [rdi+4*r9] - cmp eax, ecx - jae SHORT G_M264_IG14 - cmp r10d, dword ptr [rdx+4*r9] - je SHORT G_M264_IG08 - ;; size=31 bbWeight=4 PerfScore 42.00 -G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref, isz - test r8d, r8d - jge SHORT G_M264_IG09 - xor eax, eax - ;; size=7 bbWeight=0.50 PerfScore 0.75 -G_M264_IG07: ; bbWeight=0.50, epilog, nogc, extend - pop rbp - ret - ;; size=2 bbWeight=0.50 PerfScore 0.75 -G_M264_IG08: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, gcvars, byref, isz
+ jae SHORT G_M264_IG13
mov r8d, eax
- jmp SHORT G_M264_IG05 - ;; size=5 bbWeight=2 PerfScore 4.50 -G_M264_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref, isz - cmp r8d, esi - jae SHORT G_M264_IG14 - mov r9d, r8d - mov eax, dword ptr [rdi+4*r9] - cmp r8d, ecx - jae SHORT G_M264_IG14 - cmp eax, dword ptr [rdx+4*r9] - jb SHORT G_M264_IG12 - ;; size=23 bbWeight=0.50 PerfScore 4.38 -G_M264_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov r9d, dword ptr [rdi+4*r8] + cmp eax, ecx + jae SHORT G_M264_IG13 + mov r8d, dword ptr [rdx+4*r8] + cmp r9d, r8d + je SHORT G_M264_IG05 + ;; size=28 bbWeight=4 PerfScore 37.00 +G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rdx rdi]
+ cmp r8d, r9d + ja SHORT G_M264_IG11 + ;; size=5 bbWeight=0.50 PerfScore 0.62 +G_M264_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov eax, 1 ;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M264_IG11: ; bbWeight=0.50, epilog, nogc, extend
+G_M264_IG08: ; bbWeight=0.50, epilog, nogc, extend
pop rbp ret ;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M264_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M264_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + xor eax, eax + ;; size=2 bbWeight=0.50 PerfScore 0.12 +G_M264_IG10: ; bbWeight=0.50, epilog, nogc, extend + pop rbp + ret + ;; size=2 bbWeight=0.50 PerfScore 0.75 +G_M264_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov eax, -1 ;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M264_IG13: ; bbWeight=0.50, epilog, nogc, extend
+G_M264_IG12: ; bbWeight=0.50, epilog, nogc, extend
pop rbp ret ;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M264_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M264_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 105, prolog size 4, PerfScore 58.38, instruction count 43, allocated bytes for code 105 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
+; Total bytes of code 73, prolog size 4, PerfScore 44.50, instruction count 32, allocated bytes for code 73 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
; ============================================================ Unwind Info:

+3 (+11.11%) : 223676.dasm - System.Security.Cryptography.SHA512CryptoServiceProvider:Dispose(ubyte):this (FullOpts)

@@ -8,9 +8,10 @@ ; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 4, 4 ) ref -> rbx this class-hnd single-def <System.Security.Cryptography.SHA512CryptoServiceProvider>
+; V00 this [V00,T00] ( 4, 3 ) ref -> rbx this class-hnd single-def <System.Security.Cryptography.SHA512CryptoServiceProvider>
; V01 arg1 [V01,T01] ( 3, 3 ) ubyte -> rsi single-def ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V03 cse0 [V03,T02] ( 2, 2 ) int -> rdi "CSE - aggressive"
; ; Lcl frame size = 0 @@ -20,8 +21,11 @@ G_M31021_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[rbx] ;; size=4 bbWeight=1 PerfScore 1.25 G_M31021_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- test sil, sil - je SHORT G_M31021_IG03
+ movzx rdi, sil + test edi, edi + je SHORT G_M31021_IG04 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M31021_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rdi, gword ptr [rbx+0x20] ; gcrRegs +[rdi] cmp dword ptr [rdi], edi @@ -29,14 +33,14 @@ G_M31021_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcrRegs -[rdi] ; gcr arg pop 0 mov byte ptr [rbx+0x18], 1
- ;; size=21 bbWeight=1 PerfScore 10.25 -G_M31021_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=16 bbWeight=0.50 PerfScore 4.50 +G_M31021_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rbx] pop rbx ret ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 27, prolog size 1, PerfScore 13.00, instruction count 10, allocated bytes for code 27 (MethodHash=150886d2) for method System.Security.Cryptography.SHA512CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
+; Total bytes of code 30, prolog size 1, PerfScore 8.75, instruction count 11, allocated bytes for code 30 (MethodHash=150886d2) for method System.Security.Cryptography.SHA512CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
; ============================================================ Unwind Info:

+14 (+16.09%) : 138480.dasm - System.Xml.DocumentXPathNavigator:get_ValueDocument():System.String:this (FullOpts)

@@ -14,15 +14,18 @@ ;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Xml.XmlDocument> ; V04 tmp2 [V04,T03] ( 3, 4.25) ref -> rax single-def "CASTCLASS eval op1" ; V05 tmp3 [V05,T04] ( 3, 1.25) long -> rsi "fgMakeTemp is creating a new local variable"
-; V06 tmp4 [V06,T00] ( 6, 8.75) ref -> rdi class-hnd "spilling QMark2" <System.Xml.XmlElement> -; V07 tmp5 [V07,T01] ( 3, 6 ) ref -> rdi single-def "argument with side effect"
+; V06 tmp4 [V06,T01] ( 5, 5.75) ref -> rdi class-hnd "spilling QMark2" <System.Xml.XmlElement> +; V07 tmp5 [V07,T00] ( 3, 6 ) ref -> rdi single-def "argument with side effect" +; V08 cse0 [V08,T05] ( 3, 1 ) long -> rbx "CSE - moderate"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M56653_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG push rbp
- mov rbp, rsp - ;; size=4 bbWeight=1 PerfScore 1.25
+ push rbx + push rax + lea rbp, [rsp+0x10] + ;; size=8 bbWeight=1 PerfScore 3.50
G_M56653_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[rdi] mov rdi, gword ptr [rdi+0x08] @@ -37,10 +40,11 @@ G_M56653_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byr je SHORT G_M56653_IG07 ;; size=30 bbWeight=1 PerfScore 10.75 G_M56653_IG03: ; bbWeight=0.25, gcrefRegs=0081 {rax rdi}, byrefRegs=0000 {}, byref, isz
+ mov rbx, qword ptr [rdi]
mov rsi, 0xD1FFAB1E ; System.Xml.XmlElement
- cmp qword ptr [rdi], rsi
+ cmp rbx, rsi
je SHORT G_M56653_IG05
- ;; size=15 bbWeight=0.25 PerfScore 1.06
+ ;; size=18 bbWeight=0.25 PerfScore 0.88
G_M56653_IG04: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref ; gcrRegs -[rdi] mov rdi, rsi @@ -51,26 +55,29 @@ G_M56653_IG04: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, mov rdi, rax ; gcrRegs +[rdi] ;; size=14 bbWeight=0.12 PerfScore 0.22
-G_M56653_IG05: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+G_M56653_IG05: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
- mov rax, qword ptr [rdi] - mov rax, qword ptr [rax+0x70] - ;; size=7 bbWeight=1 PerfScore 4.00 -G_M56653_IG06: ; bbWeight=1, epilog, nogc, extend
+ mov rax, qword ptr [rbx+0x70] + ;; size=4 bbWeight=0.50 PerfScore 1.00 +G_M56653_IG06: ; bbWeight=0.50, epilog, nogc, extend + add rsp, 8 + pop rbx
pop rbp tail.jmp [rax+0x18]<unknown method>
- ;; size=5 bbWeight=1 PerfScore 2.50
+ ;; size=10 bbWeight=0.50 PerfScore 1.62
G_M56653_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[rdi] mov rax, 0xD1FFAB1E ; gcrRegs +[rax] ;; size=10 bbWeight=0.50 PerfScore 0.12 G_M56653_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 8 + pop rbx
pop rbp ret
- ;; size=2 bbWeight=0.50 PerfScore 0.75
+ ;; size=7 bbWeight=0.50 PerfScore 1.12
-; Total bytes of code 87, prolog size 4, PerfScore 20.66, instruction count 24, allocated bytes for code 87 (MethodHash=6dd022b2) for method System.Xml.DocumentXPathNavigator:get_ValueDocument():System.String:this (FullOpts)
+; Total bytes of code 101, prolog size 8, PerfScore 19.22, instruction count 30, allocated bytes for code 101 (MethodHash=6dd022b2) for method System.Xml.DocumentXPathNavigator:get_ValueDocument():System.String:this (FullOpts)
; ============================================================ Unwind Info: @@ -78,9 +85,11 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x01 - CountOfUnwindCodes: 1
+ SizeOfProlog : 0x03 + CountOfUnwindCodes: 3
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
+ CodeOffset: 0x03 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08 + CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)

+14 (+17.95%) : 237018.dasm - Microsoft.Build.Internal.ProjectXmlUtilities:GetAttributeValue(Microsoft.Build.Construction.XmlElementWithLocation,System.String):System.String (FullOpts)

@@ -8,20 +8,23 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T01] ( 4, 4 ) ref -> rdi class-hnd single-def <Microsoft.Build.Construction.XmlElementWithLocation> -; V01 arg1 [V01,T03] ( 3, 3 ) ref -> rsi class-hnd single-def <System.String>
+; V00 arg0 [V00,T00] ( 4, 4 ) ref -> rdi class-hnd single-def <Microsoft.Build.Construction.XmlElementWithLocation> +; V01 arg1 [V01,T02] ( 3, 3 ) ref -> rsi class-hnd single-def <System.String>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T02] ( 3, 6 ) ref -> rax single-def "CASTCLASS eval op1" -; V04 tmp2 [V04,T04] ( 3, 3 ) long -> rsi "fgMakeTemp is creating a new local variable" -; V05 tmp3 [V05,T00] ( 6, 8.50) ref -> rdi class-hnd "spilling QMark2" <Microsoft.Build.Construction.XmlAttributeWithLocation>
+; V03 tmp1 [V03,T03] ( 3, 4.25) ref -> rax single-def "CASTCLASS eval op1" +; V04 tmp2 [V04,T04] ( 3, 1.25) long -> rsi "fgMakeTemp is creating a new local variable" +; V05 tmp3 [V05,T01] ( 5, 5.75) ref -> rdi class-hnd "spilling QMark2" <Microsoft.Build.Construction.XmlAttributeWithLocation>
;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline return value spill temp" <System.String>
+; V07 cse0 [V07,T05] ( 3, 1 ) long -> rbx "CSE - moderate"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M36414_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG push rbp
- mov rbp, rsp - ;; size=4 bbWeight=1 PerfScore 1.25
+ push rbx + push rax + lea rbp, [rsp+0x10] + ;; size=8 bbWeight=1 PerfScore 3.50
G_M36414_IG02: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[rsi rdi] mov rax, qword ptr [rdi] @@ -34,11 +37,12 @@ G_M36414_IG02: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, je SHORT G_M36414_IG07 ;; size=21 bbWeight=1 PerfScore 8.50 G_M36414_IG03: ; bbWeight=0.25, gcrefRegs=0081 {rax rdi}, byrefRegs=0000 {}, byref, isz
+ mov rbx, qword ptr [rdi]
mov rsi, 0xD1FFAB1E ; Microsoft.Build.Construction.XmlAttributeWithLocation
- cmp qword ptr [rdi], rsi
+ cmp rbx, rsi
je SHORT G_M36414_IG05
- ;; size=15 bbWeight=0.25 PerfScore 1.06 -G_M36414_IG04: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
+ ;; size=18 bbWeight=0.25 PerfScore 0.88 +G_M36414_IG04: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi] mov rdi, rsi mov rsi, rax @@ -47,27 +51,30 @@ G_M36414_IG04: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byr ; gcrRegs -[rsi] mov rdi, rax ; gcrRegs +[rdi]
- ;; size=14 bbWeight=1 PerfScore 1.75
+ ;; size=14 bbWeight=0.12 PerfScore 0.22
G_M36414_IG05: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref ; gcrRegs -[rax]
- mov rax, qword ptr [rdi] - mov rax, qword ptr [rax+0x48] - ;; size=7 bbWeight=0.50 PerfScore 2.00
+ mov rax, qword ptr [rbx+0x48] + ;; size=4 bbWeight=0.50 PerfScore 1.00
G_M36414_IG06: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 8 + pop rbx
pop rbp tail.jmp [rax+0x30]<unknown method>
- ;; size=5 bbWeight=0.50 PerfScore 1.25
+ ;; size=10 bbWeight=0.50 PerfScore 1.62
G_M36414_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[rdi] mov rax, 0xD1FFAB1E ; gcrRegs +[rax] ;; size=10 bbWeight=0.50 PerfScore 0.12 G_M36414_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 8 + pop rbx
pop rbp ret
- ;; size=2 bbWeight=0.50 PerfScore 0.75
+ ;; size=7 bbWeight=0.50 PerfScore 1.12
-; Total bytes of code 78, prolog size 4, PerfScore 16.69, instruction count 22, allocated bytes for code 78 (MethodHash=f66a71c1) for method Microsoft.Build.Internal.ProjectXmlUtilities:GetAttributeValue(Microsoft.Build.Construction.XmlElementWithLocation,System.String):System.String (FullOpts)
+; Total bytes of code 92, prolog size 8, PerfScore 16.97, instruction count 28, allocated bytes for code 92 (MethodHash=f66a71c1) for method Microsoft.Build.Internal.ProjectXmlUtilities:GetAttributeValue(Microsoft.Build.Construction.XmlElementWithLocation,System.String):System.String (FullOpts)
; ============================================================ Unwind Info: @@ -75,9 +82,11 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x01 - CountOfUnwindCodes: 1
+ SizeOfProlog : 0x03 + CountOfUnwindCodes: 3
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
+ CodeOffset: 0x03 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08 + CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)

libraries_tests.run.linux.x64.Release.mch

-34 (-43.59%) : 268653.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)

@@ -9,73 +9,53 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 3 ) byref -> rdi this single-def
-; V01 arg1 [V01,T00] ( 5, 4.50) ref -> rbx class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 4, 4 ) ref -> rsi class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> rax class-hnd "spilling QMark2" <System.Int32>
-; V04 tmp2 [V04,T03] ( 2, 4 ) int -> r15 "impAppendStmt" -; V05 cse0 [V05,T04] ( 4, 2.50) long -> rcx "CSE - aggressive" -; V06 cse1 [V06,T05] ( 3, 2 ) long -> rsi "CSE - aggressive"
+; V04 tmp2 [V04,T03] ( 2, 4 ) int -> rax "impAppendStmt" +; V05 cse0 [V05,T04] ( 2, 1 ) long -> rcx "CSE - moderate"
; ; Lcl frame size = 0 G_M40448_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG push rbp
- push r15 - push rbx - lea rbp, [rsp+0x10] - mov rbx, rsi - ; gcrRegs +[rbx] - ;; size=12 bbWeight=1 PerfScore 3.75 -G_M40448_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, byref, isz
+ mov rbp, rsp + ;; size=4 bbWeight=1 PerfScore 1.25 +G_M40448_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, byref, isz + ; gcrRegs +[rsi]
; byrRegs +[rdi]
- mov rax, rbx
+ mov rax, rsi
; gcrRegs +[rax] test rax, rax
- je SHORT G_M40448_IG08 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M40448_IG03: ; bbWeight=0.50, gcrefRegs=0009 {rax rbx}, byrefRegs=0080 {rdi}, byref, isz - mov rsi, qword ptr [rax] - mov rcx, 0xD1FFAB1E ; System.Int32 - cmp rsi, rcx - jne SHORT G_M40448_IG08 - ;; size=18 bbWeight=0.50 PerfScore 1.75 -G_M40448_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, byref, isz - ; gcrRegs -[rax] - mov r15d, dword ptr [rdi] - cmp rsi, rcx
je SHORT G_M40448_IG06
- ;; size=8 bbWeight=1 PerfScore 3.25 -G_M40448_IG05: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - ; byrRegs -[rdi] - mov rsi, rbx - ; gcrRegs +[rsi] - mov rdi, rcx - call CORINFO_HELP_UNBOX - ; gcrRegs -[rsi] - ;; size=11 bbWeight=0.50 PerfScore 0.75 -G_M40448_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - xor eax, eax - cmp r15d, dword ptr [rbx+0x08]
+ ;; size=8 bbWeight=1 PerfScore 1.50 +G_M40448_IG03: ; bbWeight=0.50, gcrefRegs=0041 {rax rsi}, byrefRegs=0080 {rdi}, byref, isz + mov rcx, 0xD1FFAB1E ; System.Int32 + cmp qword ptr [rax], rcx + jne SHORT G_M40448_IG06 + ;; size=15 bbWeight=0.50 PerfScore 2.12 +G_M40448_IG04: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, byref + ; gcrRegs -[rax] + mov eax, dword ptr [rdi] + cmp eax, dword ptr [rsi+0x08]
sete al
- ;; size=9 bbWeight=1 PerfScore 4.25 -G_M40448_IG07: ; bbWeight=1, epilog, nogc, extend - pop rbx - pop r15
+ movzx rax, al + ;; size=11 bbWeight=1 PerfScore 6.25 +G_M40448_IG05: ; bbWeight=1, epilog, nogc, extend
pop rbp ret
- ;; size=5 bbWeight=1 PerfScore 2.50 -G_M40448_IG08: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[rbx]
+ ;; size=2 bbWeight=1 PerfScore 1.50 +G_M40448_IG06: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[rsi] + ; byrRegs -[rdi]
xor eax, eax
- ;; size=2 bbWeight=0.25 PerfScore 0.06 -G_M40448_IG09: ; bbWeight=0.25, epilog, nogc, extend - pop rbx - pop r15
+ ;; size=2 bbWeight=1 PerfScore 0.25 +G_M40448_IG07: ; bbWeight=1, epilog, nogc, extend
pop rbp ret
- ;; size=5 bbWeight=0.25 PerfScore 0.62
+ ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 78, prolog size 9, PerfScore 18.44, instruction count 30, allocated bytes for code 78 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 44, prolog size 4, PerfScore 14.38, instruction count 17, allocated bytes for code 44 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -83,11 +63,9 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x04 - CountOfUnwindCodes: 3
+ SizeOfProlog : 0x01 + CountOfUnwindCodes: 1
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)

-34 (-43.59%) : 679785.dasm - System.UInt32:Equals(System.Object):ubyte:this (Tier1)

@@ -9,73 +9,53 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 3 ) byref -> rdi this single-def
-; V01 arg1 [V01,T00] ( 5, 4.50) ref -> rbx class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 4, 4 ) ref -> rsi class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> rax class-hnd "spilling QMark2" <System.UInt32>
-; V04 tmp2 [V04,T03] ( 2, 4 ) int -> r15 "impAppendStmt" -; V05 cse0 [V05,T04] ( 4, 2.50) long -> rcx "CSE - aggressive" -; V06 cse1 [V06,T05] ( 3, 2 ) long -> rsi "CSE - aggressive"
+; V04 tmp2 [V04,T03] ( 2, 4 ) int -> rax "impAppendStmt" +; V05 cse0 [V05,T04] ( 2, 1 ) long -> rcx "CSE - moderate"
; ; Lcl frame size = 0 G_M22229_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG push rbp
- push r15 - push rbx - lea rbp, [rsp+0x10] - mov rbx, rsi - ; gcrRegs +[rbx] - ;; size=12 bbWeight=1 PerfScore 3.75 -G_M22229_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, byref, isz
+ mov rbp, rsp + ;; size=4 bbWeight=1 PerfScore 1.25 +G_M22229_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, byref, isz + ; gcrRegs +[rsi]
; byrRegs +[rdi]
- mov rax, rbx
+ mov rax, rsi
; gcrRegs +[rax] test rax, rax
- je SHORT G_M22229_IG08 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M22229_IG03: ; bbWeight=0.50, gcrefRegs=0009 {rax rbx}, byrefRegs=0080 {rdi}, byref, isz - mov rsi, qword ptr [rax] - mov rcx, 0xD1FFAB1E ; System.UInt32 - cmp rsi, rcx - jne SHORT G_M22229_IG08 - ;; size=18 bbWeight=0.50 PerfScore 1.75 -G_M22229_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, byref, isz - ; gcrRegs -[rax] - mov r15d, dword ptr [rdi] - cmp rsi, rcx
je SHORT G_M22229_IG06
- ;; size=8 bbWeight=1 PerfScore 3.25 -G_M22229_IG05: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - ; byrRegs -[rdi] - mov rsi, rbx - ; gcrRegs +[rsi] - mov rdi, rcx - call CORINFO_HELP_UNBOX - ; gcrRegs -[rsi] - ;; size=11 bbWeight=0.50 PerfScore 0.75 -G_M22229_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - xor eax, eax - cmp r15d, dword ptr [rbx+0x08]
+ ;; size=8 bbWeight=1 PerfScore 1.50 +G_M22229_IG03: ; bbWeight=0.50, gcrefRegs=0041 {rax rsi}, byrefRegs=0080 {rdi}, byref, isz + mov rcx, 0xD1FFAB1E ; System.UInt32 + cmp qword ptr [rax], rcx + jne SHORT G_M22229_IG06 + ;; size=15 bbWeight=0.50 PerfScore 2.12 +G_M22229_IG04: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, byref + ; gcrRegs -[rax] + mov eax, dword ptr [rdi] + cmp eax, dword ptr [rsi+0x08]
sete al
- ;; size=9 bbWeight=1 PerfScore 4.25 -G_M22229_IG07: ; bbWeight=1, epilog, nogc, extend - pop rbx - pop r15
+ movzx rax, al + ;; size=11 bbWeight=1 PerfScore 6.25 +G_M22229_IG05: ; bbWeight=1, epilog, nogc, extend
pop rbp ret
- ;; size=5 bbWeight=1 PerfScore 2.50 -G_M22229_IG08: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[rbx]
+ ;; size=2 bbWeight=1 PerfScore 1.50 +G_M22229_IG06: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[rsi] + ; byrRegs -[rdi]
xor eax, eax
- ;; size=2 bbWeight=0.25 PerfScore 0.06 -G_M22229_IG09: ; bbWeight=0.25, epilog, nogc, extend - pop rbx - pop r15
+ ;; size=2 bbWeight=1 PerfScore 0.25 +G_M22229_IG07: ; bbWeight=1, epilog, nogc, extend
pop rbp ret
- ;; size=5 bbWeight=0.25 PerfScore 0.62
+ ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 78, prolog size 9, PerfScore 18.44, instruction count 30, allocated bytes for code 78 (MethodHash=4843a92a) for method System.UInt32:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 44, prolog size 4, PerfScore 14.38, instruction count 17, allocated bytes for code 44 (MethodHash=4843a92a) for method System.UInt32:Equals(System.Object):ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -83,11 +63,9 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x04 - CountOfUnwindCodes: 3
+ SizeOfProlog : 0x01 + CountOfUnwindCodes: 1
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)

-34 (-43.59%) : 692589.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)

@@ -9,73 +9,54 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 3 ) byref -> rdi this single-def
-; V01 arg1 [V01,T00] ( 5, 4.50) ref -> rbx class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 4, 4 ) ref -> rsi class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> rsi class-hnd "spilling QMark2" <System.Int32> -; V04 tmp2 [V04,T03] ( 2, 4 ) int -> r15 "impAppendStmt" -; V05 cse0 [V05,T04] ( 4, 2.50) long -> rax "CSE - aggressive" -; V06 cse1 [V06,T05] ( 3, 2 ) long -> rsi "CSE - aggressive"
+; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> rax class-hnd "spilling QMark2" <System.Int32> +; V04 tmp2 [V04,T03] ( 2, 4 ) int -> rax "impAppendStmt" +; V05 cse0 [V05,T04] ( 2, 1 ) long -> rcx "CSE - moderate"
; ; Lcl frame size = 0 G_M40448_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG push rbp
- push r15 - push rbx - lea rbp, [rsp+0x10] - mov rbx, rsi - ; gcrRegs +[rbx] - ;; size=12 bbWeight=1 PerfScore 3.75 -G_M40448_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, byref, isz
+ mov rbp, rsp + ;; size=4 bbWeight=1 PerfScore 1.25 +G_M40448_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, byref, isz + ; gcrRegs +[rsi]
; byrRegs +[rdi]
- mov rsi, rbx - ; gcrRegs +[rsi] - test rsi, rsi - je SHORT G_M40448_IG08
+ mov rax, rsi + ; gcrRegs +[rax] + test rax, rax + je SHORT G_M40448_IG04
;; size=8 bbWeight=1 PerfScore 1.50
-G_M40448_IG03: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0080 {rdi}, byref, isz - mov rsi, qword ptr [rsi] - ; gcrRegs -[rsi] - mov rax, 0xD1FFAB1E ; System.Int32 - cmp rsi, rax - jne SHORT G_M40448_IG08 - ;; size=18 bbWeight=0.50 PerfScore 1.75 -G_M40448_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, byref, isz - mov r15d, dword ptr [rdi] - cmp rsi, rax
+G_M40448_IG03: ; bbWeight=0.50, gcrefRegs=0041 {rax rsi}, byrefRegs=0080 {rdi}, byref, isz + mov rcx, 0xD1FFAB1E ; System.Int32 + cmp qword ptr [rax], rcx
je SHORT G_M40448_IG06
- ;; size=8 bbWeight=1 PerfScore 3.25 -G_M40448_IG05: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ;; size=15 bbWeight=0.50 PerfScore 2.12 +G_M40448_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[rax rsi]
; byrRegs -[rdi]
- mov rsi, rbx
+ xor eax, eax + ;; size=2 bbWeight=1 PerfScore 0.25 +G_M40448_IG05: ; bbWeight=1, epilog, nogc, extend + pop rbp + ret + ;; size=2 bbWeight=1 PerfScore 1.50 +G_M40448_IG06: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, gcvars, byref
; gcrRegs +[rsi]
- mov rdi, rax - call CORINFO_HELP_UNBOX - ; gcrRegs -[rsi] - ;; size=11 bbWeight=0.50 PerfScore 0.75 -G_M40448_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - xor eax, eax - cmp r15d, dword ptr [rbx+0x08]
+ ; byrRegs +[rdi] + mov eax, dword ptr [rdi] + cmp eax, dword ptr [rsi+0x08]
sete al
- ;; size=9 bbWeight=1 PerfScore 4.25
+ movzx rax, al + ;; size=11 bbWeight=1 PerfScore 6.25
G_M40448_IG07: ; bbWeight=1, epilog, nogc, extend
- pop rbx - pop r15
pop rbp ret
- ;; size=5 bbWeight=1 PerfScore 2.50 -G_M40448_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[rbx] - xor eax, eax - ;; size=2 bbWeight=0 PerfScore 0.00 -G_M40448_IG09: ; bbWeight=0, epilog, nogc, extend - pop rbx - pop r15 - pop rbp - ret - ;; size=5 bbWeight=0 PerfScore 0.00
+ ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 78, prolog size 9, PerfScore 17.75, instruction count 30, allocated bytes for code 78 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 44, prolog size 4, PerfScore 14.38, instruction count 17, allocated bytes for code 44 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -83,11 +64,9 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x04 - CountOfUnwindCodes: 3
+ SizeOfProlog : 0x01 + CountOfUnwindCodes: 1
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)

+29 (+11.11%) : 246225.dasm - System.Collections.Tests.IEnumerableGenericTests1[System.Collections.Generic.KeyValuePair2[int,int]]:b_552(System.Collections.Generic.IEnumerator1[System.Collections.Generic.KeyValuePair2[int,int]],System.Collections.Generic.KeyValuePair`2[int,int][],int):this (Tier1)

@@ -10,7 +10,7 @@ ; Final local variable assignments ; ; V00 this [V00,T03] ( 4, 3 ) ref -> rdi this class-hnd single-def <System.Collections.Tests.IEnumerable_Generic_Tests`1[System.Collections.Generic.KeyValuePair`2[int,int]]>
-; V01 arg1 [V01,T00] ( 11, 4.10) ref -> rbx class-hnd single-def <System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[int,int]]>
+; V01 arg1 [V01,T00] ( 11, 3.90) ref -> rbx class-hnd single-def <System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[int,int]]>
; V02 arg2 [V02,T01] ( 6, 4 ) ref -> rdx class-hnd single-def <System.Collections.Generic.KeyValuePair`2[int,int][]> ; V03 arg3 [V03,T02] ( 4, 3.80) int -> r15 single-def ; V04 OutArgs [V04 ] ( 1, 1 ) struct ( 8) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" @@ -18,28 +18,32 @@ ;* V06 tmp2 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Collections.Generic.SortedDictionary`2+Enumerator[int,int]> ;* V07 tmp3 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Collections.Generic.SortedDictionary`2+Enumerator[int,int]> ;* V08 tmp4 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Collections.Generic.SortedDictionary`2+Enumerator[int,int]>
-; V09 tmp5 [V09,T05] ( 2, 0.40) byref -> rbx single-def "Inlining Arg" -;* V10 tmp6 [V10,T07] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" -; V11 tmp7 [V11,T06] ( 2, 0.40) byref -> rbx single-def "Inlining Arg" -;* V12 tmp8 [V12,T08] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" -; V13 cse0 [V13,T04] ( 6, 0.60) byref -> rbx multi-def "CSE - conservative"
+; V09 tmp5 [V09,T07] ( 2, 0.40) byref -> rbx single-def "Inlining Arg" +;* V10 tmp6 [V10,T09] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" +; V11 tmp7 [V11,T08] ( 2, 0.40) byref -> rbx single-def "Inlining Arg" +;* V12 tmp8 [V12,T10] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" +; V13 cse0 [V13,T06] ( 6, 0.60) byref -> rbx multi-def "CSE - conservative" +; V14 cse1 [V14,T04] ( 4, 0.80) long -> r14 multi-def "CSE - moderate" +; V15 cse2 [V15,T05] ( 4, 0.80) long -> r13 multi-def "CSE - moderate"
; ; Lcl frame size = 16
-G_M2566_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M2566_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp push r15
+ push r14 + push r13
push rbx sub rsp, 16
- lea rbp, [rsp+0x20]
+ lea rbp, [rsp+0x30]
mov rbx, rsi ; gcrRegs +[rbx] mov r15d, ecx
- ;; size=19 bbWeight=1 PerfScore 4.25
+ ;; size=23 bbWeight=1 PerfScore 6.25
G_M2566_IG02: ; bbWeight=1, gcrefRegs=008C {rdx rbx rdi}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[rdx rdi] cmp r15d, 1
- je SHORT G_M2566_IG06
+ je SHORT G_M2566_IG07
;; size=6 bbWeight=1 PerfScore 1.25 G_M2566_IG03: ; bbWeight=0.80, gcrefRegs=008C {rdx rbx rdi}, byrefRegs=0000 {}, byref, isz mov dword ptr [rsp], 1 @@ -57,23 +61,23 @@ G_M2566_IG04: ; bbWeight=0.60, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre ; gcrRegs -[rbx] add rsp, 16 pop rbx
+ pop r13 + pop r14
pop r15 pop rbp ret
- ;; size=9 bbWeight=0.60 PerfScore 1.65 -G_M2566_IG05: ; bbWeight=0.20, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=13 bbWeight=0.60 PerfScore 2.25 +G_M2566_IG05: ; bbWeight=0.20, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rbx]
- mov rdi, 0xD1FFAB1E ; System.Collections.Generic.SortedDictionary`2+Enumerator[int,int] - cmp qword ptr [rbx], rdi - je G_M2566_IG11 - mov rdi, rbx - ; gcrRegs +[rdi] - mov r11, 0xD1FFAB1E ; code for <unknown method> - call [r11]<unknown method> - ; gcrRegs -[rdi] - jmp SHORT G_M2566_IG09 - ;; size=37 bbWeight=0.20 PerfScore 1.95 -G_M2566_IG06: ; bbWeight=0.20, gcrefRegs=008C {rdx rbx rdi}, byrefRegs=0000 {}, byref, isz
+ mov r14, qword ptr [rbx] + mov r13, 0xD1FFAB1E ; System.Collections.Generic.SortedDictionary`2+Enumerator[int,int] + cmp r14, r13 + jne G_M2566_IG15 + ;; size=22 bbWeight=0.20 PerfScore 0.70 +G_M2566_IG06: ; bbWeight=0.10, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref + jmp G_M2566_IG13 + ;; size=5 bbWeight=0.10 PerfScore 0.20 +G_M2566_IG07: ; bbWeight=0.20, gcrefRegs=008C {rdx rbx rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rdx rdi] xor r8d, r8d mov dword ptr [rsp], r8d @@ -85,17 +89,12 @@ G_M2566_IG06: ; bbWeight=0.20, gcrefRegs=008C {rdx rbx rdi}, byrefRegs=00 mov r9d, 1 call [System.Collections.Tests.IEnumerable_Generic_Tests`1[System.Collections.Generic.KeyValuePair`2[int,int]]:VerifyEnumerator(System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[int,int]],System.Collections.Generic.KeyValuePair`2[int,int][],int,int,ubyte,ubyte):this] ; gcrRegs -[rdx rsi rdi]
- mov rdi, 0xD1FFAB1E ; System.Collections.Generic.SortedDictionary`2+Enumerator[int,int] - cmp qword ptr [rbx], rdi - je SHORT G_M2566_IG07 - mov rdi, rbx - ; gcrRegs +[rdi] - mov r11, 0xD1FFAB1E ; code for <unknown method> - call [r11]<unknown method> - ; gcrRegs -[rdi] - jmp SHORT G_M2566_IG09 - ;; size=64 bbWeight=0.20 PerfScore 3.45 -G_M2566_IG07: ; bbWeight=0.10, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ mov r14, qword ptr [rbx] + mov r13, 0xD1FFAB1E ; System.Collections.Generic.SortedDictionary`2+Enumerator[int,int] + cmp r14, r13 + jne SHORT G_M2566_IG10 + ;; size=49 bbWeight=0.20 PerfScore 2.20 +G_M2566_IG08: ; bbWeight=0.10, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
add rbx, 8 ; gcrRegs -[rbx] ; byrRegs +[rbx] @@ -107,28 +106,39 @@ G_M2566_IG07: ; bbWeight=0.10, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, b mov rdi, rbx ; byrRegs +[rdi] ;; size=20 bbWeight=0.10 PerfScore 0.40
-G_M2566_IG08: ; bbWeight=0.10, epilog, nogc, extend
+G_M2566_IG09: ; bbWeight=0.10, epilog, nogc, extend
add rsp, 16 pop rbx
+ pop r13 + pop r14
pop r15 pop rbp tail.jmp [System.Collections.Generic.SortedSet`1+Enumerator[System.Collections.Generic.KeyValuePair`2[int,int]]:Reset():this]
- ;; size=14 bbWeight=0.10 PerfScore 0.38 -G_M2566_IG09: ; bbWeight=0.10, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=18 bbWeight=0.10 PerfScore 0.47 +G_M2566_IG10: ; bbWeight=0.10, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rbx] ; byrRegs -[rbx rdi]
+ mov rdi, rbx + ; gcrRegs +[rdi] + mov r11, 0xD1FFAB1E ; code for <unknown method> + call [r11]<unknown method> + ; gcrRegs -[rdi] + ;; size=16 bbWeight=0.10 PerfScore 0.35 +G_M2566_IG11: ; bbWeight=0.10, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rdi, rbx ; gcrRegs +[rdi] mov r11, 0xD1FFAB1E ; code for <unknown method> ;; size=13 bbWeight=0.10 PerfScore 0.05
-G_M2566_IG10: ; bbWeight=0.10, epilog, nogc, extend
+G_M2566_IG12: ; bbWeight=0.10, epilog, nogc, extend
add rsp, 16 pop rbx
+ pop r13 + pop r14
pop r15 pop rbp tail.jmp [r11]<unknown method>
- ;; size=11 bbWeight=0.10 PerfScore 0.38 -G_M2566_IG11: ; bbWeight=0.10, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=15 bbWeight=0.10 PerfScore 0.47 +G_M2566_IG13: ; bbWeight=0.10, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rdi] add rbx, 8 ; gcrRegs -[rbx] @@ -141,15 +151,27 @@ G_M2566_IG11: ; bbWeight=0.10, gcVars=0000000000000000 {}, gcrefRegs=0008 mov rdi, rbx ; byrRegs +[rdi] ;; size=20 bbWeight=0.10 PerfScore 0.40
-G_M2566_IG12: ; bbWeight=0.10, epilog, nogc, extend
+G_M2566_IG14: ; bbWeight=0.10, epilog, nogc, extend
add rsp, 16 pop rbx
+ pop r13 + pop r14
pop r15 pop rbp tail.jmp [System.Collections.Generic.SortedSet`1+Enumerator[System.Collections.Generic.KeyValuePair`2[int,int]]:Reset():this]
- ;; size=14 bbWeight=0.10 PerfScore 0.38
+ ;; size=18 bbWeight=0.10 PerfScore 0.47 +G_M2566_IG15: ; bbWeight=0.10, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs +[rbx] + ; byrRegs -[rbx rdi] + mov rdi, rbx + ; gcrRegs +[rdi] + mov r11, 0xD1FFAB1E ; code for <unknown method> + call [r11]<unknown method> + ; gcrRegs -[rdi] + jmp SHORT G_M2566_IG11 + ;; size=18 bbWeight=0.10 PerfScore 0.55
-; Total bytes of code 261, prolog size 13, PerfScore 20.92, instruction count 71, allocated bytes for code 261 (MethodHash=d52ff5f9) for method System.Collections.Tests.IEnumerable_Generic_Tests`1[System.Collections.Generic.KeyValuePair`2[int,int]]:<IEnumerable_Generic_Enumerator_Reset>b__55_2(System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[int,int]],System.Collections.Generic.KeyValuePair`2[int,int][],int):this (Tier1)
+; Total bytes of code 290, prolog size 17, PerfScore 22.42, instruction count 83, allocated bytes for code 290 (MethodHash=d52ff5f9) for method System.Collections.Tests.IEnumerable_Generic_Tests`1[System.Collections.Generic.KeyValuePair`2[int,int]]:<IEnumerable_Generic_Enumerator_Reset>b__55_2(System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[int,int]],System.Collections.Generic.KeyValuePair`2[int,int][],int):this (Tier1)
; ============================================================ Unwind Info: @@ -157,12 +179,14 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x08 - CountOfUnwindCodes: 4
+ SizeOfProlog : 0x0C + CountOfUnwindCodes: 6
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10 - CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x0C UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10 + CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) + CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13) + CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15) CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)

+29 (+11.65%) : 243509.dasm - System.Collections.Tests.IEnumerableGenericTests1[int]:<IEnumerable_Generic_Enumerator_Reset>b__55_2(System.Collections.Generic.IEnumerator1[int],int[],int):this (Tier1)

@@ -10,7 +10,7 @@ ; Final local variable assignments ; ; V00 this [V00,T03] ( 4, 3 ) ref -> rdi this class-hnd single-def <System.Collections.Tests.IEnumerable_Generic_Tests`1[int]>
-; V01 arg1 [V01,T00] ( 13, 4.30) ref -> rbx class-hnd single-def <System.Collections.Generic.IEnumerator`1[int]>
+; V01 arg1 [V01,T00] ( 13, 4.10) ref -> rbx class-hnd single-def <System.Collections.Generic.IEnumerator`1[int]>
; V02 arg2 [V02,T01] ( 6, 4 ) ref -> rdx class-hnd single-def <int[]> ; V03 arg3 [V03,T02] ( 4, 3.80) int -> r15 single-def ; V04 OutArgs [V04 ] ( 1, 1 ) struct ( 8) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" @@ -18,23 +18,27 @@ ;* V06 tmp2 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Collections.Generic.Stack`1+Enumerator[int]> ;* V07 tmp3 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Collections.Generic.Stack`1+Enumerator[int]> ;* V08 tmp4 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Collections.Generic.Stack`1+Enumerator[int]>
+; V09 cse0 [V09,T04] ( 4, 0.80) long -> r14 multi-def "CSE - moderate" +; V10 cse1 [V10,T05] ( 4, 0.80) long -> r13 multi-def "CSE - moderate"
; ; Lcl frame size = 16
-G_M34564_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M34564_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp push r15
+ push r14 + push r13
push rbx sub rsp, 16
- lea rbp, [rsp+0x20]
+ lea rbp, [rsp+0x30]
mov rbx, rsi ; gcrRegs +[rbx] mov r15d, ecx
- ;; size=19 bbWeight=1 PerfScore 4.25
+ ;; size=23 bbWeight=1 PerfScore 6.25
G_M34564_IG02: ; bbWeight=1, gcrefRegs=008C {rdx rbx rdi}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[rdx rdi] cmp r15d, 1
- je SHORT G_M34564_IG06
+ je SHORT G_M34564_IG07
;; size=6 bbWeight=1 PerfScore 1.25 G_M34564_IG03: ; bbWeight=0.80, gcrefRegs=008C {rdx rbx rdi}, byrefRegs=0000 {}, byref, isz mov dword ptr [rsp], 1 @@ -52,23 +56,23 @@ G_M34564_IG04: ; bbWeight=0.60, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr ; gcrRegs -[rbx] add rsp, 16 pop rbx
+ pop r13 + pop r14
pop r15 pop rbp ret
- ;; size=9 bbWeight=0.60 PerfScore 1.65 -G_M34564_IG05: ; bbWeight=0.20, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=13 bbWeight=0.60 PerfScore 2.25 +G_M34564_IG05: ; bbWeight=0.20, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rbx]
- mov rdi, 0xD1FFAB1E ; System.Collections.Generic.Stack`1+Enumerator[int] - cmp qword ptr [rbx], rdi - je G_M34564_IG11 - mov rdi, rbx - ; gcrRegs +[rdi] - mov r11, 0xD1FFAB1E ; code for <unknown method> - call [r11]<unknown method> - ; gcrRegs -[rdi] - jmp SHORT G_M34564_IG09 - ;; size=37 bbWeight=0.20 PerfScore 1.95 -G_M34564_IG06: ; bbWeight=0.20, gcrefRegs=008C {rdx rbx rdi}, byrefRegs=0000 {}, byref, isz
+ mov r14, qword ptr [rbx] + mov r13, 0xD1FFAB1E ; System.Collections.Generic.Stack`1+Enumerator[int] + cmp r14, r13 + jne G_M34564_IG15 + ;; size=22 bbWeight=0.20 PerfScore 0.70 +G_M34564_IG06: ; bbWeight=0.10, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref + jmp G_M34564_IG13 + ;; size=5 bbWeight=0.10 PerfScore 0.20 +G_M34564_IG07: ; bbWeight=0.20, gcrefRegs=008C {rdx rbx rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rdx rdi] xor r8d, r8d mov dword ptr [rsp], r8d @@ -80,45 +84,51 @@ G_M34564_IG06: ; bbWeight=0.20, gcrefRegs=008C {rdx rbx rdi}, byrefRegs=0 mov r9d, 1 call [<unknown method>] ; gcrRegs -[rdx rsi rdi]
- mov rdi, 0xD1FFAB1E ; System.Collections.Generic.Stack`1+Enumerator[int] - cmp qword ptr [rbx], rdi - je SHORT G_M34564_IG07
+ mov r14, qword ptr [rbx] + mov r13, 0xD1FFAB1E ; System.Collections.Generic.Stack`1+Enumerator[int] + cmp r14, r13 + jne SHORT G_M34564_IG10 + ;; size=49 bbWeight=0.20 PerfScore 2.20 +G_M34564_IG08: ; bbWeight=0.10, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref + lea rdi, bword ptr [rbx+0x08] + ; byrRegs +[rdi] + call [System.Collections.Generic.Stack`1+Enumerator[int]:System.Collections.IEnumerator.Reset():this] + ; byrRegs -[rdi] + lea rdi, bword ptr [rbx+0x08] + ; byrRegs +[rdi] + ;; size=14 bbWeight=0.10 PerfScore 0.40 +G_M34564_IG09: ; bbWeight=0.10, epilog, nogc, extend + add rsp, 16 + pop rbx + pop r13 + pop r14 + pop r15 + pop rbp + tail.jmp [System.Collections.Generic.Stack`1+Enumerator[int]:System.Collections.IEnumerator.Reset():this] + ;; size=18 bbWeight=0.10 PerfScore 0.47 +G_M34564_IG10: ; bbWeight=0.10, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref + ; byrRegs -[rdi]
mov rdi, rbx ; gcrRegs +[rdi] mov r11, 0xD1FFAB1E ; code for <unknown method> call [r11]<unknown method> ; gcrRegs -[rdi]
- jmp SHORT G_M34564_IG09 - ;; size=64 bbWeight=0.20 PerfScore 3.45 -G_M34564_IG07: ; bbWeight=0.10, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - lea rdi, bword ptr [rbx+0x08] - ; byrRegs +[rdi] - call [System.Collections.Generic.Stack`1+Enumerator[int]:System.Collections.IEnumerator.Reset():this] - ; byrRegs -[rdi] - lea rdi, bword ptr [rbx+0x08] - ; byrRegs +[rdi] - ;; size=14 bbWeight=0.10 PerfScore 0.40 -G_M34564_IG08: ; bbWeight=0.10, epilog, nogc, extend - add rsp, 16 - pop rbx - pop r15 - pop rbp - tail.jmp [System.Collections.Generic.Stack`1+Enumerator[int]:System.Collections.IEnumerator.Reset():this] - ;; size=14 bbWeight=0.10 PerfScore 0.38 -G_M34564_IG09: ; bbWeight=0.10, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref - ; byrRegs -[rdi]
+ ;; size=16 bbWeight=0.10 PerfScore 0.35 +G_M34564_IG11: ; bbWeight=0.10, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rdi, rbx ; gcrRegs +[rdi] mov r11, 0xD1FFAB1E ; code for <unknown method> ;; size=13 bbWeight=0.10 PerfScore 0.05
-G_M34564_IG10: ; bbWeight=0.10, epilog, nogc, extend
+G_M34564_IG12: ; bbWeight=0.10, epilog, nogc, extend
add rsp, 16 pop rbx
+ pop r13 + pop r14
pop r15 pop rbp tail.jmp [r11]<unknown method>
- ;; size=11 bbWeight=0.10 PerfScore 0.38 -G_M34564_IG11: ; bbWeight=0.10, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=15 bbWeight=0.10 PerfScore 0.47 +G_M34564_IG13: ; bbWeight=0.10, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rdi] lea rdi, bword ptr [rbx+0x08] ; byrRegs +[rdi] @@ -127,15 +137,26 @@ G_M34564_IG11: ; bbWeight=0.10, gcVars=0000000000000000 {}, gcrefRegs=000 lea rdi, bword ptr [rbx+0x08] ; byrRegs +[rdi] ;; size=14 bbWeight=0.10 PerfScore 0.40
-G_M34564_IG12: ; bbWeight=0.10, epilog, nogc, extend
+G_M34564_IG14: ; bbWeight=0.10, epilog, nogc, extend
add rsp, 16 pop rbx
+ pop r13 + pop r14
pop r15 pop rbp tail.jmp [System.Collections.Generic.Stack`1+Enumerator[int]:System.Collections.IEnumerator.Reset():this]
- ;; size=14 bbWeight=0.10 PerfScore 0.38
+ ;; size=18 bbWeight=0.10 PerfScore 0.47 +G_M34564_IG15: ; bbWeight=0.10, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz + ; byrRegs -[rdi] + mov rdi, rbx + ; gcrRegs +[rdi] + mov r11, 0xD1FFAB1E ; code for <unknown method> + call [r11]<unknown method> + ; gcrRegs -[rdi] + jmp SHORT G_M34564_IG11 + ;; size=18 bbWeight=0.10 PerfScore 0.55
-; Total bytes of code 249, prolog size 13, PerfScore 20.93, instruction count 67, allocated bytes for code 249 (MethodHash=4e7b78fb) for method System.Collections.Tests.IEnumerable_Generic_Tests`1[int]:<IEnumerable_Generic_Enumerator_Reset>b__55_2(System.Collections.Generic.IEnumerator`1[int],int[],int):this (Tier1)
+; Total bytes of code 278, prolog size 17, PerfScore 22.43, instruction count 79, allocated bytes for code 278 (MethodHash=4e7b78fb) for method System.Collections.Tests.IEnumerable_Generic_Tests`1[int]:<IEnumerable_Generic_Enumerator_Reset>b__55_2(System.Collections.Generic.IEnumerator`1[int],int[],int):this (Tier1)
; ============================================================ Unwind Info: @@ -143,12 +164,14 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x08 - CountOfUnwindCodes: 4
+ SizeOfProlog : 0x0C + CountOfUnwindCodes: 6
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10 - CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x0C UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10 + CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) + CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13) + CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15) CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)

+26 (+13.33%) : 606818.dasm - System.Dynamic.Utils.TypeUtils:AreReferenceAssignable(System.Type,System.Type):ubyte (Tier1)

@@ -13,58 +13,66 @@ ; V01 arg1 [V01,T01] ( 9, 4 ) ref -> r15 class-hnd single-def <System.Type> ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T05] ( 2, 2 ) ubyte -> rax "Inline return value spill temp"
-; V04 tmp2 [V04,T04] ( 5, 2 ) int -> rcx "guarded devirt return temp"
+; V04 tmp2 [V04,T02] ( 5, 3 ) int -> r14 "guarded devirt return temp"
;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.RuntimeType> ;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
-; V07 tmp5 [V07,T02] ( 3, 2.50) ref -> rdi class-hnd exact "Inline stloc first use temp" <System.RuntimeType> -; V08 cse0 [V08,T03] ( 3, 2.50) long -> rax "CSE - aggressive"
+; V07 tmp5 [V07,T03] ( 3, 2.50) ref -> rdi class-hnd exact "Inline stloc first use temp" <System.RuntimeType> +; V08 cse0 [V08,T04] ( 3, 2.50) long -> rax "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M56504_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp push r15
+ push r14
push rbx
- lea rbp, [rsp+0x10]
+ push rax + lea rbp, [rsp+0x20]
mov rbx, rdi ; gcrRegs +[rbx] mov r15, rsi ; gcrRegs +[r15]
- ;; size=15 bbWeight=1 PerfScore 4.00
+ ;; size=18 bbWeight=1 PerfScore 6.00
G_M56504_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz test rbx, rbx
- je SHORT G_M56504_IG07
+ je SHORT G_M56504_IG08
mov rax, 0xD1FFAB1E ; System.RuntimeType cmp qword ptr [rbx], rax jne G_M56504_IG13 mov rdi, r15 ; gcrRegs +[rdi] test rdi, rdi
- je SHORT G_M56504_IG11
+ je SHORT G_M56504_IG04
;; size=32 bbWeight=1 PerfScore 7.00 G_M56504_IG03: ; bbWeight=0.50, gcrefRegs=8088 {rbx rdi r15}, byrefRegs=0000 {}, byref, isz cmp qword ptr [rdi], rax
- jne SHORT G_M56504_IG11
+ je SHORT G_M56504_IG05
;; size=5 bbWeight=0.50 PerfScore 2.00 G_M56504_IG04: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rdi]
+ xor r14d, r14d + jmp SHORT G_M56504_IG06 + ;; size=5 bbWeight=1 PerfScore 2.25 +G_M56504_IG05: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
cmp r15, rbx jne SHORT G_M56504_IG12
- mov ecx, 1 - ;; size=10 bbWeight=1 PerfScore 1.50 -G_M56504_IG05: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz - movzx rax, cl
+ mov r14d, 1 + ;; size=11 bbWeight=1 PerfScore 1.50 +G_M56504_IG06: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz + movzx rax, r14b
test eax, eax
- je SHORT G_M56504_IG07
+ je SHORT G_M56504_IG08
mov eax, 1
- ;; size=12 bbWeight=1 PerfScore 1.75 -G_M56504_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=13 bbWeight=1 PerfScore 1.75 +G_M56504_IG07: ; bbWeight=1, epilog, nogc, extend + add rsp, 8
pop rbx
+ pop r14
pop r15 pop rbp ret
- ;; size=5 bbWeight=1 PerfScore 2.50 -G_M56504_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=11 bbWeight=1 PerfScore 3.25 +G_M56504_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz
mov rdi, rbx ; gcrRegs +[rdi] mov rax, qword ptr [rbx] @@ -72,7 +80,7 @@ G_M56504_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8008 { call [rax+0x08]<unknown method> ; gcrRegs -[rdi] test eax, eax
- jne SHORT G_M56504_IG09
+ jne SHORT G_M56504_IG10
mov rdi, r15 ; gcrRegs +[rdi] mov rax, qword ptr [r15] @@ -80,7 +88,7 @@ G_M56504_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8008 { call [rax+0x08]<unknown method> ; gcrRegs -[rdi] test eax, eax
- jne SHORT G_M56504_IG09
+ jne SHORT G_M56504_IG10
mov rdi, rbx ; gcrRegs +[rdi] mov rsi, r15 @@ -88,37 +96,37 @@ G_M56504_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8008 { mov rax, qword ptr [rbx] mov rax, qword ptr [rax+0xB8] ;; size=56 bbWeight=0 PerfScore 0.00
-G_M56504_IG08: ; bbWeight=0, epilog, nogc, extend
+G_M56504_IG09: ; bbWeight=0, epilog, nogc, extend + add rsp, 8
pop rbx
+ pop r14
pop r15 pop rbp tail.jmp [rax+0x20]<unknown method>
- ;; size=8 bbWeight=0 PerfScore 0.00 -G_M56504_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=14 bbWeight=0 PerfScore 0.00 +G_M56504_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rbx rsi rdi r15] xor eax, eax ;; size=2 bbWeight=0 PerfScore 0.00
-G_M56504_IG10: ; bbWeight=0, epilog, nogc, extend
+G_M56504_IG11: ; bbWeight=0, epilog, nogc, extend + add rsp, 8
pop rbx
+ pop r14
pop r15 pop rbp ret
- ;; size=5 bbWeight=0 PerfScore 0.00 -G_M56504_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=11 bbWeight=0 PerfScore 0.00 +G_M56504_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rbx r15]
- xor ecx, ecx - jmp SHORT G_M56504_IG05 - ;; size=4 bbWeight=0 PerfScore 0.00 -G_M56504_IG12: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
mov rdi, rbx ; gcrRegs +[rdi] mov rsi, r15 ; gcrRegs +[rsi] call <unknown method> ; gcrRegs -[rsi rdi]
- mov ecx, eax - jmp SHORT G_M56504_IG05 - ;; size=15 bbWeight=0 PerfScore 0.00
+ mov r14d, eax + jmp SHORT G_M56504_IG06 + ;; size=16 bbWeight=0 PerfScore 0.00
G_M56504_IG13: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref mov rdi, rbx ; gcrRegs +[rdi] @@ -128,11 +136,11 @@ G_M56504_IG13: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, mov rax, qword ptr [rax+0xA8] call [rax+0x10]<unknown method> ; gcrRegs -[rsi rdi]
- mov ecx, eax - jmp G_M56504_IG05 - ;; size=26 bbWeight=0 PerfScore 0.00
+ mov r14d, eax + jmp G_M56504_IG06 + ;; size=27 bbWeight=0 PerfScore 0.00
-; Total bytes of code 195, prolog size 9, PerfScore 18.75, instruction count 66, allocated bytes for code 195 (MethodHash=986e2347) for method System.Dynamic.Utils.TypeUtils:AreReferenceAssignable(System.Type,System.Type):ubyte (Tier1)
+; Total bytes of code 221, prolog size 12, PerfScore 23.75, instruction count 74, allocated bytes for code 221 (MethodHash=986e2347) for method System.Dynamic.Utils.TypeUtils:AreReferenceAssignable(System.Type,System.Type):ubyte (Tier1)
; ============================================================ Unwind Info: @@ -140,11 +148,13 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x04 - CountOfUnwindCodes: 3
+ SizeOfProlog : 0x07 + CountOfUnwindCodes: 5
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08 + CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) + CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15) CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)

librariestestsnotieredcompilation.run.linux.x64.Release.mch

-36 (-44.44%) : 193646.dasm - System.Runtime.Serialization.Formatters.Tests.StructContainingArraysOfOtherStructs:Equals(System.Object):ubyte:this (FullOpts)

@@ -8,79 +8,54 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 2.50) byref -> rdi this single-def
-; V01 arg1 [V01,T00] ( 5, 3.75) ref -> rbx class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 4, 3.50) ref -> rsi class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T01] ( 3, 4.50) ref -> rax class-hnd "spilling QMark2" <System.Runtime.Serialization.Formatters.Tests.StructContainingArraysOfOtherStructs>
-; V04 tmp2 [V04,T03] ( 2, 2 ) ref -> r15 class-hnd exact single-def "impAppendStmt" <System.Runtime.Serialization.Formatters.Tests.StructContainingOtherStructs[]> -; V05 cse0 [V05,T04] ( 4, 1.25) long -> rcx "CSE - moderate" -; V06 cse1 [V06,T05] ( 3, 1 ) long -> rsi "CSE - moderate"
+; V04 tmp2 [V04,T03] ( 2, 2 ) ref -> rdi class-hnd exact single-def "impAppendStmt" <System.Runtime.Serialization.Formatters.Tests.StructContainingOtherStructs[]>
; ; Lcl frame size = 0
-G_M20050_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M20050_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push rbp
- push r15 - push rbx - lea rbp, [rsp+0x10] - mov rbx, rsi - ; gcrRegs +[rbx] - ;; size=12 bbWeight=1 PerfScore 3.75 -G_M20050_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, byref, isz
+ mov rbp, rsp + ;; size=4 bbWeight=1 PerfScore 1.25 +G_M20050_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, byref, isz + ; gcrRegs +[rsi]
; byrRegs +[rdi]
- mov rax, rbx
+ mov rax, rsi
; gcrRegs +[rax] test rax, rax je SHORT G_M20050_IG04 ;; size=8 bbWeight=1 PerfScore 1.50
-G_M20050_IG03: ; bbWeight=0.25, gcrefRegs=0009 {rax rbx}, byrefRegs=0080 {rdi}, byref, isz - mov rsi, qword ptr [rax]
+G_M20050_IG03: ; bbWeight=0.25, gcrefRegs=0041 {rax rsi}, byrefRegs=0080 {rdi}, byref, isz
mov rcx, 0xD1FFAB1E ; System.Runtime.Serialization.Formatters.Tests.StructContainingArraysOfOtherStructs
- cmp rsi, rcx
+ cmp qword ptr [rax], rcx
je SHORT G_M20050_IG06
- ;; size=18 bbWeight=0.25 PerfScore 0.88
+ ;; size=15 bbWeight=0.25 PerfScore 1.06
G_M20050_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax rbx]
+ ; gcrRegs -[rax rsi]
; byrRegs -[rdi] xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M20050_IG05: ; bbWeight=0.50, epilog, nogc, extend
- pop rbx - pop r15
pop rbp ret
- ;; size=5 bbWeight=0.50 PerfScore 1.25 -G_M20050_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, gcvars, byref, isz - ; gcrRegs +[rbx]
+ ;; size=2 bbWeight=0.50 PerfScore 0.75 +G_M20050_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, gcvars, byref + ; gcrRegs +[rsi]
; byrRegs +[rdi]
- mov r15, gword ptr [rdi] - ; gcrRegs +[r15] - cmp rsi, rcx - je SHORT G_M20050_IG08 - ;; size=8 bbWeight=0.50 PerfScore 1.62 -G_M20050_IG07: ; bbWeight=0.25, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref - ; byrRegs -[rdi] - mov rsi, rbx - ; gcrRegs +[rsi] - mov rdi, rcx - call CORINFO_HELP_UNBOX - ; gcrRegs -[rsi] - ; gcr arg pop 0 - ;; size=11 bbWeight=0.25 PerfScore 0.38 -G_M20050_IG08: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref - mov rsi, gword ptr [rbx+0x08] - ; gcrRegs +[rsi] - mov rdi, r15
+ mov rdi, gword ptr [rdi]
; gcrRegs +[rdi]
- ;; size=7 bbWeight=0.50 PerfScore 1.12 -G_M20050_IG09: ; bbWeight=0.50, epilog, nogc, extend - pop rbx - pop r15
+ ; byrRegs -[rdi] + mov rsi, gword ptr [rsi+0x08] + ;; size=7 bbWeight=0.50 PerfScore 2.00 +G_M20050_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop rbp tail.jmp [System.Runtime.Serialization.Formatters.Tests.EqualityHelpers:ArraysAreEqual[System.Runtime.Serialization.Formatters.Tests.StructContainingOtherStructs](System.Runtime.Serialization.Formatters.Tests.StructContainingOtherStructs[],System.Runtime.Serialization.Formatters.Tests.StructContainingOtherStructs[]):ubyte] ; gcr arg pop 0
- ;; size=10 bbWeight=0.50 PerfScore 1.75
+ ;; size=7 bbWeight=0.50 PerfScore 1.25
-; Total bytes of code 81, prolog size 12, PerfScore 12.38, instruction count 29, allocated bytes for code 81 (MethodHash=8ccbb1ad) for method System.Runtime.Serialization.Formatters.Tests.StructContainingArraysOfOtherStructs:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 45, prolog size 4, PerfScore 7.94, instruction count 15, allocated bytes for code 45 (MethodHash=8ccbb1ad) for method System.Runtime.Serialization.Formatters.Tests.StructContainingArraysOfOtherStructs:Equals(System.Object):ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -88,11 +63,9 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x04 - CountOfUnwindCodes: 3
+ SizeOfProlog : 0x01 + CountOfUnwindCodes: 1
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)

-32 (-30.48%) : 31533.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan1[uint]):int (FullOpts)

@@ -9,14 +9,16 @@ ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]> ;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
-; V02 loc0 [V02,T00] ( 7, 24.50) int -> registers
+; V02 loc0 [V02,T00] ( 7, 24.50) int -> rax
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T01] ( 6, 20 ) int -> r8 "dup spill" -; V05 tmp2 [V05,T05] ( 3, 5.50) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP -; V06 tmp3 [V06,T04] ( 5, 7 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP -; V07 tmp4 [V07,T06] ( 3, 5.50) byref -> rdx single-def "field V01._reference (fldOffset=0x0)" P-INDEP -; V08 tmp5 [V08,T03] ( 6, 7.50) int -> rcx single-def "field V01._length (fldOffset=0x8)" P-INDEP -; V09 cse0 [V09,T02] ( 6, 13.50) long -> r9 multi-def "CSE - aggressive"
+; V04 tmp1 [V04,T01] ( 2, 16 ) int -> rax "dup spill" +; V05 tmp2 [V05,T07] ( 2, 5 ) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP +; V06 tmp3 [V06,T04] ( 4, 6.50) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP +; V07 tmp4 [V07,T08] ( 2, 5 ) byref -> rdx single-def "field V01._reference (fldOffset=0x0)" P-INDEP +; V08 tmp5 [V08,T03] ( 5, 7 ) int -> rcx single-def "field V01._length (fldOffset=0x8)" P-INDEP +; V09 cse0 [V09,T05] ( 3, 8.50) int -> r9 "CSE - aggressive" +; V10 cse1 [V10,T06] ( 3, 8.50) int -> r8 "CSE - aggressive" +; V11 cse2 [V11,T02] ( 3, 12 ) long -> r8 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -32,72 +34,59 @@ G_M264_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, b G_M264_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; byrRegs -[rdx rdi] cmp esi, ecx
- jl SHORT G_M264_IG12 - jmp SHORT G_M264_IG10
+ jl SHORT G_M264_IG11 + jmp SHORT G_M264_IG07
;; size=6 bbWeight=0.50 PerfScore 1.62 G_M264_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref ; byrRegs +[rdx rdi]
- mov r8d, ecx - ;; size=3 bbWeight=0.50 PerfScore 0.12
+ mov eax, ecx + ;; size=2 bbWeight=0.50 PerfScore 0.12
G_M264_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref, isz
- dec r8d - mov eax, r8d - test eax, eax - jl SHORT G_M264_IG06
+ dec eax + js SHORT G_M264_IG09
cmp eax, esi
- jae SHORT G_M264_IG14 - mov r9d, eax - mov r10d, dword ptr [rdi+4*r9] - cmp eax, ecx - jae SHORT G_M264_IG14 - cmp r10d, dword ptr [rdx+4*r9] - je SHORT G_M264_IG08 - ;; size=31 bbWeight=4 PerfScore 42.00 -G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref, isz - test r8d, r8d - jge SHORT G_M264_IG09 - xor eax, eax - ;; size=7 bbWeight=0.50 PerfScore 0.75 -G_M264_IG07: ; bbWeight=0.50, epilog, nogc, extend - pop rbp - ret - ;; size=2 bbWeight=0.50 PerfScore 0.75 -G_M264_IG08: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, gcvars, byref, isz
+ jae SHORT G_M264_IG13
mov r8d, eax
- jmp SHORT G_M264_IG05 - ;; size=5 bbWeight=2 PerfScore 4.50 -G_M264_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref, isz - cmp r8d, esi - jae SHORT G_M264_IG14 - mov r9d, r8d - mov eax, dword ptr [rdi+4*r9] - cmp r8d, ecx - jae SHORT G_M264_IG14 - cmp eax, dword ptr [rdx+4*r9] - jb SHORT G_M264_IG12 - ;; size=23 bbWeight=0.50 PerfScore 4.38 -G_M264_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov r9d, dword ptr [rdi+4*r8] + cmp eax, ecx + jae SHORT G_M264_IG13 + mov r8d, dword ptr [rdx+4*r8] + cmp r9d, r8d + je SHORT G_M264_IG05 + ;; size=28 bbWeight=4 PerfScore 37.00 +G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rdx rdi]
+ cmp r8d, r9d + ja SHORT G_M264_IG11 + ;; size=5 bbWeight=0.50 PerfScore 0.62 +G_M264_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov eax, 1 ;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M264_IG11: ; bbWeight=0.50, epilog, nogc, extend
+G_M264_IG08: ; bbWeight=0.50, epilog, nogc, extend
pop rbp ret ;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M264_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M264_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + xor eax, eax + ;; size=2 bbWeight=0.50 PerfScore 0.12 +G_M264_IG10: ; bbWeight=0.50, epilog, nogc, extend + pop rbp + ret + ;; size=2 bbWeight=0.50 PerfScore 0.75 +G_M264_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov eax, -1 ;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M264_IG13: ; bbWeight=0.50, epilog, nogc, extend
+G_M264_IG12: ; bbWeight=0.50, epilog, nogc, extend
pop rbp ret ;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M264_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M264_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 105, prolog size 4, PerfScore 58.38, instruction count 43, allocated bytes for code 105 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
+; Total bytes of code 73, prolog size 4, PerfScore 44.50, instruction count 32, allocated bytes for code 73 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
; ============================================================ Unwind Info:

-29 (-25.89%) : 97293.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)

@@ -7,15 +7,17 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T04] ( 5, 7.50) ref -> rdi class-hnd single-def <System.String> -; V01 arg1 [V01,T02] ( 6, 11 ) ref -> rsi class-hnd single-def <System.String> -; V02 arg2 [V02,T05] ( 4, 6.50) int -> rdx single-def -; V03 arg3 [V03,T07] ( 5, 4.50) int -> rcx single-def -; V04 loc0 [V04,T03] ( 6, 13 ) int -> r8 -; V05 loc1 [V05,T00] ( 11, 27.50) int -> r9
+; V00 arg0 [V00,T04] ( 4, 7 ) ref -> rdi class-hnd single-def <System.String> +; V01 arg1 [V01,T02] ( 4, 10 ) ref -> rsi class-hnd single-def <System.String> +; V02 arg2 [V02,T07] ( 3, 6 ) int -> rdx single-def +; V03 arg3 [V03,T08] ( 5, 4.50) int -> rcx single-def +; V04 loc0 [V04,T01] ( 5, 12 ) int -> r8 +; V05 loc1 [V05,T00] ( 7, 25 ) int -> r9
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 cse0 [V07,T06] ( 5, 7 ) int -> rax "CSE - aggressive" -; V08 cse1 [V08,T01] ( 6, 13.50) int -> r11 multi-def "CSE - aggressive"
+; V07 cse0 [V07,T05] ( 3, 8.50) int -> r11 "CSE - aggressive" +; V08 cse1 [V08,T06] ( 3, 8.50) int -> r10 "CSE - aggressive" +; V09 cse2 [V09,T09] ( 4, 6.50) int -> rax "CSE - aggressive" +; V10 cse3 [V10,T03] ( 3, 12 ) int -> r11 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -37,54 +39,43 @@ G_M6389_IG03: ; bbWeight=2, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, ;; size=3 bbWeight=2 PerfScore 0.50 G_M6389_IG04: ; bbWeight=8, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz cmp r9d, r8d
- jge SHORT G_M6389_IG06
+ jge SHORT G_M6389_IG08
;; size=5 bbWeight=8 PerfScore 10.00 G_M6389_IG05: ; bbWeight=4, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz cmp r9d, eax
- jae SHORT G_M6389_IG11
+ jae SHORT G_M6389_IG10
mov r10d, r9d movzx r10, word ptr [rdi+2*r10+0x0C] lea r11d, [rdx+r9] cmp r11d, dword ptr [rsi+0x08]
- jae SHORT G_M6389_IG11 - cmp r10w, word ptr [rsi+2*r11+0x0C]
+ jae SHORT G_M6389_IG10 + movzx r11, word ptr [rsi+2*r11+0x0C] + cmp r10d, r11d
je SHORT G_M6389_IG03
- ;; size=32 bbWeight=4 PerfScore 48.00 -G_M6389_IG06: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz - cmp r9d, r8d - jge SHORT G_M6389_IG09 - ;; size=5 bbWeight=1 PerfScore 1.25 -G_M6389_IG07: ; bbWeight=0.50, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz - cmp r9d, eax - jae SHORT G_M6389_IG11 - mov eax, r9d - movzx rax, word ptr [rdi+2*rax+0x0C] - lea r11d, [rdx+r9] - cmp r11d, dword ptr [rsi+0x08] - jae SHORT G_M6389_IG11 - mov ecx, r11d - movzx rcx, word ptr [rsi+2*rcx+0x0C] - sub eax, ecx - ;; size=33 bbWeight=0.50 PerfScore 5.25 -G_M6389_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=35 bbWeight=4 PerfScore 45.00 +G_M6389_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[rsi rdi] + mov eax, r10d + sub eax, r11d + ;; size=6 bbWeight=0.50 PerfScore 0.25 +G_M6389_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop rbp ret ;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M6389_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[rsi rdi]
+G_M6389_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
sub eax, ecx ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M6389_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M6389_IG09: ; bbWeight=0.50, epilog, nogc, extend
pop rbp ret ;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M6389_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M6389_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 112, prolog size 4, PerfScore 72.88, instruction count 39, allocated bytes for code 112 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
+; Total bytes of code 83, prolog size 4, PerfScore 63.62, instruction count 30, allocated bytes for code 83 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
; ============================================================ Unwind Info:

+3 (+11.11%) : 215580.dasm - System.Security.Cryptography.SHA1CryptoServiceProvider:Dispose(ubyte):this (FullOpts)

@@ -8,9 +8,10 @@ ; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 4, 4 ) ref -> rbx this class-hnd single-def <System.Security.Cryptography.SHA1CryptoServiceProvider>
+; V00 this [V00,T00] ( 4, 3 ) ref -> rbx this class-hnd single-def <System.Security.Cryptography.SHA1CryptoServiceProvider>
; V01 arg1 [V01,T01] ( 3, 3 ) ubyte -> rsi single-def ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V03 cse0 [V03,T02] ( 2, 2 ) int -> rdi "CSE - aggressive"
; ; Lcl frame size = 0 @@ -20,8 +21,11 @@ G_M54186_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[rbx] ;; size=4 bbWeight=1 PerfScore 1.25 G_M54186_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- test sil, sil - je SHORT G_M54186_IG03
+ movzx rdi, sil + test edi, edi + je SHORT G_M54186_IG04 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M54186_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rdi, gword ptr [rbx+0x20] ; gcrRegs +[rdi] cmp dword ptr [rdi], edi @@ -29,14 +33,14 @@ G_M54186_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcrRegs -[rdi] ; gcr arg pop 0 mov byte ptr [rbx+0x18], 1
- ;; size=21 bbWeight=1 PerfScore 10.25 -G_M54186_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=16 bbWeight=0.50 PerfScore 4.50 +G_M54186_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rbx] pop rbx ret ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 27, prolog size 1, PerfScore 13.00, instruction count 10, allocated bytes for code 27 (MethodHash=9cf42c55) for method System.Security.Cryptography.SHA1CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
+; Total bytes of code 30, prolog size 1, PerfScore 8.75, instruction count 11, allocated bytes for code 30 (MethodHash=9cf42c55) for method System.Security.Cryptography.SHA1CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
; ============================================================ Unwind Info:

+3 (+15.79%) : 151838.dasm - System.Net.NetworkInformation.Tests.PingTest+FinalizingPing:Dispose(ubyte):this (FullOpts)

@@ -11,6 +11,7 @@ ; V00 this [V00,T01] ( 3, 2.50) ref -> rdi this class-hnd single-def <System.Net.NetworkInformation.Tests.PingTest+FinalizingPing> ; V01 arg1 [V01,T00] ( 3, 3 ) ubyte -> rsi single-def ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V03 cse0 [V03,T02] ( 2, 2 ) int -> rax "CSE - aggressive"
; ; Lcl frame size = 0 @@ -18,19 +19,24 @@ G_M50330_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 { ;; size=0 bbWeight=1 PerfScore 0.00 G_M50330_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[rdi]
- test sil, sil - jne SHORT G_M50330_IG04
+ movzx rax, sil + test eax, eax + jne SHORT G_M50330_IG05 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M50330_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[rdi]
mov byte ptr [(reloc)], 1 ; data for <unknown class>:<unknown field>
- ;; size=12 bbWeight=1 PerfScore 2.25 -G_M50330_IG03: ; bbWeight=1, epilog, nogc, extend
+ ;; size=7 bbWeight=0.50 PerfScore 0.50 +G_M50330_IG04: ; bbWeight=0.50, epilog, nogc, extend
ret
- ;; size=1 bbWeight=1 PerfScore 1.00 -G_M50330_IG04: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=1 bbWeight=0.50 PerfScore 0.50 +G_M50330_IG05: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, epilog, nogc + ; gcrRegs +[rdi]
tail.jmp [<unknown method>] ; gcr arg pop 0 ;; size=6 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 19, prolog size 0, PerfScore 4.25, instruction count 5, allocated bytes for code 19 (MethodHash=d3d63b65) for method System.Net.NetworkInformation.Tests.PingTest+FinalizingPing:Dispose(ubyte):this (FullOpts)
+; Total bytes of code 22, prolog size 0, PerfScore 3.50, instruction count 6, allocated bytes for code 22 (MethodHash=d3d63b65) for method System.Net.NetworkInformation.Tests.PingTest+FinalizingPing:Dispose(ubyte):this (FullOpts)
; ============================================================ Unwind Info:

+14 (+16.09%) : 167450.dasm - System.Xml.DocumentXPathNavigator:get_ValueDocument():System.String:this (FullOpts)

@@ -14,15 +14,18 @@ ;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Xml.XmlDocument> ; V04 tmp2 [V04,T03] ( 3, 4.25) ref -> rax single-def "CASTCLASS eval op1" ; V05 tmp3 [V05,T04] ( 3, 1.25) long -> rsi "fgMakeTemp is creating a new local variable"
-; V06 tmp4 [V06,T00] ( 6, 8.75) ref -> rdi class-hnd "spilling QMark2" <System.Xml.XmlElement> -; V07 tmp5 [V07,T01] ( 3, 6 ) ref -> rdi single-def "argument with side effect"
+; V06 tmp4 [V06,T01] ( 5, 5.75) ref -> rdi class-hnd "spilling QMark2" <System.Xml.XmlElement> +; V07 tmp5 [V07,T00] ( 3, 6 ) ref -> rdi single-def "argument with side effect" +; V08 cse0 [V08,T05] ( 3, 1 ) long -> rbx "CSE - moderate"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M56653_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG push rbp
- mov rbp, rsp - ;; size=4 bbWeight=1 PerfScore 1.25
+ push rbx + push rax + lea rbp, [rsp+0x10] + ;; size=8 bbWeight=1 PerfScore 3.50
G_M56653_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[rdi] mov rdi, gword ptr [rdi+0x08] @@ -37,10 +40,11 @@ G_M56653_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byr je SHORT G_M56653_IG07 ;; size=30 bbWeight=1 PerfScore 10.75 G_M56653_IG03: ; bbWeight=0.25, gcrefRegs=0081 {rax rdi}, byrefRegs=0000 {}, byref, isz
+ mov rbx, qword ptr [rdi]
mov rsi, 0xD1FFAB1E ; System.Xml.XmlElement
- cmp qword ptr [rdi], rsi
+ cmp rbx, rsi
je SHORT G_M56653_IG05
- ;; size=15 bbWeight=0.25 PerfScore 1.06
+ ;; size=18 bbWeight=0.25 PerfScore 0.88
G_M56653_IG04: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref ; gcrRegs -[rdi] mov rdi, rsi @@ -51,26 +55,29 @@ G_M56653_IG04: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, mov rdi, rax ; gcrRegs +[rdi] ;; size=14 bbWeight=0.12 PerfScore 0.22
-G_M56653_IG05: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+G_M56653_IG05: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
- mov rax, qword ptr [rdi] - mov rax, qword ptr [rax+0x70] - ;; size=7 bbWeight=1 PerfScore 4.00 -G_M56653_IG06: ; bbWeight=1, epilog, nogc, extend
+ mov rax, qword ptr [rbx+0x70] + ;; size=4 bbWeight=0.50 PerfScore 1.00 +G_M56653_IG06: ; bbWeight=0.50, epilog, nogc, extend + add rsp, 8 + pop rbx
pop rbp tail.jmp [rax+0x18]<unknown method>
- ;; size=5 bbWeight=1 PerfScore 2.50
+ ;; size=10 bbWeight=0.50 PerfScore 1.62
G_M56653_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[rdi] mov rax, 0xD1FFAB1E ; gcrRegs +[rax] ;; size=10 bbWeight=0.50 PerfScore 0.12 G_M56653_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 8 + pop rbx
pop rbp ret
- ;; size=2 bbWeight=0.50 PerfScore 0.75
+ ;; size=7 bbWeight=0.50 PerfScore 1.12
-; Total bytes of code 87, prolog size 4, PerfScore 20.66, instruction count 24, allocated bytes for code 87 (MethodHash=6dd022b2) for method System.Xml.DocumentXPathNavigator:get_ValueDocument():System.String:this (FullOpts)
+; Total bytes of code 101, prolog size 8, PerfScore 19.22, instruction count 30, allocated bytes for code 101 (MethodHash=6dd022b2) for method System.Xml.DocumentXPathNavigator:get_ValueDocument():System.String:this (FullOpts)
; ============================================================ Unwind Info: @@ -78,9 +85,11 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x01 - CountOfUnwindCodes: 1
+ SizeOfProlog : 0x03 + CountOfUnwindCodes: 3
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
+ CodeOffset: 0x03 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08 + CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)

realworld.run.linux.x64.checked.mch

-35 (-44.30%) : 8852.dasm - System.Int32:Equals(System.Object):ubyte:this (FullOpts)

@@ -8,75 +8,53 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 2.50) byref -> rdi this single-def
-; V01 arg1 [V01,T00] ( 5, 3.75) ref -> rbx class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 4, 3.50) ref -> rsi class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T01] ( 3, 4.50) ref -> rax class-hnd "spilling QMark2" <System.Int32>
-; V04 tmp2 [V04,T03] ( 2, 2 ) int -> r15 "impAppendStmt" -; V05 cse0 [V05,T04] ( 4, 1.25) long -> rcx "CSE - moderate" -; V06 cse1 [V06,T05] ( 3, 1 ) long -> rsi "CSE - moderate"
+; V04 tmp2 [V04,T03] ( 2, 2 ) int -> rax "impAppendStmt"
; ; Lcl frame size = 0
-G_M40448_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M40448_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push rbp
- push r15 - push rbx - lea rbp, [rsp+0x10] - mov rbx, rsi - ; gcrRegs +[rbx] - ;; size=12 bbWeight=1 PerfScore 3.75 -G_M40448_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, byref, isz
+ mov rbp, rsp + ;; size=4 bbWeight=1 PerfScore 1.25 +G_M40448_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, byref, isz + ; gcrRegs +[rsi]
; byrRegs +[rdi]
- mov rax, rbx
+ mov rax, rsi
; gcrRegs +[rax] test rax, rax je SHORT G_M40448_IG04 ;; size=8 bbWeight=1 PerfScore 1.50
-G_M40448_IG03: ; bbWeight=0.25, gcrefRegs=0009 {rax rbx}, byrefRegs=0080 {rdi}, byref, isz - mov rsi, qword ptr [rax]
+G_M40448_IG03: ; bbWeight=0.25, gcrefRegs=0041 {rax rsi}, byrefRegs=0080 {rdi}, byref, isz
mov rcx, 0xD1FFAB1E ; System.Int32
- cmp rsi, rcx
+ cmp qword ptr [rax], rcx
je SHORT G_M40448_IG06
- ;; size=18 bbWeight=0.25 PerfScore 0.88
+ ;; size=15 bbWeight=0.25 PerfScore 1.06
G_M40448_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax rbx]
+ ; gcrRegs -[rax rsi]
; byrRegs -[rdi] xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M40448_IG05: ; bbWeight=0.50, epilog, nogc, extend
- pop rbx - pop r15
pop rbp ret
- ;; size=5 bbWeight=0.50 PerfScore 1.25 -G_M40448_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, gcvars, byref, isz - ; gcrRegs +[rbx] - ; byrRegs +[rdi] - mov r15d, dword ptr [rdi] - cmp rsi, rcx - je SHORT G_M40448_IG08 - ;; size=8 bbWeight=0.50 PerfScore 1.62 -G_M40448_IG07: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - ; byrRegs -[rdi] - mov rsi, rbx
+ ;; size=2 bbWeight=0.50 PerfScore 0.75 +G_M40448_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, gcvars, byref
; gcrRegs +[rsi]
- mov rdi, rcx - call [CORINFO_HELP_UNBOX] - ; gcrRegs -[rsi] - ;; size=12 bbWeight=0.25 PerfScore 0.88 -G_M40448_IG08: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - xor eax, eax - cmp r15d, dword ptr [rbx+0x08]
+ ; byrRegs +[rdi] + mov eax, dword ptr [rdi] + cmp eax, dword ptr [rsi+0x08]
sete al
- ;; size=9 bbWeight=0.50 PerfScore 2.12 -G_M40448_IG09: ; bbWeight=0.50, epilog, nogc, extend - pop rbx - pop r15
+ movzx rax, al + ;; size=11 bbWeight=0.50 PerfScore 3.12 +G_M40448_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop rbp ret
- ;; size=5 bbWeight=0.50 PerfScore 1.25
+ ;; size=2 bbWeight=0.50 PerfScore 0.75
-; Total bytes of code 79, prolog size 9, PerfScore 13.38, instruction count 30, allocated bytes for code 79 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 44, prolog size 4, PerfScore 8.56, instruction count 17, allocated bytes for code 44 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -84,11 +62,9 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x04 - CountOfUnwindCodes: 3
+ SizeOfProlog : 0x01 + CountOfUnwindCodes: 1
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)

-36 (-42.86%) : 7022.dasm - System.Boolean:Equals(System.Object):ubyte:this (FullOpts)

@@ -8,76 +8,54 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 2.50) byref -> rdi this single-def
-; V01 arg1 [V01,T00] ( 5, 3.75) ref -> rbx class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 4, 3.50) ref -> rsi class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T01] ( 3, 4.50) ref -> rax class-hnd "spilling QMark2" <System.Boolean>
-; V04 tmp2 [V04,T03] ( 2, 2 ) int -> r15 "impAppendStmt" -; V05 cse0 [V05,T04] ( 4, 1.25) long -> rcx "CSE - moderate" -; V06 cse1 [V06,T05] ( 3, 1 ) long -> rsi "CSE - moderate"
+; V04 tmp2 [V04,T03] ( 2, 2 ) int -> rax "impAppendStmt"
; ; Lcl frame size = 0
-G_M31030_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M31030_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push rbp
- push r15 - push rbx - lea rbp, [rsp+0x10] - mov rbx, rsi - ; gcrRegs +[rbx] - ;; size=12 bbWeight=1 PerfScore 3.75 -G_M31030_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, byref, isz
+ mov rbp, rsp + ;; size=4 bbWeight=1 PerfScore 1.25 +G_M31030_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, byref, isz + ; gcrRegs +[rsi]
; byrRegs +[rdi]
- mov rax, rbx
+ mov rax, rsi
; gcrRegs +[rax] test rax, rax je SHORT G_M31030_IG04 ;; size=8 bbWeight=1 PerfScore 1.50
-G_M31030_IG03: ; bbWeight=0.25, gcrefRegs=0009 {rax rbx}, byrefRegs=0080 {rdi}, byref, isz - mov rsi, qword ptr [rax]
+G_M31030_IG03: ; bbWeight=0.25, gcrefRegs=0041 {rax rsi}, byrefRegs=0080 {rdi}, byref, isz
mov rcx, 0xD1FFAB1E ; System.Boolean
- cmp rsi, rcx
+ cmp qword ptr [rax], rcx
je SHORT G_M31030_IG06
- ;; size=18 bbWeight=0.25 PerfScore 0.88
+ ;; size=15 bbWeight=0.25 PerfScore 1.06
G_M31030_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax rbx]
+ ; gcrRegs -[rax rsi]
; byrRegs -[rdi] xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M31030_IG05: ; bbWeight=0.50, epilog, nogc, extend
- pop rbx - pop r15
pop rbp ret
- ;; size=5 bbWeight=0.50 PerfScore 1.25 -G_M31030_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, gcvars, byref, isz - ; gcrRegs +[rbx] - ; byrRegs +[rdi] - movzx r15, byte ptr [rdi] - cmp rsi, rcx - je SHORT G_M31030_IG08 - ;; size=9 bbWeight=0.50 PerfScore 1.62 -G_M31030_IG07: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - ; byrRegs -[rdi] - mov rsi, rbx
+ ;; size=2 bbWeight=0.50 PerfScore 0.75 +G_M31030_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, gcvars, byref
; gcrRegs +[rsi]
- mov rdi, rcx - call [CORINFO_HELP_UNBOX] - ; gcrRegs -[rsi] - ;; size=12 bbWeight=0.25 PerfScore 0.88 -G_M31030_IG08: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - movzx rax, byte ptr [rbx+0x08] - cmp r15d, eax
+ ; byrRegs +[rdi] + movzx rax, byte ptr [rdi] + movzx rcx, byte ptr [rsi+0x08] + cmp eax, ecx
sete al movzx rax, al
- ;; size=13 bbWeight=0.50 PerfScore 1.75 -G_M31030_IG09: ; bbWeight=0.50, epilog, nogc, extend - pop rbx - pop r15
+ ;; size=15 bbWeight=0.50 PerfScore 2.75 +G_M31030_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop rbp ret
- ;; size=5 bbWeight=0.50 PerfScore 1.25
+ ;; size=2 bbWeight=0.50 PerfScore 0.75
-; Total bytes of code 84, prolog size 9, PerfScore 13.00, instruction count 31, allocated bytes for code 84 (MethodHash=c96e86c9) for method System.Boolean:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 48, prolog size 4, PerfScore 8.19, instruction count 18, allocated bytes for code 48 (MethodHash=c96e86c9) for method System.Boolean:Equals(System.Object):ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -85,11 +63,9 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x04 - CountOfUnwindCodes: 3
+ SizeOfProlog : 0x01 + CountOfUnwindCodes: 1
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)

-36 (-42.86%) : 6712.dasm - System.Byte:Equals(System.Object):ubyte:this (FullOpts)

@@ -8,76 +8,54 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 2.50) byref -> rdi this single-def
-; V01 arg1 [V01,T00] ( 5, 3.75) ref -> rbx class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 4, 3.50) ref -> rsi class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T01] ( 3, 4.50) ref -> rax class-hnd "spilling QMark2" <System.Byte>
-; V04 tmp2 [V04,T03] ( 2, 2 ) int -> r15 "impAppendStmt" -; V05 cse0 [V05,T04] ( 4, 1.25) long -> rcx "CSE - moderate" -; V06 cse1 [V06,T05] ( 3, 1 ) long -> rsi "CSE - moderate"
+; V04 tmp2 [V04,T03] ( 2, 2 ) int -> rax "impAppendStmt"
; ; Lcl frame size = 0
-G_M19224_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M19224_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push rbp
- push r15 - push rbx - lea rbp, [rsp+0x10] - mov rbx, rsi - ; gcrRegs +[rbx] - ;; size=12 bbWeight=1 PerfScore 3.75 -G_M19224_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, byref, isz
+ mov rbp, rsp + ;; size=4 bbWeight=1 PerfScore 1.25 +G_M19224_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, byref, isz + ; gcrRegs +[rsi]
; byrRegs +[rdi]
- mov rax, rbx
+ mov rax, rsi
; gcrRegs +[rax] test rax, rax je SHORT G_M19224_IG04 ;; size=8 bbWeight=1 PerfScore 1.50
-G_M19224_IG03: ; bbWeight=0.25, gcrefRegs=0009 {rax rbx}, byrefRegs=0080 {rdi}, byref, isz - mov rsi, qword ptr [rax]
+G_M19224_IG03: ; bbWeight=0.25, gcrefRegs=0041 {rax rsi}, byrefRegs=0080 {rdi}, byref, isz
mov rcx, 0xD1FFAB1E ; System.Byte
- cmp rsi, rcx
+ cmp qword ptr [rax], rcx
je SHORT G_M19224_IG06
- ;; size=18 bbWeight=0.25 PerfScore 0.88
+ ;; size=15 bbWeight=0.25 PerfScore 1.06
G_M19224_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax rbx]
+ ; gcrRegs -[rax rsi]
; byrRegs -[rdi] xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M19224_IG05: ; bbWeight=0.50, epilog, nogc, extend
- pop rbx - pop r15
pop rbp ret
- ;; size=5 bbWeight=0.50 PerfScore 1.25 -G_M19224_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, gcvars, byref, isz - ; gcrRegs +[rbx] - ; byrRegs +[rdi] - movzx r15, byte ptr [rdi] - cmp rsi, rcx - je SHORT G_M19224_IG08 - ;; size=9 bbWeight=0.50 PerfScore 1.62 -G_M19224_IG07: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - ; byrRegs -[rdi] - mov rsi, rbx
+ ;; size=2 bbWeight=0.50 PerfScore 0.75 +G_M19224_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, gcvars, byref
; gcrRegs +[rsi]
- mov rdi, rcx - call [CORINFO_HELP_UNBOX] - ; gcrRegs -[rsi] - ;; size=12 bbWeight=0.25 PerfScore 0.88 -G_M19224_IG08: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - movzx rax, byte ptr [rbx+0x08] - cmp r15d, eax
+ ; byrRegs +[rdi] + movzx rax, byte ptr [rdi] + movzx rcx, byte ptr [rsi+0x08] + cmp eax, ecx
sete al movzx rax, al
- ;; size=13 bbWeight=0.50 PerfScore 1.75 -G_M19224_IG09: ; bbWeight=0.50, epilog, nogc, extend - pop rbx - pop r15
+ ;; size=15 bbWeight=0.50 PerfScore 2.75 +G_M19224_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop rbp ret
- ;; size=5 bbWeight=0.50 PerfScore 1.25
+ ;; size=2 bbWeight=0.50 PerfScore 0.75
-; Total bytes of code 84, prolog size 9, PerfScore 13.00, instruction count 31, allocated bytes for code 84 (MethodHash=3af2b4e7) for method System.Byte:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 48, prolog size 4, PerfScore 8.19, instruction count 18, allocated bytes for code 48 (MethodHash=3af2b4e7) for method System.Byte:Equals(System.Object):ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -85,11 +63,9 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x04 - CountOfUnwindCodes: 3
+ SizeOfProlog : 0x01 + CountOfUnwindCodes: 1
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)

+2 (+3.23%) : 14665.dasm - System.Net.Http.HttpConnectionPool:GetSslOptionsForRequest(System.Net.Http.HttpRequestMessage):System.Net.Security.SslClientAuthenticationOptions:this (FullOpts)

@@ -13,6 +13,7 @@ ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Version> ;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Version>
+; V05 cse0 [V05,T02] ( 2, 1 ) int -> rax "CSE - moderate"
; ; Lcl frame size = 0 @@ -28,12 +29,15 @@ G_M47920_IG02: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, G_M47920_IG03: ; bbWeight=0.50, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz mov rax, gword ptr [rsi+0x20] ; gcrRegs +[rax]
- cmp dword ptr [rax+0x08], 2
+ mov eax, dword ptr [rax+0x08] + ; gcrRegs -[rax] + cmp eax, 2
jl SHORT G_M47920_IG05 cmp dword ptr [rsi+0x3C], 0 je SHORT G_M47920_IG06 mov rax, gword ptr [rdi+0x98]
- ;; size=23 bbWeight=0.50 PerfScore 6.00
+ ; gcrRegs +[rax] + ;; size=25 bbWeight=0.50 PerfScore 5.62
G_M47920_IG04: ; bbWeight=0.50, epilog, nogc, extend pop rbp ret @@ -62,7 +66,7 @@ G_M47920_IG09: ; bbWeight=0.50, epilog, nogc, extend ret ;; size=2 bbWeight=0.50 PerfScore 0.75
-; Total bytes of code 62, prolog size 4, PerfScore 17.50, instruction count 20, allocated bytes for code 62 (MethodHash=a75444cf) for method System.Net.Http.HttpConnectionPool:GetSslOptionsForRequest(System.Net.Http.HttpRequestMessage):System.Net.Security.SslClientAuthenticationOptions:this (FullOpts)
+; Total bytes of code 64, prolog size 4, PerfScore 17.12, instruction count 21, allocated bytes for code 64 (MethodHash=a75444cf) for method System.Net.Http.HttpConnectionPool:GetSslOptionsForRequest(System.Net.Http.HttpRequestMessage):System.Net.Security.SslClientAuthenticationOptions:this (FullOpts)
; ============================================================ Unwind Info:

+19 (+4.60%) : 19490.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:SetUpdatedSymbol(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)

@@ -12,7 +12,7 @@ ; V01 arg1 [V01,T04] ( 6, 4 ) ref -> r14 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundNode> ; V02 arg2 [V02,T02] ( 9, 5.50) ref -> rbx class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbol> ; V03 arg3 [V03,T03] ( 8, 5 ) ref -> r15 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbol>
-; V04 loc0 [V04,T14] ( 2, 1 ) ubyte -> rax
+; V04 loc0 [V04,T14] ( 3, 1.50) ubyte -> r12
; V05 loc1 [V05,T15] ( 3, 1.25) ref -> rsi class-hnd exact <Microsoft.CodeAnalysis.CSharp.BoundLambda> ; V06 loc2 [V06,T16] ( 3, 1.25) ref -> rsi class-hnd exact <Microsoft.CodeAnalysis.CSharp.Symbols.LambdaSymbol> ; V07 loc3 [V07,T11] ( 3, 1.50) ref -> rax class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol> @@ -64,16 +64,17 @@ ; V53 tmp45 [V53,T27] ( 2, 1 ) int -> rbx "field V31._countAdjustment (fldOffset=0x8)" P-INDEP ; V54 tmp46 [V54,T10] ( 2, 2 ) ref -> rsi single-def "argument with side effect" ;
-; Lcl frame size = 16
+; Lcl frame size = 24
G_M21353_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp push r15 push r14 push r13
+ push r12
push rbx
- sub rsp, 16 - lea rbp, [rsp+0x30]
+ sub rsp, 24 + lea rbp, [rsp+0x40]
mov r13, rdi ; gcrRegs +[r13] mov r14, rsi @@ -82,32 +83,34 @@ G_M21353_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[rbx] mov r15, rcx ; gcrRegs +[r15]
- ;; size=29 bbWeight=1 PerfScore 6.75
+ ;; size=31 bbWeight=1 PerfScore 7.75
G_M21353_IG02: ; bbWeight=1, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref, isz cmp gword ptr [r13+0x160], 0 jne SHORT G_M21353_IG04 ;; size=10 bbWeight=1 PerfScore 4.00 G_M21353_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; gcrRegs -[rbx r13-r15]
- add rsp, 16
+ add rsp, 24
pop rbx
+ pop r12
pop r13 pop r14 pop r15 pop rbp ret
- ;; size=13 bbWeight=0.50 PerfScore 1.88
+ ;; size=15 bbWeight=0.50 PerfScore 2.12
G_M21353_IG04: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs +[rbx r13-r15]
+ xor r12d, r12d
mov rsi, r14 ; gcrRegs +[rsi] test rsi, rsi je SHORT G_M21353_IG09
- ;; size=8 bbWeight=0.50 PerfScore 0.75
+ ;; size=11 bbWeight=0.50 PerfScore 0.88
G_M21353_IG05: ; bbWeight=0.25, gcrefRegs=E048 {rbx rsi r13 r14 r15}, byrefRegs=0000 {}, byref, isz mov rdi, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.BoundLambda cmp qword ptr [rsi], rdi
- jne SHORT G_M21353_IG09
+ jne SHORT G_M21353_IG10
;; size=15 bbWeight=0.25 PerfScore 1.06 G_M21353_IG06: ; bbWeight=0.50, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rsi] @@ -119,7 +122,7 @@ G_M21353_IG06: ; bbWeight=0.50, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRe G_M21353_IG07: ; bbWeight=0.25, gcrefRegs=E048 {rbx rsi r13 r14 r15}, byrefRegs=0000 {}, byref, isz mov rdi, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Symbols.LambdaSymbol cmp qword ptr [rsi], rdi
- jne SHORT G_M21353_IG09
+ jne SHORT G_M21353_IG10
;; size=15 bbWeight=0.25 PerfScore 1.06 G_M21353_IG08: ; bbWeight=0.50, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rsi] @@ -129,7 +132,7 @@ G_M21353_IG08: ; bbWeight=0.50, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRe call CORINFO_HELP_ISINSTANCEOFCLASS ; gcrRegs -[rsi] +[rax] test rax, rax
- je SHORT G_M21353_IG09
+ je SHORT G_M21353_IG10
mov rdi, rbx ; gcrRegs +[rdi] mov rsi, rax @@ -152,17 +155,20 @@ G_M21353_IG08: ; bbWeight=0.50, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRe mov rax, qword ptr [rax+0x78] call [rax+0x20]<unknown method> ; gcrRegs -[rsi rdi]
- test eax, eax - jne SHORT G_M21353_IG11 - ;; size=71 bbWeight=0.50 PerfScore 10.75
+ mov r12d, eax + ;; size=70 bbWeight=0.50 PerfScore 10.25
G_M21353_IG09: ; bbWeight=0.50, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref, isz
- test rbx, rbx - jne SHORT G_M21353_IG10 - test r15, r15 - jne SHORT G_M21353_IG14 - jmp SHORT G_M21353_IG11 - ;; size=12 bbWeight=0.50 PerfScore 2.25
+ test r12d, r12d + jne SHORT G_M21353_IG12 + ;; size=5 bbWeight=0.50 PerfScore 0.62
G_M21353_IG10: ; bbWeight=0.50, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref, isz
+ test rbx, rbx + jne SHORT G_M21353_IG11 + test r15, r15 + jne G_M21353_IG15 + jmp SHORT G_M21353_IG12 + ;; size=16 bbWeight=0.50 PerfScore 2.25 +G_M21353_IG11: ; bbWeight=0.50, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref, isz
mov rdi, rbx ; gcrRegs +[rdi] mov rsi, r15 @@ -173,9 +179,9 @@ G_M21353_IG10: ; bbWeight=0.50, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRe call [rax+0x20]<unknown method> ; gcrRegs -[rsi rdi] test eax, eax
- je SHORT G_M21353_IG14
+ je SHORT G_M21353_IG15
;; size=22 bbWeight=0.50 PerfScore 4.50
-G_M21353_IG11: ; bbWeight=0.50, gcrefRegs=6008 {rbx r13 r14}, byrefRegs=0000 {}, byref, isz
+G_M21353_IG12: ; bbWeight=0.50, gcrefRegs=6008 {rbx r13 r14}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r15] mov rdi, gword ptr [r13+0x160] ; gcrRegs +[rdi] @@ -197,7 +203,7 @@ G_M21353_IG11: ; bbWeight=0.50, gcrefRegs=6008 {rbx r13 r14}, byrefRegs=0 mov r14d, edx inc dword ptr [r13+0x2C] cmp gword ptr [r13+0x08], rax
- je SHORT G_M21353_IG12
+ je SHORT G_M21353_IG13
lea rdi, bword ptr [r13+0x08] ; byrRegs +[rdi] mov rsi, rax @@ -209,20 +215,21 @@ G_M21353_IG11: ; bbWeight=0.50, gcrefRegs=6008 {rbx r13 r14}, byrefRegs=0 ; gcrRegs +[rdi] mov gword ptr [r13+0x18], rdi ;; size=81 bbWeight=0.50 PerfScore 12.62
-G_M21353_IG12: ; bbWeight=0.50, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref
+G_M21353_IG13: ; bbWeight=0.50, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi] add dword ptr [r13+0x28], r14d ;; size=4 bbWeight=0.50 PerfScore 1.50
-G_M21353_IG13: ; bbWeight=0.50, epilog, nogc, extend - add rsp, 16
+G_M21353_IG14: ; bbWeight=0.50, epilog, nogc, extend + add rsp, 24
pop rbx
+ pop r12
pop r13 pop r14 pop r15 pop rbp ret
- ;; size=13 bbWeight=0.50 PerfScore 1.88 -G_M21353_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=15 bbWeight=0.50 PerfScore 2.12 +G_M21353_IG15: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rbx r14-r15] mov rdi, gword ptr [r13+0x160] ; gcrRegs +[rdi] @@ -249,7 +256,7 @@ G_M21353_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=E00 mov ebx, edx inc dword ptr [r13+0x2C] cmp gword ptr [r13+0x08], rax
- je SHORT G_M21353_IG15
+ je SHORT G_M21353_IG16
lea rdi, bword ptr [r13+0x08] ; byrRegs +[rdi] mov rsi, rax @@ -261,21 +268,22 @@ G_M21353_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=E00 ; gcrRegs +[rax] mov gword ptr [r13+0x18], rax ;; size=95 bbWeight=0.50 PerfScore 13.88
-G_M21353_IG15: ; bbWeight=0.50, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref
+G_M21353_IG16: ; bbWeight=0.50, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref
; gcrRegs -[rax] add dword ptr [r13+0x28], ebx ;; size=4 bbWeight=0.50 PerfScore 1.50
-G_M21353_IG16: ; bbWeight=0.50, epilog, nogc, extend - add rsp, 16
+G_M21353_IG17: ; bbWeight=0.50, epilog, nogc, extend + add rsp, 24
pop rbx
+ pop r12
pop r13 pop r14 pop r15 pop rbp ret
- ;; size=13 bbWeight=0.50 PerfScore 1.88
+ ;; size=15 bbWeight=0.50 PerfScore 2.12
-; Total bytes of code 413, prolog size 17, PerfScore 67.00, instruction count 123, allocated bytes for code 413 (MethodHash=7b46ac96) for method Microsoft.CodeAnalysis.CSharp.NullableWalker:SetUpdatedSymbol(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)
+; Total bytes of code 432, prolog size 19, PerfScore 69.00, instruction count 129, allocated bytes for code 432 (MethodHash=7b46ac96) for method Microsoft.CodeAnalysis.CSharp.NullableWalker:SetUpdatedSymbol(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)
; ============================================================ Unwind Info: @@ -283,13 +291,14 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x0C - CountOfUnwindCodes: 6
+ SizeOfProlog : 0x0E + CountOfUnwindCodes: 7
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x0C UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10 - CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x0E UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 2 * 8 + 8 = 24 = 0x18 + CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) + CodeOffset: 0x09 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r12 (12)
CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13) CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14) CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)

+29 (+4.82%) : 17244.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:g_getCloseQuote|4285(byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)

@@ -23,26 +23,26 @@ ; V12 tmp3 [V12,T00] ( 14, 15.50) ref -> r14 class-hnd exact single-def "non-inline candidate call" <System.String> ; V13 tmp4 [V13,T05] ( 6, 6 ) int -> rcx "Inline stloc first use temp" ; V14 tmp5 [V14,T10] ( 4, 3.50) int -> rdx "Inline stloc first use temp"
-; V15 tmp6 [V15,T18] ( 3, 2 ) ref -> r13 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V15 tmp6 [V15,T18] ( 3, 2 ) ref -> r12 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
; V16 tmp7 [V16,T03] ( 10, 11 ) ref -> rbx class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode> ;* V17 tmp8 [V17 ] ( 0, 0 ) ref -> zero-ref single-def "spilling varStr" ;* V18 tmp9 [V18,T26] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
-; V19 tmp10 [V19,T22] ( 3, 1.50) ref -> r13 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V19 tmp10 [V19,T22] ( 3, 1.50) ref -> r12 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
; V20 tmp11 [V20,T11] ( 6, 3 ) ref -> r13 class-hnd exact single-def "Inline stloc first use temp" <System.String> ; V21 tmp12 [V21,T15] ( 2, 1 ) ubyte -> rax "Inline return value spill temp" ; V22 tmp13 [V22,T19] ( 2, 2 ) byref -> rdi single-def "impAppendStmt" ; V23 tmp14 [V23,T16] ( 2, 1 ) ubyte -> rax "Inline return value spill temp" ; V24 tmp15 [V24,T20] ( 2, 2 ) byref -> rdi single-def "impAppendStmt"
-; V25 tmp16 [V25,T01] ( 13, 13 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V25 tmp16 [V25,T01] ( 13, 13 ) ref -> r12 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V26 tmp17 [V26,T21] ( 2, 2 ) int -> rdi "Inlining Arg"
-; V27 tmp18 [V27,T02] ( 12, 12 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken+MissingTokenWithTrivia>
+; V27 tmp18 [V27,T02] ( 12, 12 ) ref -> r12 class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken+MissingTokenWithTrivia>
;* V28 tmp19 [V28 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V29 tmp20 [V29,T12] ( 3, 3 ) int -> rdx single-def "field V04.<Start>k__BackingField (fldOffset=0x0)" P-INDEP ; V30 tmp21 [V30,T14] ( 3, 2.50) int -> rsi single-def "field V04.<End>k__BackingField (fldOffset=0x4)" P-INDEP ;* V31 tmp22 [V31 ] ( 0, 0 ) int -> zero-ref "field V08._value (fldOffset=0x0)" P-INDEP ; V32 tmp23 [V32,T07] ( 3, 6 ) ref -> rdi single-def "argument with side effect"
-; V33 cse0 [V33,T23] ( 3, 1.50) int -> [rbp-0x2C] spill-single-def "CSE - moderate" -; V34 cse1 [V34,T24] ( 3, 1.50) long -> [rbp-0x38] spill-single-def "CSE - moderate"
+; V33 cse0 [V33,T23] ( 3, 1.50) int -> [rbp-0x2C] "CSE - moderate" +; V34 cse1 [V34,T24] ( 3, 1.50) long -> [rbp-0x38] "CSE - moderate"
; V35 cse2 [V35,T25] ( 2, 1 ) int -> rdi "CSE - moderate" ; V36 cse3 [V36,T17] ( 4, 2 ) int -> r12 "CSE - moderate" ; V37 rat0 [V37,T08] ( 3, 6 ) int -> rdx "ReplaceWithLclVar is creating a new local variable" @@ -64,7 +64,7 @@ G_M17349_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M17349_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz mov edx, dword ptr [rbx+0x20] cmp edx, 3
- ja G_M17349_IG19
+ ja G_M17349_IG20
mov edi, 3 bt edi, edx jae SHORT G_M17349_IG04 @@ -123,19 +123,19 @@ G_M17349_IG09: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, mov rdi, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken+MissingTokenWithTrivia call CORINFO_HELP_NEWSFAST ; gcrRegs +[rax]
- mov r13, rax - ; gcrRegs +[r13] - mov word ptr [r13+0x0C], r15w
+ mov r12, rax + ; gcrRegs +[r12] + mov word ptr [r12+0x0C], r15w
xor eax, eax ; gcrRegs -[rax]
- mov dword ptr [r13+0x08], eax - or byte ptr [r13+0x0E], 32
+ mov dword ptr [r12+0x08], eax + or byte ptr [r12+0x0E], 32
test rbx, rbx
- je G_M17349_IG16 - jmp G_M17349_IG15 - ;; size=48 bbWeight=0.50 PerfScore 5.00
+ je G_M17349_IG17 + jmp G_M17349_IG16 + ;; size=51 bbWeight=0.50 PerfScore 5.00
G_M17349_IG10: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r13] +[r14]
+ ; gcrRegs -[r12] +[r14]
mov edi, r15d call [<unknown method>] ; gcrRegs +[rax] @@ -144,17 +144,17 @@ G_M17349_IG10: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 mov edi, r15d sub edi, 0x2001 cmp edi, 303
- ja G_M17349_IG11
+ ja G_M17349_IG12
cmp r14, r13
- je G_M17349_IG13
+ je G_M17349_IG14
test r14, r14
- je G_M17349_IG11
+ je G_M17349_IG12
test r13, r13
- je G_M17349_IG11
+ je G_M17349_IG12
mov edi, dword ptr [r14+0x08] mov r12d, dword ptr [r13+0x08] cmp edi, r12d
- jne G_M17349_IG11
+ jne G_M17349_IG12
mov edi, 1 call [<unknown method>] ; gcrRegs -[rax] @@ -178,9 +178,13 @@ G_M17349_IG10: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 call [<unknown method>] ; byrRegs -[rsi rdi] test eax, eax
- je SHORT G_M17349_IG11
+ je SHORT G_M17349_IG12 + mov eax, dword ptr [rbp-0x2C] + mov rcx, qword ptr [rbp-0x38]
cmp dword ptr [r14+0x08], r12d
- jne SHORT G_M17349_IG11
+ mov dword ptr [rbp-0x2C], eax + mov qword ptr [rbp-0x38], rcx + jne SHORT G_M17349_IG12
mov edi, 1 call [<unknown method>] mov edi, 1 @@ -196,26 +200,28 @@ G_M17349_IG10: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 ; gcrRegs -[r13] ; byrRegs -[rsi rdi] test eax, eax
- jne SHORT G_M17349_IG13 - ;; size=211 bbWeight=0.50 PerfScore 29.50 -G_M17349_IG11: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
+ ;; size=223 bbWeight=0.50 PerfScore 31.00 +G_M17349_IG11: ; bbWeight=0.50, isz, extend + jne SHORT G_M17349_IG14 + ;; size=2 bbWeight=0.50 PerfScore 0.50 +G_M17349_IG12: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
mov rdi, 0xD1FFAB1E ; <unknown class> call CORINFO_HELP_NEWSFAST ; gcrRegs +[rax]
- mov r13, rax - ; gcrRegs +[r13]
+ mov r12, rax + ; gcrRegs +[r12]
mov edi, dword ptr [r14+0x08]
- mov word ptr [r13+0x0C], r15w - mov dword ptr [r13+0x08], edi - or byte ptr [r13+0x0E], 32 - lea rdi, bword ptr [r13+0x10]
+ mov word ptr [r12+0x0C], r15w + mov dword ptr [r12+0x08], edi + or byte ptr [r12+0x0E], 32 + lea rdi, bword ptr [r12+0x10]
; byrRegs +[rdi] mov rsi, r14 ; gcrRegs +[rsi] call CORINFO_HELP_ASSIGN_REF ; gcrRegs -[rax rsi] ; byrRegs -[rdi]
- lea rdi, bword ptr [r13+0x18]
+ lea rdi, bword ptr [r12+0x18]
; byrRegs +[rdi] mov rsi, r14 ; gcrRegs +[rsi] @@ -223,25 +229,25 @@ G_M17349_IG11: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 ; gcrRegs -[rsi r14] ; byrRegs -[rdi] test rbx, rbx
- je SHORT G_M17349_IG12
+ je SHORT G_M17349_IG13
movzx rdi, byte ptr [rbx+0x0E] and edi, 63
- or byte ptr [r13+0x0E], dil
+ or byte ptr [r12+0x0E], dil
mov edi, dword ptr [rbx+0x08]
- add dword ptr [r13+0x08], edi - lea rdi, bword ptr [r13+0x28]
+ add dword ptr [r12+0x08], edi + lea rdi, bword ptr [r12+0x28]
; byrRegs +[rdi] mov rsi, rbx ; gcrRegs +[rsi] call CORINFO_HELP_ASSIGN_REF ; gcrRegs -[rbx rsi] ; byrRegs -[rdi]
- ;; size=96 bbWeight=0.50 PerfScore 12.62 -G_M17349_IG12: ; bbWeight=0.50, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref, isz - jmp SHORT G_M17349_IG14
+ ;; size=104 bbWeight=0.50 PerfScore 12.62 +G_M17349_IG13: ; bbWeight=0.50, gcrefRegs=1000 {r12}, byrefRegs=0000 {}, byref, isz + jmp SHORT G_M17349_IG15
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M17349_IG13: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - ; gcrRegs -[r13] +[rbx]
+G_M17349_IG14: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref + ; gcrRegs -[r12] +[rbx]
mov edi, r15d mov rdx, rbx ; gcrRegs +[rdx] @@ -249,36 +255,36 @@ G_M17349_IG13: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, ; gcrRegs +[rsi] call [<unknown method>] ; gcrRegs -[rdx rbx rsi] +[rax]
- mov r13, rax - ; gcrRegs +[r13]
+ mov r12, rax + ; gcrRegs +[r12]
;; size=17 bbWeight=0.50 PerfScore 2.00
-G_M17349_IG14: ; bbWeight=0.50, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref, isz
+G_M17349_IG15: ; bbWeight=0.50, gcrefRegs=1000 {r12}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
- jmp SHORT G_M17349_IG17
+ jmp SHORT G_M17349_IG18
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M17349_IG15: ; bbWeight=0.50, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref
+G_M17349_IG16: ; bbWeight=0.50, gcrefRegs=1008 {rbx r12}, byrefRegs=0000 {}, byref
; gcrRegs +[rbx] movzx rdi, byte ptr [rbx+0x0E] and edi, 63
- or byte ptr [r13+0x0E], dil
+ or byte ptr [r12+0x0E], dil
mov edi, dword ptr [rbx+0x08]
- mov dword ptr [r13+0x08], edi - lea rdi, bword ptr [r13+0x18]
+ mov dword ptr [r12+0x08], edi + lea rdi, bword ptr [r12+0x18]
; byrRegs +[rdi] mov rsi, rbx ; gcrRegs +[rsi] call CORINFO_HELP_ASSIGN_REF ; gcrRegs -[rbx rsi] ; byrRegs -[rdi]
- ;; size=31 bbWeight=0.50 PerfScore 5.00 -G_M17349_IG16: ; bbWeight=0.50, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref - and byte ptr [r13+0x0E], 223 - ;; size=5 bbWeight=0.50 PerfScore 1.50 -G_M17349_IG17: ; bbWeight=1, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref - mov rax, r13
+ ;; size=34 bbWeight=0.50 PerfScore 5.00 +G_M17349_IG17: ; bbWeight=0.50, gcrefRegs=1000 {r12}, byrefRegs=0000 {}, byref + and byte ptr [r12+0x0E], 223 + ;; size=6 bbWeight=0.50 PerfScore 1.50 +G_M17349_IG18: ; bbWeight=1, gcrefRegs=1000 {r12}, byrefRegs=0000 {}, byref + mov rax, r12
; gcrRegs +[rax] ;; size=3 bbWeight=1 PerfScore 0.25
-G_M17349_IG18: ; bbWeight=1, epilog, nogc, extend
+G_M17349_IG19: ; bbWeight=1, epilog, nogc, extend
add rsp, 24 pop rbx pop r12 @@ -288,8 +294,8 @@ G_M17349_IG18: ; bbWeight=1, epilog, nogc, extend pop rbp ret ;; size=15 bbWeight=1 PerfScore 4.25
-G_M17349_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, gcvars, byref - ; gcrRegs -[rax r13]
+G_M17349_IG20: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, gcvars, byref + ; gcrRegs -[rax r12]
; byrRegs +[rbx] mov rdi, 0xD1FFAB1E ; <unknown class> call CORINFO_HELP_NEWSFAST @@ -308,7 +314,7 @@ G_M17349_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { int3 ;; size=39 bbWeight=0 PerfScore 0.00 ...

smoke_tests.nativeaot.linux.x64.checked.mch

-45 (-52.33%) : 145.dasm - System.Int32:Equals(System.Object):ubyte:this (FullOpts)

@@ -8,76 +8,53 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 2.50) byref -> rdi this single-def
-; V01 arg1 [V01,T00] ( 5, 3.75) ref -> rbx class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 4, 3.50) ref -> rsi class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T01] ( 3, 4.50) ref -> rax class-hnd exact "spilling QMark2" <System.Int32>
-; V04 tmp2 [V04,T03] ( 2, 2 ) int -> r15 "impAppendStmt" -; V05 cse0 [V05,T04] ( 3, 1 ) long -> rsi "CSE - moderate"
+; V04 tmp2 [V04,T03] ( 2, 2 ) int -> rax "impAppendStmt"
; ; Lcl frame size = 0
-G_M40448_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M40448_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push rbp
- push r15 - push rbx - lea rbp, [rsp+0x10] - mov rbx, rsi - ; gcrRegs +[rbx] - ;; size=12 bbWeight=1 PerfScore 3.75 -G_M40448_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, byref, isz
+ mov rbp, rsp + ;; size=4 bbWeight=1 PerfScore 1.25 +G_M40448_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, byref, isz + ; gcrRegs +[rsi]
; byrRegs +[rdi]
- mov rax, rbx
+ mov rax, rsi
; gcrRegs +[rax] test rax, rax je SHORT G_M40448_IG04 ;; size=8 bbWeight=1 PerfScore 1.50
-G_M40448_IG03: ; bbWeight=0.25, gcrefRegs=0009 {rax rbx}, byrefRegs=0080 {rdi}, byref, isz - mov rsi, qword ptr [rax] - lea rax, [(reloc)] ; System.Int32 - ; gcrRegs -[rax] - cmp rsi, rax
+G_M40448_IG03: ; bbWeight=0.25, gcrefRegs=0041 {rax rsi}, byrefRegs=0080 {rdi}, byref, isz + lea rcx, [(reloc)] ; System.Int32 + cmp qword ptr [rax], rcx
je SHORT G_M40448_IG06
- ;; size=15 bbWeight=0.25 PerfScore 0.94
+ ;; size=12 bbWeight=0.25 PerfScore 1.12
G_M40448_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx]
+ ; gcrRegs -[rax rsi]
; byrRegs -[rdi] xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M40448_IG05: ; bbWeight=0.50, epilog, nogc, extend
- pop rbx - pop r15
pop rbp ret
- ;; size=5 bbWeight=0.50 PerfScore 1.25 -G_M40448_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, gcvars, byref, isz - ; gcrRegs +[rbx] - ; byrRegs +[rdi] - mov r15d, dword ptr [rdi] - lea rdi, [(reloc)] ; System.Int32 - ; byrRegs -[rdi] - cmp rsi, rdi - je SHORT G_M40448_IG08 - ;; size=15 bbWeight=0.50 PerfScore 1.88 -G_M40448_IG07: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - mov rsi, rbx
+ ;; size=2 bbWeight=0.50 PerfScore 0.75 +G_M40448_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, gcvars, byref
; gcrRegs +[rsi]
- lea rdi, [(reloc)] ; System.Int32 - call CORINFO_HELP_UNBOX - ; gcrRegs -[rsi] - ;; size=15 bbWeight=0.25 PerfScore 0.44 -G_M40448_IG08: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - xor eax, eax - cmp r15d, dword ptr [rbx+0x08]
+ ; byrRegs +[rdi] + mov eax, dword ptr [rdi] + cmp eax, dword ptr [rsi+0x08]
sete al
- ;; size=9 bbWeight=0.50 PerfScore 2.12 -G_M40448_IG09: ; bbWeight=0.50, epilog, nogc, extend - pop rbx - pop r15
+ movzx rax, al + ;; size=11 bbWeight=0.50 PerfScore 3.12 +G_M40448_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop rbp ret
- ;; size=5 bbWeight=0.50 PerfScore 1.25
+ ;; size=2 bbWeight=0.50 PerfScore 0.75
-; Total bytes of code 86, prolog size 9, PerfScore 13.25, instruction count 31, allocated bytes for code 86 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 41, prolog size 4, PerfScore 8.62, instruction count 17, allocated bytes for code 41 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (FullOpts)
; ============================================================ Cfi Info: @@ -85,7 +62,3 @@ Cfi Info: >> End offset : 0xd1ffab1e CodeOffset: 0x01 Op: AdjustCfaOffset Offset:0x8 CodeOffset: 0x01 Op: RelOffset DwarfReg:0x6 Offset:0x0
- CodeOffset: 0x03 Op: AdjustCfaOffset Offset:0x8 - CodeOffset: 0x03 Op: RelOffset DwarfReg:0xf Offset:0x0 - CodeOffset: 0x04 Op: AdjustCfaOffset Offset:0x8 - CodeOffset: 0x04 Op: RelOffset DwarfReg:0x3 Offset:0x0

-45 (-52.33%) : 17957.dasm - System.UInt32:Equals(System.Object):ubyte:this (FullOpts)

@@ -8,76 +8,53 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 2.50) byref -> rdi this single-def
-; V01 arg1 [V01,T00] ( 5, 3.75) ref -> rbx class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 4, 3.50) ref -> rsi class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T01] ( 3, 4.50) ref -> rax class-hnd exact "spilling QMark2" <System.UInt32>
-; V04 tmp2 [V04,T03] ( 2, 2 ) int -> r15 "impAppendStmt" -; V05 cse0 [V05,T04] ( 3, 1 ) long -> rsi "CSE - moderate"
+; V04 tmp2 [V04,T03] ( 2, 2 ) int -> rax "impAppendStmt"
; ; Lcl frame size = 0
-G_M22229_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M22229_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push rbp
- push r15 - push rbx - lea rbp, [rsp+0x10] - mov rbx, rsi - ; gcrRegs +[rbx] - ;; size=12 bbWeight=1 PerfScore 3.75 -G_M22229_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, byref, isz
+ mov rbp, rsp + ;; size=4 bbWeight=1 PerfScore 1.25 +G_M22229_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, byref, isz + ; gcrRegs +[rsi]
; byrRegs +[rdi]
- mov rax, rbx
+ mov rax, rsi
; gcrRegs +[rax] test rax, rax je SHORT G_M22229_IG04 ;; size=8 bbWeight=1 PerfScore 1.50
-G_M22229_IG03: ; bbWeight=0.25, gcrefRegs=0009 {rax rbx}, byrefRegs=0080 {rdi}, byref, isz - mov rsi, qword ptr [rax] - lea rax, [(reloc)] ; System.UInt32 - ; gcrRegs -[rax] - cmp rsi, rax
+G_M22229_IG03: ; bbWeight=0.25, gcrefRegs=0041 {rax rsi}, byrefRegs=0080 {rdi}, byref, isz + lea rcx, [(reloc)] ; System.UInt32 + cmp qword ptr [rax], rcx
je SHORT G_M22229_IG06
- ;; size=15 bbWeight=0.25 PerfScore 0.94
+ ;; size=12 bbWeight=0.25 PerfScore 1.12
G_M22229_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx]
+ ; gcrRegs -[rax rsi]
; byrRegs -[rdi] xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M22229_IG05: ; bbWeight=0.50, epilog, nogc, extend
- pop rbx - pop r15
pop rbp ret
- ;; size=5 bbWeight=0.50 PerfScore 1.25 -G_M22229_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, gcvars, byref, isz - ; gcrRegs +[rbx] - ; byrRegs +[rdi] - mov r15d, dword ptr [rdi] - lea rdi, [(reloc)] ; System.UInt32 - ; byrRegs -[rdi] - cmp rsi, rdi - je SHORT G_M22229_IG08 - ;; size=15 bbWeight=0.50 PerfScore 1.88 -G_M22229_IG07: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - mov rsi, rbx
+ ;; size=2 bbWeight=0.50 PerfScore 0.75 +G_M22229_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, gcvars, byref
; gcrRegs +[rsi]
- lea rdi, [(reloc)] ; System.UInt32 - call CORINFO_HELP_UNBOX - ; gcrRegs -[rsi] - ;; size=15 bbWeight=0.25 PerfScore 0.44 -G_M22229_IG08: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - xor eax, eax - cmp r15d, dword ptr [rbx+0x08]
+ ; byrRegs +[rdi] + mov eax, dword ptr [rdi] + cmp eax, dword ptr [rsi+0x08]
sete al
- ;; size=9 bbWeight=0.50 PerfScore 2.12 -G_M22229_IG09: ; bbWeight=0.50, epilog, nogc, extend - pop rbx - pop r15
+ movzx rax, al + ;; size=11 bbWeight=0.50 PerfScore 3.12 +G_M22229_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop rbp ret
- ;; size=5 bbWeight=0.50 PerfScore 1.25
+ ;; size=2 bbWeight=0.50 PerfScore 0.75
-; Total bytes of code 86, prolog size 9, PerfScore 13.25, instruction count 31, allocated bytes for code 86 (MethodHash=4843a92a) for method System.UInt32:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 41, prolog size 4, PerfScore 8.62, instruction count 17, allocated bytes for code 41 (MethodHash=4843a92a) for method System.UInt32:Equals(System.Object):ubyte:this (FullOpts)
; ============================================================ Cfi Info: @@ -85,7 +62,3 @@ Cfi Info: >> End offset : 0xd1ffab1e CodeOffset: 0x01 Op: AdjustCfaOffset Offset:0x8 CodeOffset: 0x01 Op: RelOffset DwarfReg:0x6 Offset:0x0
- CodeOffset: 0x03 Op: AdjustCfaOffset Offset:0x8 - CodeOffset: 0x03 Op: RelOffset DwarfReg:0xf Offset:0x0 - CodeOffset: 0x04 Op: AdjustCfaOffset Offset:0x8 - CodeOffset: 0x04 Op: RelOffset DwarfReg:0x3 Offset:0x0

-45 (-52.33%) : 24849.dasm - System.Int32:Equals(System.Object):ubyte:this (FullOpts)

@@ -8,76 +8,53 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 2.50) byref -> rdi this single-def
-; V01 arg1 [V01,T00] ( 5, 3.75) ref -> rbx class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 4, 3.50) ref -> rsi class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T01] ( 3, 4.50) ref -> rax class-hnd exact "spilling QMark2" <System.Int32>
-; V04 tmp2 [V04,T03] ( 2, 2 ) int -> r15 "impAppendStmt" -; V05 cse0 [V05,T04] ( 3, 1 ) long -> rsi "CSE - moderate"
+; V04 tmp2 [V04,T03] ( 2, 2 ) int -> rax "impAppendStmt"
; ; Lcl frame size = 0
-G_M40448_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M40448_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push rbp
- push r15 - push rbx - lea rbp, [rsp+0x10] - mov rbx, rsi - ; gcrRegs +[rbx] - ;; size=12 bbWeight=1 PerfScore 3.75 -G_M40448_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, byref, isz
+ mov rbp, rsp + ;; size=4 bbWeight=1 PerfScore 1.25 +G_M40448_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, byref, isz + ; gcrRegs +[rsi]
; byrRegs +[rdi]
- mov rax, rbx
+ mov rax, rsi
; gcrRegs +[rax] test rax, rax je SHORT G_M40448_IG04 ;; size=8 bbWeight=1 PerfScore 1.50
-G_M40448_IG03: ; bbWeight=0.25, gcrefRegs=0009 {rax rbx}, byrefRegs=0080 {rdi}, byref, isz - mov rsi, qword ptr [rax] - lea rax, [(reloc)] ; System.Int32 - ; gcrRegs -[rax] - cmp rsi, rax
+G_M40448_IG03: ; bbWeight=0.25, gcrefRegs=0041 {rax rsi}, byrefRegs=0080 {rdi}, byref, isz + lea rcx, [(reloc)] ; System.Int32 + cmp qword ptr [rax], rcx
je SHORT G_M40448_IG06
- ;; size=15 bbWeight=0.25 PerfScore 0.94
+ ;; size=12 bbWeight=0.25 PerfScore 1.12
G_M40448_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx]
+ ; gcrRegs -[rax rsi]
; byrRegs -[rdi] xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M40448_IG05: ; bbWeight=0.50, epilog, nogc, extend
- pop rbx - pop r15
pop rbp ret
- ;; size=5 bbWeight=0.50 PerfScore 1.25 -G_M40448_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, gcvars, byref, isz - ; gcrRegs +[rbx] - ; byrRegs +[rdi] - mov r15d, dword ptr [rdi] - lea rdi, [(reloc)] ; System.Int32 - ; byrRegs -[rdi] - cmp rsi, rdi - je SHORT G_M40448_IG08 - ;; size=15 bbWeight=0.50 PerfScore 1.88 -G_M40448_IG07: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - mov rsi, rbx
+ ;; size=2 bbWeight=0.50 PerfScore 0.75 +G_M40448_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, gcvars, byref
; gcrRegs +[rsi]
- lea rdi, [(reloc)] ; System.Int32 - call CORINFO_HELP_UNBOX - ; gcrRegs -[rsi] - ;; size=15 bbWeight=0.25 PerfScore 0.44 -G_M40448_IG08: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - xor eax, eax - cmp r15d, dword ptr [rbx+0x08]
+ ; byrRegs +[rdi] + mov eax, dword ptr [rdi] + cmp eax, dword ptr [rsi+0x08]
sete al
- ;; size=9 bbWeight=0.50 PerfScore 2.12 -G_M40448_IG09: ; bbWeight=0.50, epilog, nogc, extend - pop rbx - pop r15
+ movzx rax, al + ;; size=11 bbWeight=0.50 PerfScore 3.12 +G_M40448_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop rbp ret
- ;; size=5 bbWeight=0.50 PerfScore 1.25
+ ;; size=2 bbWeight=0.50 PerfScore 0.75
-; Total bytes of code 86, prolog size 9, PerfScore 13.25, instruction count 31, allocated bytes for code 86 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 41, prolog size 4, PerfScore 8.62, instruction count 17, allocated bytes for code 41 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (FullOpts)
; ============================================================ Cfi Info: @@ -85,7 +62,3 @@ Cfi Info: >> End offset : 0xd1ffab1e CodeOffset: 0x01 Op: AdjustCfaOffset Offset:0x8 CodeOffset: 0x01 Op: RelOffset DwarfReg:0x6 Offset:0x0
- CodeOffset: 0x03 Op: AdjustCfaOffset Offset:0x8 - CodeOffset: 0x03 Op: RelOffset DwarfReg:0xf Offset:0x0 - CodeOffset: 0x04 Op: AdjustCfaOffset Offset:0x8 - CodeOffset: 0x04 Op: RelOffset DwarfReg:0x3 Offset:0x0

+21 (+4.70%) : 7256.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)

@@ -24,7 +24,7 @@ ; V14 tmp1 [V14,T19] ( 2, 1 ) int -> r13 ;* V15 tmp2 [V15 ] ( 0, 0 ) ref -> zero-ref single-def ;* V16 tmp3 [V16 ] ( 0, 0 ) ref -> zero-ref
-; V17 tmp4 [V17,T15] ( 3, 1.50) int -> rax
+; V17 tmp4 [V17,T15] ( 3, 1.50) int -> r14
; V18 tmp5 [V18,T00] ( 3, 24 ) int -> rax "impSpillLclRefs" ; V19 tmp6 [V19,T03] ( 3, 12 ) ref -> rax class-hnd "impSpillLclRefs" <<unknown class>> ;* V20 tmp7 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <<unknown class>> @@ -134,23 +134,27 @@ G_M62513_IG08: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, G_M62513_IG09: ; bbWeight=4, gcrefRegs=8080 {rdi r15}, byrefRegs=0000 {}, byref, isz mov ebx, dword ptr [rdi+0x14] test ebx, ebx
- jle SHORT G_M62513_IG10
+ jle G_M62513_IG17
mov eax, esi lea esi, [rax-0x01] mov dword ptr [rbp-0x30], esi test eax, eax jg SHORT G_M62513_IG13
- ;; size=19 bbWeight=4 PerfScore 25.00 -G_M62513_IG10: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ ;; size=23 bbWeight=4 PerfScore 25.00 +G_M62513_IG10: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
; gcrRegs -[r15]
- test ebx, ebx - jg SHORT G_M62513_IG17 - xor eax, eax - ;; size=6 bbWeight=0.50 PerfScore 0.75
+ mov r14d, r13d + sar r14d, 31 + and r14d, 3 + add r14d, r13d + sar r14d, 2 + add r14d, dword ptr [rdi+0x18] + mov rdi, gword ptr [rbp-0x38] + ;; size=26 bbWeight=0.50 PerfScore 2.88
G_M62513_IG11: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
- mov dword ptr [rdi+0x18], eax
+ mov dword ptr [rdi+0x18], r14d
jmp SHORT G_M62513_IG18
- ;; size=5 bbWeight=0.50 PerfScore 1.50
+ ;; size=6 bbWeight=0.50 PerfScore 1.50
G_M62513_IG12: ; bbWeight=1, gcrefRegs=8080 {rdi r15}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r15] mov esi, 2 @@ -186,8 +190,8 @@ G_M62513_IG14: ; bbWeight=2, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byr mov gword ptr [rax+8*rcx+0x10], rdx cmp byte ptr [r15], r15b mov esi, dword ptr [rbp-0x30]
- jmp SHORT G_M62513_IG09 - ;; size=31 bbWeight=2 PerfScore 32.50
+ jmp G_M62513_IG09 + ;; size=34 bbWeight=2 PerfScore 32.50
G_M62513_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[rax rdx rdi r15] call CORINFO_HELP_RNGCHKFAIL @@ -203,14 +207,11 @@ G_M62513_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ;; size=14 bbWeight=0 PerfScore 0.00 G_M62513_IG17: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz ; byrRegs -[rax]
- mov eax, r13d - sar eax, 31 - and eax, 3 - add eax, r13d - sar eax, 2 - add eax, dword ptr [rdi+0x18]
+ test ebx, ebx + jg G_M62513_IG10 + xor r14d, r14d
jmp SHORT G_M62513_IG11
- ;; size=20 bbWeight=0.50 PerfScore 3.38
+ ;; size=13 bbWeight=0.50 PerfScore 1.75
G_M62513_IG18: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref ; GC ptr vars -{V00 V01} call <unknown method> @@ -262,7 +263,7 @@ G_M62513_IG23: ; bbWeight=0, funclet epilog, nogc, extend ret ;; size=15 bbWeight=0 PerfScore 0.00
-; Total bytes of code 447, prolog size 31, PerfScore 134.00, instruction count 138, allocated bytes for code 447 (MethodHash=d51a0bce) for method System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
+; Total bytes of code 468, prolog size 31, PerfScore 134.50, instruction count 139, allocated bytes for code 468 (MethodHash=d51a0bce) for method System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
; ============================================================ Cfi Info:

+3 (+5.08%) : 3598.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:set_SupportsRandomAccess(ubyte):this (FullOpts)

@@ -15,6 +15,7 @@ ; V05 tmp3 [V05,T02] ( 3, 2 ) int -> rax ;* V06 tmp4 [V06 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V07 tmp5 [V07 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+; V08 cse0 [V08,T03] ( 2, 2 ) int -> rdi "CSE - aggressive"
; ; Lcl frame size = 8 @@ -27,34 +28,37 @@ G_M64610_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[rbx] ;; size=11 bbWeight=1 PerfScore 3.75 G_M64610_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- test sil, sil - je SHORT G_M64610_IG03
+ movzx rdi, sil + test edi, edi + je SHORT G_M64610_IG04 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M64610_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
lea rdi, gword ptr [(reloc)] ; gcrRegs +[rdi] lea rsi, gword ptr [(reloc)] ; gcrRegs +[rsi] call <unknown method> ; gcrRegs -[rsi rdi]
- jmp SHORT G_M64610_IG04 - ;; size=26 bbWeight=1 PerfScore 5.25 -G_M64610_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - mov eax, -1
jmp SHORT G_M64610_IG05
+ ;; size=21 bbWeight=0.50 PerfScore 2.00 +G_M64610_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz + mov eax, -1 + jmp SHORT G_M64610_IG06
;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M64610_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M64610_IG05: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov eax, 1 ;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M64610_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M64610_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov dword ptr [rbx+0x2C], eax ;; size=3 bbWeight=1 PerfScore 1.00
-G_M64610_IG06: ; bbWeight=1, epilog, nogc, extend
+G_M64610_IG07: ; bbWeight=1, epilog, nogc, extend
add rsp, 8 pop rbx pop rbp ret ;; size=7 bbWeight=1 PerfScore 2.25
-; Total bytes of code 59, prolog size 8, PerfScore 13.50, instruction count 19, allocated bytes for code 59 (MethodHash=ced4039d) for method Microsoft.Win32.SafeHandles.SafeFileHandle:set_SupportsRandomAccess(ubyte):this (FullOpts)
+; Total bytes of code 62, prolog size 8, PerfScore 11.75, instruction count 20, allocated bytes for code 62 (MethodHash=ced4039d) for method Microsoft.Win32.SafeHandles.SafeFileHandle:set_SupportsRandomAccess(ubyte):this (FullOpts)
; ============================================================ Cfi Info:

+6 (+5.66%) : 15405.dasm - System.Threading.PortableThreadPool:RemoveWaitThread(System.Threading.PortableThreadPool+WaitThread):this (FullOpts)

@@ -9,8 +9,8 @@ ; ; V00 this [V00,T03] ( 4, 3.50) ref -> rdi this class-hnd exact single-def <System.Threading.PortableThreadPool> ; V01 arg1 [V01,T01] ( 4, 7 ) ref -> rsi class-hnd exact single-def <System.Threading.PortableThreadPool+WaitThread>
-; V02 loc0 [V02,T00] ( 9, 19.50) ref -> registers class-hnd exact <System.Threading.PortableThreadPool+WaitThreadNode> -; V03 loc1 [V03,T02] ( 3, 8.50) ref -> rbx class-hnd exact <System.Threading.PortableThreadPool+WaitThreadNode>
+; V02 loc0 [V02,T00] ( 8, 19 ) ref -> registers class-hnd exact <System.Threading.PortableThreadPool+WaitThreadNode> +; V03 loc1 [V03,T02] ( 3, 8.50) ref -> registers class-hnd exact <System.Threading.PortableThreadPool+WaitThreadNode>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V06 tmp2 [V06 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -54,50 +54,57 @@ G_M1296_IG05: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=0048 {r mov rdi, gword ptr [rbx+0x10] ; gcrRegs +[rdi] test rdi, rdi
- je SHORT G_M1296_IG06
+ je SHORT G_M1296_IG08
cmp gword ptr [rdi+0x08], rsi jne SHORT G_M1296_IG07 ;; size=15 bbWeight=4 PerfScore 29.00 G_M1296_IG06: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rsi]
- test rdi, rdi - jne SHORT G_M1296_IG08 - lea rdi, gword ptr [(reloc)] - lea rsi, gword ptr [(reloc)] - ; gcrRegs +[rsi] - call <unknown method> - ; gcrRegs -[rbx rsi rdi] - ; gcr arg pop 0
+ mov rax, rbx + ; gcrRegs +[rax] + mov rbx, rdi + mov rdi, rax
jmp SHORT G_M1296_IG09
- ;; size=26 bbWeight=0.50 PerfScore 2.62
+ ;; size=11 bbWeight=0.50 PerfScore 1.38
G_M1296_IG07: ; bbWeight=2, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rsi rdi]
+ ; gcrRegs -[rax rbx] +[rsi]
mov rbx, rdi ; gcrRegs +[rbx] jmp SHORT G_M1296_IG05 ;; size=5 bbWeight=2 PerfScore 4.50
-G_M1296_IG08: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref - ; gcrRegs -[rsi] - mov rsi, gword ptr [rdi+0x10]
+G_M1296_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rbx rsi rdi] + lea rdi, gword ptr [(reloc)] + ; gcrRegs +[rdi] + lea rsi, gword ptr [(reloc)]
; gcrRegs +[rsi]
- lea rdi, bword ptr [rbx+0x10]
+ call <unknown method> + ; gcrRegs -[rsi rdi] + ; gcr arg pop 0 + jmp SHORT G_M1296_IG10 + ;; size=21 bbWeight=0.50 PerfScore 2.00 +G_M1296_IG09: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref + ; gcrRegs +[rbx rdi] + mov rsi, gword ptr [rbx+0x10] + ; gcrRegs +[rsi] + lea rdi, bword ptr [rdi+0x10]
; gcrRegs -[rdi] ; byrRegs +[rdi] call CORINFO_HELP_ASSIGN_REF ; gcrRegs -[rbx rsi] ; byrRegs -[rdi] ;; size=13 bbWeight=0.50 PerfScore 1.75
-G_M1296_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M1296_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop ;; size=1 bbWeight=0.50 PerfScore 0.12
-G_M1296_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M1296_IG11: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 8 pop rbx pop rbp ret ;; size=7 bbWeight=0.50 PerfScore 1.12
-; Total bytes of code 106, prolog size 8, PerfScore 51.62, instruction count 36, allocated bytes for code 106 (MethodHash=2a35faef) for method System.Threading.PortableThreadPool:RemoveWaitThread(System.Threading.PortableThreadPool+WaitThread):this (FullOpts)
+; Total bytes of code 112, prolog size 8, PerfScore 52.38, instruction count 38, allocated bytes for code 112 (MethodHash=2a35faef) for method System.Threading.PortableThreadPool:RemoveWaitThread(System.Threading.PortableThreadPool+WaitThread):this (FullOpts)
; ============================================================ Cfi Info:

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.linux.x64.checked.mch 107 62 31 14 -684 +226
benchmarks.run_pgo.linux.x64.checked.mch 1,327 461 749 117 -5,341 +5,103
benchmarks.run_tiered.linux.x64.checked.mch 40 24 10 6 -277 +139
coreclr_tests.run.linux.x64.checked.mch 1,176 560 350 266 -8,997 +2,768
libraries.crossgen2.linux.x64.checked.mch 365 166 127 72 -1,700 +599
libraries.pmi.linux.x64.checked.mch 656 279 230 147 -3,138 +1,447
libraries_tests.run.linux.x64.Release.mch 6,873 3,373 2,214 1,286 -55,025 +34,298
librariestestsnotieredcompilation.run.linux.x64.Release.mch 1,381 660 477 244 -6,332 +4,575
realworld.run.linux.x64.checked.mch 120 44 54 22 -524 +580
smoke_tests.nativeaot.linux.x64.checked.mch 163 107 40 16 -3,361 +271
12,208 5,736 4,282 2,190 -85,379 +50,006

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.linux.x64.checked.mch 36,216 3,549 32,667 0 (0.00%) 1 (0.00%)
benchmarks.run_pgo.linux.x64.checked.mch 160,125 63,207 96,918 4 (0.00%) 202 (0.13%)
benchmarks.run_tiered.linux.x64.checked.mch 65,385 50,236 15,149 1 (0.00%) 1 (0.00%)
coreclr_tests.run.linux.x64.checked.mch 598,908 355,942 242,966 3 (0.00%) 105 (0.02%)
libraries.crossgen2.linux.x64.checked.mch 234,329 15 234,314 0 (0.00%) 0 (0.00%)
libraries.pmi.linux.x64.checked.mch 296,928 6 296,922 0 (0.00%) 3 (0.00%)
libraries_tests.run.linux.x64.Release.mch 758,865 496,184 262,681 0 (0.00%) 901 (0.12%)
librariestestsnotieredcompilation.run.linux.x64.Release.mch 305,440 21,912 283,528 0 (0.00%) 3 (0.00%)
realworld.run.linux.x64.checked.mch 33,082 9 33,073 0 (0.00%) 1 (0.00%)
smoke_tests.nativeaot.linux.x64.checked.mch 27,414 10 27,404 0 (0.00%) 0 (0.00%)
2,516,692 991,070 1,525,622 8 (0.00%) 1,217 (0.05%)

jit-analyze output

benchmarks.run.linux.x64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 14336549 (overridden on cmd)
Total bytes of diff: 14336091 (overridden on cmd)
Total bytes of delta: -458 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          34 : 20556.dasm (1.20 % of base)
          27 : 10556.dasm (0.71 % of base)
          27 : 3132.dasm (2.32 % of base)
          27 : 3851.dasm (3.00 % of base)
          14 : 21808.dasm (0.24 % of base)
          12 : 21485.dasm (0.21 % of base)
          12 : 19659.dasm (0.73 % of base)
          10 : 21799.dasm (0.85 % of base)
           8 : 6007.dasm (2.86 % of base)
           5 : 14023.dasm (1.64 % of base)
           5 : 16897.dasm (0.05 % of base)
           3 : 6041.dasm (2.86 % of base)
           3 : 13784.dasm (1.07 % of base)
           3 : 17654.dasm (0.84 % of base)
           3 : 14966.dasm (0.86 % of base)
           3 : 16650.dasm (2.70 % of base)
           3 : 14964.dasm (1.47 % of base)
           3 : 1706.dasm (0.85 % of base)
           3 : 17653.dasm (1.42 % of base)
           3 : 1868.dasm (3.70 % of base)

Top file improvements (bytes):
         -45 : 969.dasm (-0.69 % of base)
         -44 : 9191.dasm (-0.40 % of base)
         -42 : 6915.dasm (-1.37 % of base)
         -40 : 4866.dasm (-0.97 % of base)
         -35 : 9883.dasm (-44.30 % of base)
         -32 : 6536.dasm (-30.48 % of base)
         -27 : 10179.dasm (-1.60 % of base)
         -26 : 8942.dasm (-4.61 % of base)
         -20 : 20098.dasm (-0.47 % of base)
         -19 : 10196.dasm (-0.14 % of base)
         -19 : 11777.dasm (-6.40 % of base)
         -17 : 14177.dasm (-0.14 % of base)
         -17 : 14553.dasm (-7.14 % of base)
         -17 : 21205.dasm (-0.79 % of base)
         -16 : 813.dasm (-7.17 % of base)
         -15 : 21183.dasm (-0.54 % of base)
         -14 : 5404.dasm (-2.25 % of base)
         -13 : 11600.dasm (-0.51 % of base)
         -13 : 26244.dasm (-5.94 % of base)
         -12 : 17623.dasm (-4.80 % of base)

54 total files with Code Size differences (31 improved, 23 regressed), 14 unchanged.

Top method regressions (bytes):
          34 (1.20 % of base) : 20556.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (FullOpts)
          27 (3.00 % of base) : 3851.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
          27 (2.32 % of base) : 3132.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (FullOpts)
          27 (0.71 % of base) : 10556.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:ImportDataMembers():this (FullOpts)
          14 (0.24 % of base) : 21808.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (FullOpts)
          12 (0.21 % of base) : 21485.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodSymbol:CheckModifiers(ubyte,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
          12 (0.73 % of base) : 19659.dasm - V8.Crypto.BigInteger:modPow(V8.Crypto.BigInteger,V8.Crypto.BigInteger):V8.Crypto.BigInteger:this (FullOpts)
          10 (0.85 % of base) : 21799.dasm - Microsoft.CodeAnalysis.ConstantValue:Create(System.Object,ubyte):Microsoft.CodeAnalysis.ConstantValue (FullOpts)
           8 (2.86 % of base) : 6007.dasm - System.Net.Http.Headers.BaseHeaderParser:TryParseValue(System.String,System.Object,byref,byref):ubyte:this (FullOpts)
           5 (1.64 % of base) : 14023.dasm - System.Enum+<>c__63`1[uint]:<FormatNumberAsHex>b__63_0(System.Span`1[ushort],long):this (FullOpts)
           5 (0.05 % of base) : 16897.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.Net.WebSockets.ValueWebSocketReceiveResult]:MoveNext():this (FullOpts)
           3 (1.07 % of base) : 13784.dasm - ProtoBuf.Internal.Serializers.SurrogateSerializer`1[System.DateTimeOffset]:GetConversion(ubyte):System.Reflection.MethodInfo:this (FullOpts)
           3 (1.42 % of base) : 17653.dasm - System.Collections.Generic.SortedSet`1+Enumerator[int]:Initialize():this (FullOpts)
           3 (0.84 % of base) : 17654.dasm - System.Collections.Generic.SortedSet`1+Enumerator[int]:MoveNext():ubyte:this (FullOpts)
           3 (1.47 % of base) : 14964.dasm - System.Collections.Generic.SortedSet`1+Enumerator[System.__Canon]:Initialize():this (FullOpts)
           3 (0.86 % of base) : 14966.dasm - System.Collections.Generic.SortedSet`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (FullOpts)
           3 (0.85 % of base) : 1706.dasm - System.Formats.Asn1.AsnDecoder:DecodeLength(System.ReadOnlySpan`1[ubyte],int,byref,byref):int (FullOpts)
           3 (2.86 % of base) : 6041.dasm - System.Net.Http.HttpConnection+HttpContentReadStream:Dispose(ubyte):this (FullOpts)
           3 (2.70 % of base) : 16650.dasm - System.Runtime.Serialization.Json.JsonEncodingStreamWrapper:ReadEncoding(ubyte,ubyte):int (FullOpts)
           3 (3.70 % of base) : 1868.dasm - System.Security.Cryptography.UniversalCryptoDecryptor:Dispose(ubyte):this (FullOpts)

Top method improvements (bytes):
         -45 (-0.69 % of base) : 969.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
         -44 (-0.40 % of base) : 9191.dasm - MessagePack.Internal.ObjectSerializationInfo:CreateOrNull(System.Type,ubyte,ubyte,ubyte):MessagePack.Internal.ObjectSerializationInfo (FullOpts)
         -42 (-1.37 % of base) : 6915.dasm - Sigil.Impl.VerifiableTracker:CollapseAndVerify():Sigil.Impl.VerificationResult:this (FullOpts)
         -40 (-0.97 % of base) : 4866.dasm - Utf8Json.Internal.Emit.MetaType:.ctor(System.Type,System.Func`2[System.String,System.String],ubyte):this (FullOpts)
         -35 (-44.30 % of base) : 9883.dasm - System.Int32:Equals(System.Object):ubyte:this (FullOpts)
         -32 (-30.48 % of base) : 6536.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
         -27 (-1.60 % of base) : 10179.dasm - System.Xml.XmlConvert:EncodeName(System.String,ubyte,ubyte):System.String (FullOpts)
         -26 (-4.61 % of base) : 8942.dasm - System.Diagnostics.Tracing.EventSource:LogEventArgsMismatches(int,System.Object[]):this (FullOpts)
         -20 (-0.47 % of base) : 20098.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseMemberDeclarationOrStatementCore(ushort):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.MemberDeclarationSyntax:this (FullOpts)
         -19 (-6.40 % of base) : 11777.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (FullOpts)
         -19 (-0.14 % of base) : 10196.dasm - System.Xml.Serialization.XmlReflectionImporter:ImportAccessorMapping(System.Xml.Serialization.MemberMapping,System.Xml.Serialization.FieldModel,System.Xml.Serialization.XmlAttributes,System.String,System.Type,ubyte,ubyte,System.Xml.Serialization.RecursionLimiter):this (FullOpts)
         -17 (-0.14 % of base) : 14177.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.CollectionsOfPrimitives,int) (FullOpts)
         -17 (-0.79 % of base) : 21205.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetSpecialType(byte):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (FullOpts)
         -17 (-7.14 % of base) : 14553.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (FullOpts)
         -16 (-7.17 % of base) : 813.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
         -15 (-0.54 % of base) : 21183.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
         -14 (-2.25 % of base) : 5404.dasm - System.Text.Json.Reflection.ReflectionExtensions:TryGetDeserializationConstructor(System.Type,ubyte,byref):ubyte (FullOpts)
         -13 (-5.94 % of base) : 26244.dasm - Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (FullOpts)
         -13 (-0.51 % of base) : 11600.dasm - System.Runtime.Serialization.Json.JsonFormatWriterGenerator+CriticalHelper:WriteMembers(System.Runtime.Serialization.DataContracts.ClassDataContract,System.Reflection.Emit.LocalBuilder,System.Runtime.Serialization.DataContracts.ClassDataContract):int:this (FullOpts)
         -12 (-4.80 % of base) : 17623.dasm - System.Xml.XmlElement:WriteElementTo(System.Xml.XmlWriter,System.Xml.XmlElement) (FullOpts)

Top method regressions (percentages):
           3 (3.70 % of base) : 1868.dasm - System.Security.Cryptography.UniversalCryptoDecryptor:Dispose(ubyte):this (FullOpts)
           2 (3.23 % of base) : 5919.dasm - System.Net.Http.HttpConnectionPool:GetSslOptionsForRequest(System.Net.Http.HttpRequestMessage):System.Net.Security.SslClientAuthenticationOptions:this (FullOpts)
          27 (3.00 % of base) : 3851.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
           8 (2.86 % of base) : 6007.dasm - System.Net.Http.Headers.BaseHeaderParser:TryParseValue(System.String,System.Object,byref,byref):ubyte:this (FullOpts)
           3 (2.86 % of base) : 6041.dasm - System.Net.Http.HttpConnection+HttpContentReadStream:Dispose(ubyte):this (FullOpts)
           3 (2.70 % of base) : 16650.dasm - System.Runtime.Serialization.Json.JsonEncodingStreamWrapper:ReadEncoding(ubyte,ubyte):int (FullOpts)
          27 (2.32 % of base) : 3132.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (FullOpts)
           5 (1.64 % of base) : 14023.dasm - System.Enum+<>c__63`1[uint]:<FormatNumberAsHex>b__63_0(System.Span`1[ushort],long):this (FullOpts)
           3 (1.47 % of base) : 14964.dasm - System.Collections.Generic.SortedSet`1+Enumerator[System.__Canon]:Initialize():this (FullOpts)
           3 (1.42 % of base) : 17653.dasm - System.Collections.Generic.SortedSet`1+Enumerator[int]:Initialize():this (FullOpts)
          34 (1.20 % of base) : 20556.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (FullOpts)
           3 (1.07 % of base) : 13784.dasm - ProtoBuf.Internal.Serializers.SurrogateSerializer`1[System.DateTimeOffset]:GetConversion(ubyte):System.Reflection.MethodInfo:this (FullOpts)
           3 (0.86 % of base) : 14966.dasm - System.Collections.Generic.SortedSet`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (FullOpts)
           3 (0.85 % of base) : 1706.dasm - System.Formats.Asn1.AsnDecoder:DecodeLength(System.ReadOnlySpan`1[ubyte],int,byref,byref):int (FullOpts)
          10 (0.85 % of base) : 21799.dasm - Microsoft.CodeAnalysis.ConstantValue:Create(System.Object,ubyte):Microsoft.CodeAnalysis.ConstantValue (FullOpts)
           3 (0.84 % of base) : 17654.dasm - System.Collections.Generic.SortedSet`1+Enumerator[int]:MoveNext():ubyte:this (FullOpts)
          12 (0.73 % of base) : 19659.dasm - V8.Crypto.BigInteger:modPow(V8.Crypto.BigInteger,V8.Crypto.BigInteger):V8.Crypto.BigInteger:this (FullOpts)
          27 (0.71 % of base) : 10556.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:ImportDataMembers():this (FullOpts)
           2 (0.66 % of base) : 26921.dasm - MS.Internal.Xml.XPath.XPathParser:ParseMultiplicativeExpr(MS.Internal.Xml.XPath.AstNode):MS.Internal.Xml.XPath.AstNode:this (FullOpts)
           1 (0.38 % of base) : 6261.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)

Top method improvements (percentages):
         -35 (-44.30 % of base) : 9883.dasm - System.Int32:Equals(System.Object):ubyte:this (FullOpts)
         -32 (-30.48 % of base) : 6536.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
          -5 (-7.94 % of base) : 4086.dasm - System.Buffers.ReadOnlySequence`1[ubyte]:SeekMultiSegment(System.Buffers.ReadOnlySequenceSegment`1[ubyte],System.Object,int,long,int):System.SequencePosition (FullOpts)
         -16 (-7.17 % of base) : 813.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
         -17 (-7.14 % of base) : 14553.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (FullOpts)
         -19 (-6.40 % of base) : 11777.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (FullOpts)
          -6 (-6.25 % of base) : 2382.dasm - System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor+ErrorCollection+Enumerator:MoveNext():ubyte:this (FullOpts)
         -13 (-5.94 % of base) : 26244.dasm - Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (FullOpts)
         -11 (-5.02 % of base) : 3477.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
         -12 (-4.80 % of base) : 17623.dasm - System.Xml.XmlElement:WriteElementTo(System.Xml.XmlWriter,System.Xml.XmlElement) (FullOpts)
         -26 (-4.61 % of base) : 8942.dasm - System.Diagnostics.Tracing.EventSource:LogEventArgsMismatches(int,System.Object[]):this (FullOpts)
          -5 (-3.12 % of base) : 3836.dasm - System.Globalization.CultureData:GetSeparator(System.String,System.String):System.String (FullOpts)
         -14 (-2.25 % of base) : 5404.dasm - System.Text.Json.Reflection.ReflectionExtensions:TryGetDeserializationConstructor(System.Type,ubyte,byref):ubyte (FullOpts)
          -4 (-1.96 % of base) : 825.dasm - System.Number:RoundNumber(byref,int,ubyte) (FullOpts)
         -27 (-1.60 % of base) : 10179.dasm - System.Xml.XmlConvert:EncodeName(System.String,ubyte,ubyte):System.String (FullOpts)
          -5 (-1.40 % of base) : 6941.dasm - Sigil.Impl.LinqStack`1[System.__Canon]:Peek(ubyte,int):Sigil.Impl.LinqList`1[Sigil.Impl.TypeOnStack][]:this (FullOpts)
         -42 (-1.37 % of base) : 6915.dasm - Sigil.Impl.VerifiableTracker:CollapseAndVerify():Sigil.Impl.VerificationResult:this (FullOpts)
          -4 (-1.37 % of base) : 1307.dasm - System.Text.Json.Tests.Perf_Reader:ReadSpanEmptyLoop():this (FullOpts)
          -4 (-1.35 % of base) : 7919.dasm - System.Text.Json.Tests.Perf_Reader:ReadMultiSpanSequenceEmptyLoop():this (FullOpts)
          -4 (-1.35 % of base) : 6705.dasm - System.Text.Json.Tests.Perf_Segment:ReadSingleSegmentSequence():this (FullOpts)


benchmarks.run_pgo.linux.x64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 71273045 (overridden on cmd)
Total bytes of diff: 71272807 (overridden on cmd)
Total bytes of delta: -238 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         115 : 59247.dasm (2.78 % of base)
         115 : 157814.dasm (2.78 % of base)
          90 : 50905.dasm (2.21 % of base)
          67 : 96941.dasm (3.54 % of base)
          63 : 103889.dasm (1.30 % of base)
          59 : 140742.dasm (3.22 % of base)
          59 : 145145.dasm (3.23 % of base)
          59 : 144220.dasm (3.22 % of base)
          59 : 145181.dasm (3.23 % of base)
          55 : 137461.dasm (3.41 % of base)
          54 : 61183.dasm (15.65 % of base)
          53 : 137433.dasm (3.30 % of base)
          48 : 97423.dasm (0.50 % of base)
          47 : 145196.dasm (13.17 % of base)
          46 : 103364.dasm (0.85 % of base)
          34 : 98211.dasm (5.99 % of base)
          31 : 139184.dasm (4.41 % of base)
          31 : 96806.dasm (9.84 % of base)
          30 : 97469.dasm (0.71 % of base)
          29 : 61393.dasm (2.54 % of base)

Top file improvements (bytes):
        -168 : 98206.dasm (-6.92 % of base)
        -159 : 70726.dasm (-3.68 % of base)
        -116 : 72355.dasm (-2.92 % of base)
        -107 : 76188.dasm (-4.19 % of base)
         -93 : 7918.dasm (-3.79 % of base)
         -88 : 97930.dasm (-1.12 % of base)
         -66 : 42526.dasm (-1.59 % of base)
         -49 : 137447.dasm (-2.33 % of base)
         -46 : 102873.dasm (-5.46 % of base)
         -45 : 3800.dasm (-0.68 % of base)
         -36 : 96352.dasm (-3.42 % of base)
         -35 : 147653.dasm (-42.68 % of base)
         -35 : 45195.dasm (-42.68 % of base)
         -34 : 79238.dasm (-2.03 % of base)
         -33 : 153810.dasm (-3.15 % of base)
         -32 : 95874.dasm (-3.64 % of base)
         -30 : 137453.dasm (-0.92 % of base)
         -29 : 137448.dasm (-29.00 % of base)
         -29 : 79205.dasm (-3.93 % of base)
         -27 : 69715.dasm (-1.62 % of base)

69 total files with Code Size differences (40 improved, 29 regressed), 20 unchanged.

Top method regressions (bytes):
         115 (2.78 % of base) : 59247.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
         115 (2.78 % of base) : 157814.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
          90 (2.21 % of base) : 50905.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
          67 (3.54 % of base) : 96941.dasm - Microsoft.Cci.MetadataWriter:GetMethodSignatureHandleAndBlob(Microsoft.Cci.IMethodReference,byref):System.Reflection.Metadata.BlobHandle:this (Tier1)
          63 (1.30 % of base) : 103889.dasm - Microsoft.CodeAnalysis.MetadataHelpers:GetInfoForImmediateNamespaceMembers(ubyte,int,System.Collections.Generic.IEnumerable`1[System.Linq.IGrouping`2[System.String,System.Reflection.Metadata.TypeDefinitionHandle]],System.StringComparer,byref,byref) (Tier1)
          59 (3.22 % of base) : 140742.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:IndexOf(byref,int):int:this (Tier1-OSR)
          59 (3.23 % of base) : 145145.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:IndexOf(byref,int):int:this (Tier1-OSR)
          59 (3.22 % of base) : 144220.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:IndexOf(byref,int):int:this (Tier1-OSR)
          59 (3.23 % of base) : 145181.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:IndexOf(byref,int):int:this (Tier1-OSR)
          55 (3.41 % of base) : 137461.dasm - BenchmarksGame.pidigits:compose_r(int,int,int,int):this (Tier1)
          54 (15.65 % of base) : 61183.dasm - System.Text.Ascii:ChangeCase[ushort,ushort,System.Text.Ascii+ToUpperConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):int (Tier1)
          53 (3.30 % of base) : 137433.dasm - BenchmarksGame.pidigits:compose_l(int,int,int,int):this (Tier1)
          48 (0.50 % of base) : 97423.dasm - Microsoft.CodeAnalysis.CSharp.MethodCompiler:CompileMethod(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,int,byref,Microsoft.CodeAnalysis.CSharp.SynthesizedSubmissionFields,Microsoft.CodeAnalysis.CSharp.TypeCompilationState):this (Tier1)
          47 (13.17 % of base) : 145196.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:TryMatch(byref,int,byref,uint,byref):ubyte:this (Tier1)
          46 (0.85 % of base) : 103364.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseLocalDeclarationStatement(Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AttributeListSyntax]):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.StatementSyntax:this (Tier1)
          34 (5.99 % of base) : 98211.dasm - Microsoft.CodeAnalysis.Compilation:get_HasStrongName():ubyte:this (Tier1)
          31 (9.84 % of base) : 96806.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_IsDelaySigned():ubyte:this (Tier1)
          31 (4.41 % of base) : 139184.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          30 (0.71 % of base) : 97469.dasm - Microsoft.CodeAnalysis.CSharp.BinderFactory+BinderFactoryVisitor:VisitTypeDeclarationCore(Microsoft.CodeAnalysis.CSharp.Syntax.TypeDeclarationSyntax,ubyte):Microsoft.CodeAnalysis.CSharp.Binder:this (Tier1)
          29 (2.54 % of base) : 61393.dasm - System.Net.Sockets.SocketAsyncContext:SendToAsync(System.Memory`1[ubyte],int,int,int,System.Memory`1[ubyte],byref,System.Action`4[int,System.Memory`1[ubyte],int,int],System.Threading.CancellationToken):int:this (Tier1)

Top method improvements (bytes):
        -168 (-6.92 % of base) : 98206.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this (Tier1)
        -159 (-3.68 % of base) : 70726.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
        -116 (-2.92 % of base) : 72355.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
        -107 (-4.19 % of base) : 76188.dasm - System.Text.Json.Tests.Perf_Segment:ReadMultiSegmentSequenceUsingSpan(int):this (Tier1-OSR)
         -93 (-3.79 % of base) : 7918.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:Init(System.String,int,int,int,int,long,byref,byref):ubyte:this (Tier1)
         -88 (-1.12 % of base) : 97930.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:SynthesizeDebuggableAttribute():Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedAttributeData:this (Tier1)
         -66 (-1.59 % of base) : 42526.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
         -49 (-2.33 % of base) : 137447.dasm - System.Numerics.BigInteger:Subtract(System.ReadOnlySpan`1[uint],int,System.ReadOnlySpan`1[uint],int):System.Numerics.BigInteger (Tier1)
         -46 (-5.46 % of base) : 102873.dasm - Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass:WriteConsideredUse(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte (Tier1)
         -45 (-0.68 % of base) : 3800.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier0-FullOpts)
         -36 (-3.42 % of base) : 96352.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetSpecialType(byte):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (Tier1)
         -35 (-42.68 % of base) : 147653.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -35 (-42.68 % of base) : 45195.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -34 (-2.03 % of base) : 79238.dasm - System.Net.Sockets.SocketAsyncEventArgs:DoOperationReceive(System.Net.Sockets.SafeSocketHandle,System.Threading.CancellationToken):int:this (Tier1)
         -33 (-3.15 % of base) : 153810.dasm - System.Collections.Generic.Dictionary`2[System.ValueTuple`3[System.__Canon,ulong,uint],System.__Canon]:TryGetValue(System.ValueTuple`3[System.__Canon,ulong,uint],byref):ubyte:this (Tier1)
         -32 (-3.64 % of base) : 95874.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:IsTupleTypeOfCardinality(byref):ubyte:this (Tier1)
         -30 (-0.92 % of base) : 137453.dasm - System.Numerics.BigIntegerCalculator:Divide(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint],System.Span`1[uint]) (Tier1)
         -29 (-29.00 % of base) : 137448.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
         -29 (-3.93 % of base) : 79205.dasm - System.Reflection.Emit.DynamicResolver:ResolveToken(int,byref,byref,byref):this (Tier1)
         -27 (-1.62 % of base) : 69715.dasm - System.Net.Sockets.SocketAsyncEventArgs:DoOperationReceive(System.Net.Sockets.SafeSocketHandle,System.Threading.CancellationToken):int:this (Tier1)

Top method regressions (percentages):
          54 (15.65 % of base) : 61183.dasm - System.Text.Ascii:ChangeCase[ushort,ushort,System.Text.Ascii+ToUpperConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):int (Tier1)
          47 (13.17 % of base) : 145196.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:TryMatch(byref,int,byref,uint,byref):ubyte:this (Tier1)
          19 (10.44 % of base) : 98035.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)
          31 (9.84 % of base) : 96806.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_IsDelaySigned():ubyte:this (Tier1)
          34 (5.99 % of base) : 98211.dasm - Microsoft.CodeAnalysis.Compilation:get_HasStrongName():ubyte:this (Tier1)
          15 (5.32 % of base) : 50179.dasm - System.Number:FormatDouble(double,System.String,System.Globalization.NumberFormatInfo):System.String (Tier1)
          15 (5.32 % of base) : 35209.dasm - System.Number:FormatDouble(double,System.String,System.Globalization.NumberFormatInfo):System.String (Tier1)
          31 (4.41 % of base) : 139184.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
           8 (4.17 % of base) : 94052.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyDelaySignAttributeSetting():ubyte:this (Tier1)
          21 (3.87 % of base) : 74329.dasm - System.RuntimeType:CreateInstanceOfT():System.Object:this (Tier1)
          67 (3.54 % of base) : 96941.dasm - Microsoft.Cci.MetadataWriter:GetMethodSignatureHandleAndBlob(Microsoft.Cci.IMethodReference,byref):System.Reflection.Metadata.BlobHandle:this (Tier1)
          22 (3.46 % of base) : 80074.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex6_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          55 (3.41 % of base) : 137461.dasm - BenchmarksGame.pidigits:compose_r(int,int,int,int):this (Tier1)
          16 (3.41 % of base) : 155076.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          23 (3.38 % of base) : 140745.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex12_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          53 (3.30 % of base) : 137433.dasm - BenchmarksGame.pidigits:compose_l(int,int,int,int):this (Tier1)
          15 (3.24 % of base) : 140157.dasm - System.Text.RegularExpressions.RegexNode:ReduceConcatenation():System.Text.RegularExpressions.RegexNode:this (Tier1)
          59 (3.23 % of base) : 145145.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:IndexOf(byref,int):int:this (Tier1-OSR)
          59 (3.23 % of base) : 145181.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:IndexOf(byref,int):int:this (Tier1-OSR)
          59 (3.22 % of base) : 140742.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:IndexOf(byref,int):int:this (Tier1-OSR)

Top method improvements (percentages):
         -35 (-42.68 % of base) : 147653.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -35 (-42.68 % of base) : 45195.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -29 (-29.00 % of base) : 137448.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
         -23 (-10.60 % of base) : 108890.dasm - System.Threading.PortableThreadPool:NotifyWorkItemProgress(System.Object,int):this (Tier1)
         -23 (-10.60 % of base) : 135021.dasm - System.Threading.PortableThreadPool:NotifyWorkItemProgress(System.Object,int):this (Tier1)
         -23 (-10.60 % of base) : 46437.dasm - System.Threading.PortableThreadPool:NotifyWorkItemProgress(System.Object,int):this (Tier1)
         -23 (-10.60 % of base) : 48382.dasm - System.Threading.PortableThreadPool:NotifyWorkItemProgress(System.Object,int):this (Tier1)
         -23 (-10.60 % of base) : 57505.dasm - System.Threading.PortableThreadPool:NotifyWorkItemProgress(System.Object,int):this (Tier1)
         -23 (-10.60 % of base) : 58302.dasm - System.Threading.PortableThreadPool:NotifyWorkItemProgress(System.Object,int):this (Tier1)
         -23 (-10.60 % of base) : 70273.dasm - System.Threading.PortableThreadPool:NotifyWorkItemProgress(System.Object,int):this (Tier1)
         -23 (-10.60 % of base) : 83113.dasm - System.Threading.PortableThreadPool:NotifyWorkItemProgress(System.Object,int):this (Tier1)
         -23 (-10.60 % of base) : 105089.dasm - System.Threading.PortableThreadPool:NotifyWorkItemProgress(System.Object,int):this (Tier1)
         -23 (-10.60 % of base) : 68090.dasm - System.Threading.PortableThreadPool:NotifyWorkItemProgress(System.Object,int):this (Tier1)
         -23 (-10.60 % of base) : 77385.dasm - System.Threading.PortableThreadPool:NotifyWorkItemProgress(System.Object,int):this (Tier1)
         -23 (-10.60 % of base) : 96057.dasm - System.Threading.PortableThreadPool:NotifyWorkItemProgress(System.Object,int):this (Tier1)
         -23 (-10.60 % of base) : 98877.dasm - System.Threading.PortableThreadPool:NotifyWorkItemProgress(System.Object,int):this (Tier1)
         -23 (-10.60 % of base) : 110114.dasm - System.Threading.PortableThreadPool:NotifyWorkItemProgress(System.Object,int):this (Tier1)
         -23 (-10.60 % of base) : 43489.dasm - System.Threading.PortableThreadPool:NotifyWorkItemProgress(System.Object,int):this (Tier1)
         -23 (-10.60 % of base) : 63497.dasm - System.Threading.PortableThreadPool:NotifyWorkItemProgress(System.Object,int):this (Tier1)
         -23 (-10.60 % of base) : 65182.dasm - System.Threading.PortableThreadPool:NotifyWorkItemProgress(System.Object,int):this (Tier1)


benchmarks.run_tiered.linux.x64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 21435743 (overridden on cmd)
Total bytes of diff: 21435605 (overridden on cmd)
Total bytes of delta: -138 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          49 : 38361.dasm (1.98 % of base)
          27 : 5290.dasm (2.32 % of base)
          27 : 7330.dasm (3.00 % of base)
          14 : 52167.dasm (0.24 % of base)
          10 : 47901.dasm (0.89 % of base)
           3 : 14597.dasm (3.70 % of base)
           3 : 13644.dasm (0.85 % of base)
           2 : 33532.dasm (0.34 % of base)
           2 : 3840.dasm (1.33 % of base)
           2 : 22170.dasm (0.35 % of base)

Top file improvements (bytes):
         -45 : 4787.dasm (-0.69 % of base)
         -33 : 9995.dasm (-41.25 % of base)
         -32 : 60259.dasm (-30.48 % of base)
         -18 : 29685.dasm (-5.90 % of base)
         -17 : 31264.dasm (-7.14 % of base)
         -17 : 30969.dasm (-0.14 % of base)
         -17 : 47871.dasm (-0.79 % of base)
         -16 : 10084.dasm (-7.17 % of base)
         -11 : 38535.dasm (-5.02 % of base)
          -9 : 34615.dasm (-0.67 % of base)
          -7 : 3015.dasm (-1.00 % of base)
          -6 : 33272.dasm (-6.25 % of base)
          -5 : 32919.dasm (-0.06 % of base)
          -5 : 15565.dasm (-3.12 % of base)
          -5 : 47471.dasm (-0.12 % of base)
          -5 : 51600.dasm (-0.79 % of base)
          -4 : 31308.dasm (-4.26 % of base)
          -4 : 39704.dasm (-4.55 % of base)
          -4 : 58518.dasm (-0.14 % of base)
          -4 : 10103.dasm (-1.96 % of base)

34 total files with Code Size differences (24 improved, 10 regressed), 6 unchanged.

Top method regressions (bytes):
          49 (1.98 % of base) : 38361.dasm - System.Text.Json.Tests.Perf_Segment:ReadMultiSegmentSequenceUsingSpan(int):this (Tier1-OSR)
          27 (3.00 % of base) : 7330.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (Tier0-FullOpts)
          27 (2.32 % of base) : 5290.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (Tier0-FullOpts)
          14 (0.24 % of base) : 52167.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Tier1)
          10 (0.89 % of base) : 47901.dasm - Microsoft.CodeAnalysis.ConstantValue:Create(System.Object,ubyte):Microsoft.CodeAnalysis.ConstantValue (Tier1)
           3 (0.85 % of base) : 13644.dasm - System.Formats.Asn1.AsnDecoder:DecodeLength(System.ReadOnlySpan`1[ubyte],int,byref,byref):int (Tier1)
           3 (3.70 % of base) : 14597.dasm - System.Security.Cryptography.UniversalCryptoDecryptor:Dispose(ubyte):this (Tier1)
           2 (1.33 % of base) : 3840.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:CanLockTheFile(int,int):ubyte:this (Tier1)
           2 (0.35 % of base) : 22170.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
           2 (0.34 % of base) : 33532.dasm - System.Net.SocketAddress:.ctor(System.Net.IPAddress):this (Tier1)

Top method improvements (bytes):
         -45 (-0.69 % of base) : 4787.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier0-FullOpts)
         -33 (-41.25 % of base) : 9995.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -32 (-30.48 % of base) : 60259.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
         -18 (-5.90 % of base) : 29685.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (Tier1-OSR)
         -17 (-0.14 % of base) : 30969.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.CollectionsOfPrimitives,int) (FullOpts)
         -17 (-0.79 % of base) : 47871.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetSpecialType(byte):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (Tier1)
         -17 (-7.14 % of base) : 31264.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)
         -16 (-7.17 % of base) : 10084.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (Tier1)
         -11 (-5.02 % of base) : 38535.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier1)
          -9 (-0.67 % of base) : 34615.dasm - System.UriHelper:UnescapeString(ulong,int,int,byref,ushort,ushort,ushort,int,System.UriParser,ubyte) (Tier1)
          -7 (-1.00 % of base) : 3015.dasm - System.Text.Ascii:GetIndexOfFirstNonAsciiByte_Vector(ulong,ulong):ulong (Tier1)
          -6 (-6.25 % of base) : 33272.dasm - System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor+ErrorCollection+Enumerator:MoveNext():ubyte:this (Tier1)
          -5 (-0.12 % of base) : 47471.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetWellKnownType(int):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (Tier1)
          -5 (-0.79 % of base) : 51600.dasm - Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass:LeaveParameter(Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.Location):this (Tier1)
          -5 (-0.06 % of base) : 32919.dasm - System.Formats.Asn1.WellKnownOids:GetContents(System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ubyte] (Tier1)
          -5 (-3.12 % of base) : 15565.dasm - System.Globalization.CultureData:GetSeparator(System.String,System.String):System.String (Tier1)
          -4 (-0.14 % of base) : 58518.dasm - System.IPv6AddressHelper:ParseCanonicalName(System.String,int,byref,byref):System.String (Tier0-FullOpts)
          -4 (-1.96 % of base) : 10103.dasm - System.Number:RoundNumber(byref,int,ubyte) (Tier1)
          -4 (-4.26 % of base) : 31308.dasm - System.Text.Json.Tests.Perf_Segment:ReadMultiSegmentSequence(int):this (Tier1-OSR)
          -4 (-4.55 % of base) : 39704.dasm - System.Text.Json.Tests.Perf_Segment:ReadSingleSegmentSequence():this (Tier1-OSR)

Top method regressions (percentages):
           3 (3.70 % of base) : 14597.dasm - System.Security.Cryptography.UniversalCryptoDecryptor:Dispose(ubyte):this (Tier1)
          27 (3.00 % of base) : 7330.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (Tier0-FullOpts)
          27 (2.32 % of base) : 5290.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (Tier0-FullOpts)
          49 (1.98 % of base) : 38361.dasm - System.Text.Json.Tests.Perf_Segment:ReadMultiSegmentSequenceUsingSpan(int):this (Tier1-OSR)
           2 (1.33 % of base) : 3840.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:CanLockTheFile(int,int):ubyte:this (Tier1)
          10 (0.89 % of base) : 47901.dasm - Microsoft.CodeAnalysis.ConstantValue:Create(System.Object,ubyte):Microsoft.CodeAnalysis.ConstantValue (Tier1)
           3 (0.85 % of base) : 13644.dasm - System.Formats.Asn1.AsnDecoder:DecodeLength(System.ReadOnlySpan`1[ubyte],int,byref,byref):int (Tier1)
           2 (0.35 % of base) : 22170.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
           2 (0.34 % of base) : 33532.dasm - System.Net.SocketAddress:.ctor(System.Net.IPAddress):this (Tier1)
          14 (0.24 % of base) : 52167.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Tier1)

Top method improvements (percentages):
         -33 (-41.25 % of base) : 9995.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -32 (-30.48 % of base) : 60259.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
         -16 (-7.17 % of base) : 10084.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (Tier1)
         -17 (-7.14 % of base) : 31264.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)
          -6 (-6.25 % of base) : 33272.dasm - System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor+ErrorCollection+Enumerator:MoveNext():ubyte:this (Tier1)
         -18 (-5.90 % of base) : 29685.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (Tier1-OSR)
         -11 (-5.02 % of base) : 38535.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier1)
          -4 (-4.55 % of base) : 39704.dasm - System.Text.Json.Tests.Perf_Segment:ReadSingleSegmentSequence():this (Tier1-OSR)
          -4 (-4.26 % of base) : 31308.dasm - System.Text.Json.Tests.Perf_Segment:ReadMultiSegmentSequence(int):this (Tier1-OSR)
          -5 (-3.12 % of base) : 15565.dasm - System.Globalization.CultureData:GetSeparator(System.String,System.String):System.String (Tier1)
          -4 (-1.96 % of base) : 10103.dasm - System.Number:RoundNumber(byref,int,ubyte) (Tier1)
          -7 (-1.00 % of base) : 3015.dasm - System.Text.Ascii:GetIndexOfFirstNonAsciiByte_Vector(ulong,ulong):ulong (Tier1)
         -17 (-0.79 % of base) : 47871.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetSpecialType(byte):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (Tier1)
          -5 (-0.79 % of base) : 51600.dasm - Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass:LeaveParameter(Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.Location):this (Tier1)
         -45 (-0.69 % of base) : 4787.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier0-FullOpts)
          -9 (-0.67 % of base) : 34615.dasm - System.UriHelper:UnescapeString(ulong,int,int,byref,ushort,ushort,ushort,int,System.UriParser,ubyte) (Tier1)
          -4 (-0.56 % of base) : 61586.dasm - System.Text.Json.Tests.Perf_Segment:ReadSingleSegmentSequenceByN(int):this (Tier1-OSR)
          -2 (-0.48 % of base) : 47287.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MetadataOrSourceAssemblySymbol:GetDeclaredSpecialTypeMember(int):Microsoft.CodeAnalysis.CSharp.Symbol:this (Tier1)
          -3 (-0.40 % of base) : 33441.dasm - System.Net.Sockets.SocketPal:TryCompleteSendTo(System.Net.Sockets.SafeSocketHandle,System.ReadOnlySpan`1[ubyte],System.Collections.Generic.IList`1[System.ArraySegment`1[ubyte]],byref,byref,byref,int,System.ReadOnlySpan`1[ubyte],byref,byref):ubyte (Tier1)
          -4 (-0.14 % of base) : 58518.dasm - System.IPv6AddressHelper:ParseCanonicalName(System.String,int,byref,byref):System.String (Tier0-FullOpts)

34 total methods with Code Size differences (24 improved, 10 regressed).


coreclr_tests.run.linux.x64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 403519732 (overridden on cmd)
Total bytes of diff: 403513503 (overridden on cmd)
Total bytes of delta: -6229 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         158 : 398518.dasm (1.54 % of base)
          95 : 246868.dasm (1.75 % of base)
          92 : 596371.dasm (1.87 % of base)
          50 : 389355.dasm (0.73 % of base)
          45 : 535788.dasm (1.00 % of base)
          40 : 217049.dasm (7.92 % of base)
          40 : 293839.dasm (4.02 % of base)
          39 : 398824.dasm (1.42 % of base)
          34 : 503562.dasm (1.20 % of base)
          31 : 29737.dasm (1.15 % of base)
          31 : 596384.dasm (1.05 % of base)
          30 : 520385.dasm (1.22 % of base)
          27 : 494110.dasm (4.36 % of base)
          27 : 500633.dasm (0.69 % of base)
          27 : 222294.dasm (4.36 % of base)
          25 : 597221.dasm (1.01 % of base)
          25 : 399913.dasm (1.36 % of base)
          24 : 391396.dasm (0.88 % of base)
          22 : 387709.dasm (0.71 % of base)
          20 : 217051.dasm (3.55 % of base)

Top file improvements (bytes):
        -173 : 421182.dasm (-19.61 % of base)
        -129 : 518933.dasm (-18.94 % of base)
         -82 : 389360.dasm (-0.82 % of base)
         -67 : 398030.dasm (-1.47 % of base)
         -67 : 421181.dasm (-20.43 % of base)
         -53 : 421180.dasm (-11.21 % of base)
         -50 : 143752.dasm (-6.93 % of base)
         -42 : 175674.dasm (-20.00 % of base)
         -42 : 199533.dasm (-20.00 % of base)
         -39 : 538319.dasm (-22.94 % of base)
         -39 : 207239.dasm (-33.62 % of base)
         -38 : 156565.dasm (-5.47 % of base)
         -38 : 287426.dasm (-2.33 % of base)
         -38 : 114802.dasm (-5.47 % of base)
         -37 : 200543.dasm (-43.53 % of base)
         -37 : 187897.dasm (-3.85 % of base)
         -37 : 207605.dasm (-3.82 % of base)
         -37 : 228749.dasm (-3.85 % of base)
         -37 : 23834.dasm (-45.68 % of base)
         -37 : 241373.dasm (-3.82 % of base)

75 total files with Code Size differences (40 improved, 35 regressed), 20 unchanged.

Top method regressions (bytes):
         158 (1.54 % of base) : 398518.dasm - Internal.TypeSystem.MetadataFieldLayoutAlgorithm:ComputeAutoFieldLayout(Internal.TypeSystem.MetadataType,int):Internal.TypeSystem.ComputedInstanceFieldLayout:this (Tier1)
          95 (1.75 % of base) : 246868.dasm - System.Diagnostics.Tracing.EventPipePayloadDecoder:DecodePayload(byref,System.ReadOnlySpan`1[ubyte]):System.Object[] (Tier1)
          92 (1.87 % of base) : 596371.dasm - Microsoft.Build.Evaluation.Evaluator`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon]:ReadNewTargetElement(Microsoft.Build.Construction.ProjectTargetElement,ubyte,Microsoft.Build.Evaluation.EvaluationProfiler):Microsoft.Build.Execution.ProjectTargetInstance (FullOpts)
          50 (0.73 % of base) : 389355.dasm - ILCompiler.ReadyToRunVisibilityRootProvider:RootMethods(Internal.TypeSystem.MetadataType,System.String,ILCompiler.IRootingServiceProvider,ubyte):this (Tier1)
          45 (1.00 % of base) : 535788.dasm - IlasmPortablePdbTests.IlasmPortablePdbTester:TestPortablePdbLocalScope(System.String):this (FullOpts)
          40 (7.92 % of base) : 217049.dasm - System.Reflection.RuntimeAssembly:GetType(System.String,ubyte,ubyte):System.Type:this (Instrumented Tier1)
          40 (4.02 % of base) : 293839.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateConstructors(System.RuntimeType+RuntimeTypeCache+Filter):System.Reflection.RuntimeConstructorInfo[]:this (Tier1-OSR)
          39 (1.42 % of base) : 398824.dasm - Internal.JitInterface.CorInfoImpl:getMethodAttribsInternal(Internal.TypeSystem.MethodDesc):uint:this (Tier1)
          34 (1.20 % of base) : 503562.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (FullOpts)
          31 (1.05 % of base) : 596384.dasm - Microsoft.Build.Evaluation.Evaluator`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon]:AddBeforeAndAfterTargetMappings(Microsoft.Build.Construction.ProjectTargetElement,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.LinkedListNode`1[Microsoft.Build.Construction.ProjectTargetElement]],System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[Microsoft.Build.BackEnd.TargetSpecification]],System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[Microsoft.Build.BackEnd.TargetSpecification]]):this (FullOpts)
          31 (1.15 % of base) : 29737.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateMethods(System.RuntimeType+RuntimeTypeCache+Filter):System.Reflection.RuntimeMethodInfo[]:this (Instrumented Tier1)
          30 (1.22 % of base) : 520385.dasm - Test_DictionaryExpansion:DoTest(int) (FullOpts)
          27 (0.69 % of base) : 500633.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:ImportDataMembers():this (FullOpts)
          27 (4.36 % of base) : 494110.dasm - X:F(System.Collections.IDictionary):int (Tier1)
          27 (4.36 % of base) : 222294.dasm - X:F(System.Collections.IDictionary):int (Tier1)
          25 (1.01 % of base) : 597221.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.AttributePresenceFilterNode:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (FullOpts)
          25 (1.36 % of base) : 399913.dasm - Program:CompareDLLs(System.String,System.String):int (Tier1-OSR)
          24 (0.88 % of base) : 391396.dasm - Internal.JitInterface.CorInfoImpl:getMethodAttribsInternal(Internal.TypeSystem.MethodDesc):uint:this (Tier1)
          22 (0.71 % of base) : 387709.dasm - Internal.TypeSystem.Ecma.EcmaType+<GetVirtualMethods>d__53:MoveNext():ubyte:this (Tier1-OSR)
          20 (3.18 % of base) : 23950.dasm - Program+<>c__DisplayClass7_0:<Main>g__Test|0[System.__Canon](System.Func`1[System.__Canon],System.__Canon,System.String):this (Tier1)

Top method improvements (bytes):
        -173 (-19.61 % of base) : 421182.dasm - Microsoft.FSharp.Core.PrintfImpl+GenericNumber:isPositive(System.Object):ubyte (FullOpts)
        -129 (-18.94 % of base) : 518933.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal:IsDefault(System.Object):ubyte (FullOpts)
         -82 (-0.82 % of base) : 389360.dasm - Internal.TypeSystem.MetadataFieldLayoutAlgorithm:ComputeAutoFieldLayout(Internal.TypeSystem.MetadataType,int):Internal.TypeSystem.ComputedInstanceFieldLayout:this (Tier1)
         -67 (-1.47 % of base) : 398030.dasm - ILCompiler.ReadyToRunVisibilityRootProvider:RootMethods(Internal.TypeSystem.MetadataType,System.String,ILCompiler.IRootingServiceProvider,ubyte):this (Tier1-OSR)
         -67 (-20.43 % of base) : 421181.dasm - Microsoft.FSharp.Core.PrintfImpl+FloatAndDecimal:isNumber(System.Object):ubyte (FullOpts)
         -53 (-11.21 % of base) : 421180.dasm - Microsoft.FSharp.Core.PrintfImpl+FloatAndDecimal:toFormattedString(System.String,System.Object):System.String (FullOpts)
         -50 (-6.93 % of base) : 143752.dasm - System.RuntimeType:TryChangeType(byref,byref):int:this (Tier1)
         -42 (-20.00 % of base) : 199533.dasm - System.Double:Equals(System.Object):ubyte:this (Instrumented Tier1)
         -42 (-20.00 % of base) : 175674.dasm - System.Single:Equals(System.Object):ubyte:this (Instrumented Tier1)
         -39 (-22.94 % of base) : 538319.dasm - Runtime_40440+LargeStruct:Equals(System.Object):ubyte:this (FullOpts)
         -39 (-33.62 % of base) : 207239.dasm - System.Single:Equals(System.Object):ubyte:this (Tier1)
         -38 (-5.47 % of base) : 156565.dasm - System.RuntimeType:TryChangeType(byref,byref):int:this (Tier1)
         -38 (-5.47 % of base) : 114802.dasm - System.RuntimeType:TryChangeType(byref,byref):int:this (Tier1)
         -38 (-2.33 % of base) : 287426.dasm - System.SR:InternalGetResourceString(System.String):System.String (Tier1)
         -37 (-43.53 % of base) : 200543.dasm - System.Byte:Equals(System.Object):ubyte:this (Tier1)
         -37 (-45.68 % of base) : 23834.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -37 (-45.68 % of base) : 222553.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -37 (-3.85 % of base) : 187897.dasm - System.Reflection.Emit.DynamicResolver:ResolveToken(int,byref,byref,byref):this (Instrumented Tier1)
         -37 (-3.82 % of base) : 207605.dasm - System.Reflection.Emit.DynamicResolver:ResolveToken(int,byref,byref,byref):this (Instrumented Tier1)
         -37 (-3.85 % of base) : 228749.dasm - System.Reflection.Emit.DynamicResolver:ResolveToken(int,byref,byref,byref):this (Instrumented Tier1)

Top method regressions (percentages):
          10 (12.20 % of base) : 538409.dasm - Runtime_49101:Test(int,int,int,int,int,int,int,int,int,float,float,float,float,float,float,float,float,float,System.Numerics.Vector3):int (FullOpts)
          40 (7.92 % of base) : 217049.dasm - System.Reflection.RuntimeAssembly:GetType(System.String,ubyte,ubyte):System.Type:this (Instrumented Tier1)
          16 (5.23 % of base) : 398519.dasm - Internal.TypeSystem.TypeSystemHelpers:HasLayout(Internal.TypeSystem.MetadataType):ubyte (Tier1)
          16 (5.23 % of base) : 389361.dasm - Internal.TypeSystem.TypeSystemHelpers:HasLayout(Internal.TypeSystem.MetadataType):ubyte (Tier1)
          27 (4.36 % of base) : 494110.dasm - X:F(System.Collections.IDictionary):int (Tier1)
          27 (4.36 % of base) : 222294.dasm - X:F(System.Collections.IDictionary):int (Tier1)
          40 (4.02 % of base) : 293839.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateConstructors(System.RuntimeType+RuntimeTypeCache+Filter):System.Reflection.RuntimeConstructorInfo[]:this (Tier1-OSR)
           6 (3.97 % of base) : 238518.dasm - System.Dynamic.Utils.TypeUtils:ValidateType(System.Type,System.String) (Tier1)
          20 (3.55 % of base) : 217051.dasm - System.Reflection.TypeNameParser:GetType(System.String,ubyte,ubyte,System.Reflection.Assembly):System.Type (Instrumented Tier1)
           9 (3.53 % of base) : 492896.dasm - MyCounter[System.__Canon]:.ctor():this (FullOpts)
           9 (3.53 % of base) : 492915.dasm - MyCounter[System.__Canon]:.ctor():this (FullOpts)
           9 (3.32 % of base) : 492916.dasm - MyCounter[System.__Canon]:Increment[System.__Canon]():this (FullOpts)
          20 (3.18 % of base) : 23950.dasm - Program+<>c__DisplayClass7_0:<Main>g__Test|0[System.__Canon](System.Func`1[System.__Canon],System.__Canon,System.String):this (Tier1)
           2 (3.08 % of base) : 585102.dasm - Internal.IL.ILImporter:PropagateThisState(Internal.IL.ILImporter+BasicBlock,Internal.IL.ILImporter+BasicBlock):this (FullOpts)
          14 (3.04 % of base) : 287495.dasm - System.Text.UTF8Encoding:GetBytes(System.String,int,int,ubyte[],int):int:this (FullOpts)
           2 (2.99 % of base) : 200817.dasm - System.String:Equals(System.Object):ubyte:this (Tier1)
           4 (2.82 % of base) : 182008.dasm - System.Reflection.RuntimeParameterInfo:GetParameters(System.IRuntimeMethodInfo,System.Reflection.MemberInfo,System.Signature):System.Reflection.ParameterInfo[] (Tier1)
           3 (2.70 % of base) : 500952.dasm - System.Runtime.Serialization.Json.JsonEncodingStreamWrapper:ReadEncoding(ubyte,ubyte):int (FullOpts)
          14 (2.50 % of base) : 249246.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
           3 (2.48 % of base) : 394291.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.TransitionBlock:IsStackArgumentOffset(int):ubyte:this (Tier1)

Top method improvements (percentages):
         -37 (-45.68 % of base) : 23834.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -37 (-45.68 % of base) : 222553.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -35 (-44.30 % of base) : 207243.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -35 (-44.30 % of base) : 214891.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -35 (-44.30 % of base) : 287127.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -35 (-44.30 % of base) : 207261.dasm - System.UInt32:Equals(System.Object):ubyte:this (Tier1)
         -34 (-43.59 % of base) : 200605.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -34 (-43.59 % of base) : 6409.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -34 (-43.59 % of base) : 286571.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -34 (-43.59 % of base) : 200552.dasm - System.UInt32:Equals(System.Object):ubyte:this (Tier1)
         -37 (-43.53 % of base) : 200543.dasm - System.Byte:Equals(System.Object):ubyte:this (Tier1)
         -36 (-42.86 % of base) : 207252.dasm - System.Byte:Equals(System.Object):ubyte:this (Tier1)
         -36 (-42.86 % of base) : 207251.dasm - System.UInt16:Equals(System.Object):ubyte:this (Tier1)
         -35 (-42.17 % of base) : 200550.dasm - System.UInt16:Equals(System.Object):ubyte:this (Tier1)
         -33 (-41.77 % of base) : 207247.dasm - System.Int64:Equals(System.Object):ubyte:this (Tier1)
         -33 (-41.77 % of base) : 207265.dasm - System.UInt64:Equals(System.Object):ubyte:this (Tier1)
         -35 (-41.18 % of base) : 207256.dasm - System.Int16:Equals(System.Object):ubyte:this (Tier1)
         -35 (-41.18 % of base) : 207257.dasm - System.SByte:Equals(System.Object):ubyte:this (Tier1)
         -32 (-41.03 % of base) : 200554.dasm - System.Int64:Equals(System.Object):ubyte:this (Tier1)
         -32 (-41.03 % of base) : 200556.dasm - System.UInt64:Equals(System.Object):ubyte:this (Tier1)


libraries.crossgen2.linux.x64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 38727192 (overridden on cmd)
Total bytes of diff: 38726091 (overridden on cmd)
Total bytes of delta: -1101 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          43 : 11821.dasm (2.31 % of base)
          37 : 73535.dasm (0.70 % of base)
          32 : 98448.dasm (2.74 % of base)
          27 : 27748.dasm (3.08 % of base)
          19 : 32025.dasm (6.67 % of base)
          18 : 208217.dasm (1.26 % of base)
          17 : 138525.dasm (3.56 % of base)
          15 : 25662.dasm (1.27 % of base)
          14 : 32010.dasm (5.36 % of base)
          11 : 24582.dasm (4.26 % of base)
          11 : 216413.dasm (1.89 % of base)
          10 : 138817.dasm (2.39 % of base)
           9 : 66129.dasm (0.21 % of base)
           9 : 133182.dasm (0.99 % of base)
           8 : 202607.dasm (2.82 % of base)
           8 : 42287.dasm (1.16 % of base)
           8 : 96100.dasm (1.62 % of base)
           7 : 26761.dasm (1.05 % of base)
           6 : 27908.dasm (5.22 % of base)
           6 : 26643.dasm (0.41 % of base)

Top file improvements (bytes):
        -100 : 195267.dasm (-5.74 % of base)
         -75 : 4162.dasm (-6.23 % of base)
         -52 : 4946.dasm (-1.52 % of base)
         -51 : 154637.dasm (-1.54 % of base)
         -49 : 4904.dasm (-1.43 % of base)
         -36 : 2107.dasm (-3.92 % of base)
         -35 : 207764.dasm (-5.46 % of base)
         -32 : 226656.dasm (-30.19 % of base)
         -29 : 127211.dasm (-25.66 % of base)
         -29 : 40590.dasm (-4.28 % of base)
         -28 : 103560.dasm (-5.27 % of base)
         -28 : 188713.dasm (-3.26 % of base)
         -28 : 195149.dasm (-3.82 % of base)
         -28 : 217809.dasm (-4.59 % of base)
         -26 : 103531.dasm (-4.04 % of base)
         -26 : 233413.dasm (-6.33 % of base)
         -26 : 217962.dasm (-6.33 % of base)
         -26 : 25793.dasm (-4.84 % of base)
         -25 : 226981.dasm (-0.55 % of base)
         -22 : 198748.dasm (-0.16 % of base)

72 total files with Code Size differences (35 improved, 37 regressed), 20 unchanged.

Top method regressions (bytes):
          43 (2.31 % of base) : 11821.dasm - System.Text.StringBuilder:Replace(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,int):System.Text.StringBuilder:this (FullOpts)
          37 (0.70 % of base) : 73535.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:BetterFunctionMember[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],ubyte,byref):int:this (FullOpts)
          32 (2.74 % of base) : 98448.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.MetadataDecoder:SubstituteNoPiaLocalType(byref,ubyte,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,System.String,System.String,System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol):Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol (FullOpts)
          27 (3.08 % of base) : 27748.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
          19 (6.67 % of base) : 32025.dasm - Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
          18 (1.26 % of base) : 208217.dasm - System.IO.FileSystemWatcher+RunningInstance:ProcessEvent(System.IO.FileSystemWatcher+RunningInstance+NotifyEvent,byref,byref,byref):ubyte:this (FullOpts)
          17 (3.56 % of base) : 138525.dasm - System.ComponentModel.AttributeCollection:FromExisting(System.ComponentModel.AttributeCollection,System.Attribute[]):System.ComponentModel.AttributeCollection (FullOpts)
          15 (1.27 % of base) : 25662.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (FullOpts)
          14 (5.36 % of base) : 32010.dasm - Microsoft.FSharp.Core.FSharpRef`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
          11 (4.26 % of base) : 24582.dasm - System.Number:TryFormatHalf[ubyte](System.Half,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo,System.Span`1[ubyte],byref):ubyte (FullOpts)
          11 (1.89 % of base) : 216413.dasm - Xunit.Assert:Equal(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte,ubyte,ubyte) (FullOpts)
          10 (2.39 % of base) : 138817.dasm - System.ComponentModel.TypeDescriptor+AttributeProvider+AttributeTypeDescriptor:GetAttributes():System.ComponentModel.AttributeCollection:this (FullOpts)
           9 (0.21 % of base) : 66129.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodSymbol:CheckModifiers(ubyte,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
           9 (0.99 % of base) : 133182.dasm - System.Linq.Parallel.AsynchronousChannelMergeEnumerator`1[System.__Canon]:MoveNextSlowPath():ubyte:this (FullOpts)
           8 (1.16 % of base) : 42287.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:BetterOperator(Microsoft.CodeAnalysis.CSharp.BinaryOperatorSignature,Microsoft.CodeAnalysis.CSharp.BinaryOperatorSignature,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression,byref):int:this (FullOpts)
           8 (1.62 % of base) : 96100.dasm - Microsoft.CodeAnalysis.VisualBasic.DataFlowPass:SetSlotUnassigned(int,byref):this (FullOpts)
           8 (2.82 % of base) : 202607.dasm - System.Net.Http.Headers.BaseHeaderParser:TryParseValue(System.String,System.Object,byref,byref):ubyte:this (FullOpts)
           7 (1.05 % of base) : 26761.dasm - System.TimeZoneInfo:TryGetEndOfDstIfYearStartWithDst(int,System.TimeSpan,System.TimeZoneInfo,byref):ubyte (FullOpts)
           6 (0.41 % of base) : 26643.dasm - System.Environment:ReadXdgDirectory(System.String,System.String,System.String):System.String (FullOpts)
           6 (5.22 % of base) : 27908.dasm - System.Threading.PortableThreadPool:RemoveWaitThread(System.Threading.PortableThreadPool+WaitThread):this (FullOpts)

Top method improvements (bytes):
        -100 (-5.74 % of base) : 195267.dasm - System.Xml.XmlConvert:EncodeName(System.String,ubyte,ubyte):System.String (FullOpts)
         -75 (-6.23 % of base) : 4162.dasm - System.Data.Select:AnalyzeExpression(System.Data.BinaryNode):this (FullOpts)
         -52 (-1.52 % of base) : 4946.dasm - System.Data.RBTree`1[int]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
         -51 (-1.54 % of base) : 154637.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyData[System.__Canon,System.__Canon]],int):this (FullOpts)
         -49 (-1.43 % of base) : 4904.dasm - System.Data.RBTree`1[System.__Canon]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
         -36 (-3.92 % of base) : 2107.dasm - System.Data.Common.DataAdapter:Fill(System.Data.DataTable[],System.Data.IDataReader,int,int):int:this (FullOpts)
         -35 (-5.46 % of base) : 207764.dasm - System.Diagnostics.LegacyPropagator:TryExtractBaggage(System.String,byref):ubyte (FullOpts)
         -32 (-30.19 % of base) : 226656.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
         -29 (-4.28 % of base) : 40590.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindArgumentAndName(Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Syntax.NameColonSyntax,ubyte):this (FullOpts)
         -29 (-25.66 % of base) : 127211.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
         -28 (-5.27 % of base) : 103560.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation:GetWellKnownTypeMember(int):Microsoft.CodeAnalysis.VisualBasic.Symbol:this (FullOpts)
         -28 (-4.59 % of base) : 217809.dasm - System.Net.HttpListenerRequest+Helpers:GetCharSetValueFromHeader(System.String):System.String (FullOpts)
         -28 (-3.26 % of base) : 188713.dasm - System.Text.RegularExpressions.RegexNode:ReduceAtomic():System.Text.RegularExpressions.RegexNode:this (FullOpts)
         -28 (-3.82 % of base) : 195149.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (FullOpts)
         -26 (-4.04 % of base) : 103531.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation:CheckBinaryBuiltInOperator(System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+OperatorInfo) (FullOpts)
         -26 (-4.84 % of base) : 25793.dasm - System.Diagnostics.Tracing.EventSource:LogEventArgsMismatches(int,System.Object[]):this (FullOpts)
         -26 (-6.33 % of base) : 233413.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
         -26 (-6.33 % of base) : 217962.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
         -25 (-0.55 % of base) : 226981.dasm - System.Globalization.FormatProvider+Number:NumberToStringFormat(byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
         -22 (-0.16 % of base) : 198748.dasm - System.Xml.Serialization.XmlReflectionImporter:ImportAccessorMapping(System.Xml.Serialization.MemberMapping,System.Xml.Serialization.FieldModel,System.Xml.Serialization.XmlAttributes,System.String,System.Type,ubyte,ubyte,System.Xml.Serialization.RecursionLimiter):this (FullOpts)

Top method regressions (percentages):
           3 (11.11 % of base) : 174846.dasm - System.Security.Cryptography.SHA1CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
           3 (11.11 % of base) : 174877.dasm - System.Security.Cryptography.SHA256CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
           3 (11.11 % of base) : 174908.dasm - System.Security.Cryptography.SHA384CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
           3 (11.11 % of base) : 174939.dasm - System.Security.Cryptography.SHA512CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
          19 (6.67 % of base) : 32025.dasm - Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
           3 (6.25 % of base) : 174454.dasm - System.Security.Cryptography.KeyedHashAlgorithm:Dispose(ubyte):this (FullOpts)
          14 (5.36 % of base) : 32010.dasm - Microsoft.FSharp.Core.FSharpRef`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
           3 (5.26 % of base) : 201185.dasm - Microsoft.VisualBasic.CompilerServices.StringType:StrLikeCompareBinary(ubyte,ubyte,ushort,ushort):ubyte (FullOpts)
           6 (5.22 % of base) : 27908.dasm - System.Threading.PortableThreadPool:RemoveWaitThread(System.Threading.PortableThreadPool+WaitThread):this (FullOpts)
           4 (4.60 % of base) : 103090.dasm - Microsoft.CodeAnalysis.VisualBasic.CodeGen.CodeGenerator:EmitConditionalAccessReceiverPlaceholder(Microsoft.CodeAnalysis.VisualBasic.BoundConditionalAccessReceiverPlaceholder,ubyte):this (FullOpts)
           5 (4.59 % of base) : 22528.dasm - System.Enum+<>c__63`1[ubyte]:<FormatNumberAsHex>b__63_0(System.Span`1[ushort],long):this (FullOpts)
           4 (4.55 % of base) : 1575.dasm - System.Data.SqlTypes.SqlInt64:Equals(System.Data.SqlTypes.SqlInt64):ubyte:this (FullOpts)
           4 (4.55 % of base) : 1641.dasm - System.Data.SqlTypes.SqlMoney:Equals(System.Data.SqlTypes.SqlMoney):ubyte:this (FullOpts)
          11 (4.26 % of base) : 24582.dasm - System.Number:TryFormatHalf[ubyte](System.Half,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo,System.Span`1[ubyte],byref):ubyte (FullOpts)
           3 (4.05 % of base) : 1895.dasm - System.Data.SqlTypes.SqlBoolean:Equals(System.Data.SqlTypes.SqlBoolean):ubyte:this (FullOpts)
           3 (3.90 % of base) : 1445.dasm - System.Data.SqlTypes.SqlInt16:Equals(System.Data.SqlTypes.SqlInt16):ubyte:this (FullOpts)
           3 (3.80 % of base) : 1959.dasm - System.Data.SqlTypes.SqlByte:Equals(System.Data.SqlTypes.SqlByte):ubyte:this (FullOpts)
           3 (3.75 % of base) : 1510.dasm - System.Data.SqlTypes.SqlInt32:Equals(System.Data.SqlTypes.SqlInt32):ubyte:this (FullOpts)
           3 (3.75 % of base) : 1696.dasm - System.Data.SqlTypes.SqlSingle:Equals(System.Data.SqlTypes.SqlSingle):ubyte:this (FullOpts)
           3 (3.75 % of base) : 22138.dasm - System.IO.FileStream:ValidateHandle(Microsoft.Win32.SafeHandles.SafeFileHandle,int,int,ubyte) (FullOpts)

Top method improvements (percentages):
         -32 (-30.19 % of base) : 226656.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
         -29 (-25.66 % of base) : 127211.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
         -16 (-9.30 % of base) : 141961.dasm - System.Configuration.Internal.WriteFileContext:ReplaceFile(System.String,System.String):this (FullOpts)
         -16 (-8.51 % of base) : 26654.dasm - System.DateTimeFormat:IsUseGenitiveForm(System.ReadOnlySpan`1[ushort],int,int,ushort):ubyte (FullOpts)
         -11 (-7.53 % of base) : 4690.dasm - System.Data.ExpressionParser:ScanDate():this (FullOpts)
         -16 (-7.17 % of base) : 25007.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
          -8 (-6.67 % of base) : 234263.dasm - System.Transactions.CheapUnfairReaderWriterLock:EnterWriteLock():this (FullOpts)
          -5 (-6.58 % of base) : 221591.dasm - System.Xml.Linq.XObject:SkipNotify():ubyte:this (FullOpts)
          -5 (-6.41 % of base) : 198038.dasm - System.Xml.Serialization.XmlSchemaObjectComparer:Namespace(System.Xml.Schema.XmlSchemaObject):System.String (FullOpts)
         -26 (-6.33 % of base) : 233413.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
         -26 (-6.33 % of base) : 217962.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
          -6 (-6.25 % of base) : 177493.dasm - System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor+ErrorCollection+Enumerator:MoveNext():ubyte:this (FullOpts)
         -75 (-6.23 % of base) : 4162.dasm - System.Data.Select:AnalyzeExpression(System.Data.BinaryNode):this (FullOpts)
          -5 (-6.02 % of base) : 221373.dasm - System.Xml.Linq.XObject:get_BaseUri():System.String:this (FullOpts)
         -15 (-5.93 % of base) : 225376.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:SymmetricExceptWithSameComparer(System.__Canon[],int):this (FullOpts)
        -100 (-5.74 % of base) : 195267.dasm - System.Xml.XmlConvert:EncodeName(System.String,ubyte,ubyte):System.String (FullOpts)
         -35 (-5.46 % of base) : 207764.dasm - System.Diagnostics.LegacyPropagator:TryExtractBaggage(System.String,byref):ubyte (FullOpts)
         -28 (-5.27 % of base) : 103560.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation:GetWellKnownTypeMember(int):Microsoft.CodeAnalysis.VisualBasic.Symbol:this (FullOpts)
         -26 (-4.84 % of base) : 25793.dasm - System.Diagnostics.Tracing.EventSource:LogEventArgsMismatches(int,System.Object[]):this (FullOpts)
         -28 (-4.59 % of base) : 217809.dasm - System.Net.HttpListenerRequest+Helpers:GetCharSetValueFromHeader(System.String):System.String (FullOpts)


libraries.pmi.linux.x64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 60418410 (overridden on cmd)
Total bytes of diff: 60416719 (overridden on cmd)
Total bytes of delta: -1691 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          95 : 104465.dasm (5.59 % of base)
          50 : 237522.dasm (1.49 % of base)
          48 : 295430.dasm (10.57 % of base)
          46 : 102188.dasm (5.60 % of base)
          40 : 241035.dasm (1.11 % of base)
          40 : 227332.dasm (0.99 % of base)
          31 : 135546.dasm (1.78 % of base)
          28 : 72118.dasm (1.67 % of base)
          27 : 210285.dasm (0.70 % of base)
          25 : 62008.dasm (1.01 % of base)
          19 : 110244.dasm (1.57 % of base)
          19 : 257447.dasm (1.30 % of base)
          19 : 64048.dasm (0.95 % of base)
          19 : 70157.dasm (4.60 % of base)
          18 : 102712.dasm (6.43 % of base)
          18 : 20756.dasm (5.22 % of base)
          17 : 221983.dasm (2.72 % of base)
          17 : 221984.dasm (2.71 % of base)
          16 : 267647.dasm (1.14 % of base)
          14 : 138480.dasm (16.09 % of base)

Top file improvements (bytes):
        -173 : 11458.dasm (-19.61 % of base)
        -143 : 242900.dasm (-19.07 % of base)
         -82 : 196355.dasm (-2.77 % of base)
         -76 : 131201.dasm (-1.91 % of base)
         -67 : 11407.dasm (-20.43 % of base)
         -53 : 11406.dasm (-11.21 % of base)
         -52 : 23258.dasm (-1.52 % of base)
         -49 : 23197.dasm (-1.43 % of base)
         -37 : 243596.dasm (-29.37 % of base)
         -36 : 25145.dasm (-3.85 % of base)
         -36 : 63028.dasm (-39.56 % of base)
         -36 : 64069.dasm (-1.93 % of base)
         -35 : 261317.dasm (-3.16 % of base)
         -35 : 58829.dasm (-38.04 % of base)
         -32 : 291734.dasm (-30.48 % of base)
         -32 : 62801.dasm (-4.31 % of base)
         -31 : 166253.dasm (-3.10 % of base)
         -31 : 183890.dasm (-3.10 % of base)
         -31 : 62794.dasm (-3.69 % of base)
         -30 : 200905.dasm (-10.56 % of base)

71 total files with Code Size differences (37 improved, 34 regressed), 20 unchanged.

Top method regressions (bytes):
          95 (5.59 % of base) : 104465.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.MetadataDecoder:SubstituteNoPiaLocalType(byref,ubyte,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,System.String,System.String,System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol):Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol (FullOpts)
          50 (1.49 % of base) : 237522.dasm - Microsoft.Build.Execution.ProjectInstance:Initialize(Microsoft.Build.Construction.ProjectRootElement,System.Collections.Generic.IDictionary`2[System.String,System.String],System.String,System.String,int,Microsoft.Build.Execution.BuildParameters,Microsoft.Build.BackEnd.Logging.ILoggingService,Microsoft.Build.Framework.BuildEventContext,Microsoft.Build.BackEnd.SdkResolution.ISdkResolverService,int,System.Nullable`1[int],Microsoft.Build.Evaluation.Context.EvaluationContext):this (FullOpts)
          48 (10.57 % of base) : 295430.dasm - System.Net.Sockets.SocketAsyncContext:ReceiveMessageFrom(System.Span`1[ubyte],byref,System.Memory`1[ubyte],byref,ubyte,ubyte,int,byref,byref):int:this (FullOpts)
          46 (5.60 % of base) : 102188.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindNamespaceOrTypeOrExpressionSyntaxForSemanticModel(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
          40 (1.11 % of base) : 241035.dasm - Microsoft.Build.Evaluation.Project+ProjectImpl:BuildGlobResultFromIncludeItem(Microsoft.Build.Construction.ProjectItemElement,System.Collections.Generic.IReadOnlyDictionary`2[System.String,Microsoft.Build.Evaluation.Project+ProjectImpl+CumulativeRemoveElementData]):Microsoft.Build.Evaluation.GlobResult:this (FullOpts)
          40 (0.99 % of base) : 227332.dasm - System.Drawing.ColorConverter:ConvertTo(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type):System.Object:this (FullOpts)
          31 (1.78 % of base) : 135546.dasm - System.Xml.XmlConvert:EncodeName(System.String,ubyte,ubyte):System.String (FullOpts)
          28 (1.67 % of base) : 72118.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:MakeUtf8Span(Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Collections.Generic.IReadOnlyList`1[ubyte]):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
          27 (0.70 % of base) : 210285.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:ImportDataMembers():this (FullOpts)
          25 (1.01 % of base) : 62008.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.AttributePresenceFilterNode:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (FullOpts)
          19 (0.95 % of base) : 64048.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindBase(Microsoft.CodeAnalysis.CSharp.Syntax.BaseExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundBaseReference:this (FullOpts)
          19 (4.60 % of base) : 70157.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:SetUpdatedSymbol(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)
          19 (1.57 % of base) : 110244.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxTreeSemanticModel:GetTypeOrNamespaceSymbolInfoNotInMember(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax,int):Microsoft.CodeAnalysis.SymbolInfo:this (FullOpts)
          19 (1.30 % of base) : 257447.dasm - System.IO.FileSystemWatcher+RunningInstance:ProcessEvent(System.IO.FileSystemWatcher+RunningInstance+NotifyEvent,byref,byref,byref):ubyte:this (FullOpts)
          18 (6.43 % of base) : 102712.dasm - Microsoft.CodeAnalysis.VisualBasic.BinderFactory:BuildAttributeBinder(Microsoft.CodeAnalysis.VisualBasic.Binder,Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode):Microsoft.CodeAnalysis.VisualBasic.Binder:this (FullOpts)
          18 (5.22 % of base) : 20756.dasm - System.Xml.XPathNodePointer:GetNamespace(System.String):System.String:this (FullOpts)
          17 (2.72 % of base) : 221983.dasm - System.Security.Cryptography.EccKeyFormatHelper:WriteUncompressedBasePoint(byref,System.Formats.Asn1.AsnWriter) (FullOpts)
          17 (2.71 % of base) : 221984.dasm - System.Security.Cryptography.EccKeyFormatHelper:WriteUncompressedPublicKey(byref,System.Formats.Asn1.AsnWriter) (FullOpts)
          16 (1.14 % of base) : 267647.dasm - Xunit.Assert:Equal(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte,ubyte,ubyte) (FullOpts)
          14 (17.95 % of base) : 237018.dasm - Microsoft.Build.Internal.ProjectXmlUtilities:GetAttributeValue(Microsoft.Build.Construction.XmlElementWithLocation,System.String):System.String (FullOpts)

Top method improvements (bytes):
        -173 (-19.61 % of base) : 11458.dasm - Microsoft.FSharp.Core.PrintfImpl+GenericNumber:isPositive(System.Object):ubyte (FullOpts)
        -143 (-19.07 % of base) : 242900.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal:IsDefault(System.Object):ubyte (FullOpts)
         -82 (-2.77 % of base) : 196355.dasm - System.Net.Http.HttpConnectionPool+<HandleHttp11Downgrade>d__82:MoveNext():this (FullOpts)
         -76 (-1.91 % of base) : 131201.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+DocumentationCommentCompiler+IncludeElementExpander:RewriteIncludeElement(System.Xml.Linq.XElement,System.String,Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax,byref):System.Xml.Linq.XNode[]:this (FullOpts)
         -67 (-20.43 % of base) : 11407.dasm - Microsoft.FSharp.Core.PrintfImpl+FloatAndDecimal:isNumber(System.Object):ubyte (FullOpts)
         -53 (-11.21 % of base) : 11406.dasm - Microsoft.FSharp.Core.PrintfImpl+FloatAndDecimal:toFormattedString(System.String,System.Object):System.String (FullOpts)
         -52 (-1.52 % of base) : 23258.dasm - System.Data.RBTree`1[ubyte]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
         -49 (-1.43 % of base) : 23197.dasm - System.Data.RBTree`1[System.__Canon]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
         -37 (-29.37 % of base) : 243596.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.TypeTable+KeyPair`2[ubyte,System.Nullable`1[int]]:Equals(System.Object):ubyte:this (FullOpts)
         -36 (-39.56 % of base) : 63028.dasm - ILCompiler.IBC.IBCProfileParser+IBCBlobKey:Equals(System.Object):ubyte:this (FullOpts)
         -36 (-1.93 % of base) : 64069.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindArgumentAndName(Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Syntax.NameColonSyntax,ubyte):this (FullOpts)
         -36 (-3.85 % of base) : 25145.dasm - System.Data.Common.DataAdapter:Fill(System.Data.DataTable[],System.Data.IDataReader,int,int):int:this (FullOpts)
         -35 (-38.04 % of base) : 58829.dasm - Microsoft.Diagnostics.Tracing.CLRRuntimeActivityComputer+IdOfIncompleteAction:Equals(System.Object):ubyte:this (FullOpts)
         -35 (-3.16 % of base) : 261317.dasm - System.Diagnostics.LegacyPropagator:TryExtractBaggage(System.String,byref):ubyte (FullOpts)
         -32 (-4.31 % of base) : 62801.dasm - ILCompiler.LazyGenericsSupport+Graph`1[ubyte]:FindCyclesWorker(ILCompiler.LazyGenericsSupport+Graph`1+Edge[ubyte],System.Collections.Generic.List`1[ILCompiler.LazyGenericsSupport+Graph`1+Edge[ubyte]],byref,System.Diagnostics.Stopwatch) (FullOpts)
         -32 (-30.48 % of base) : 291734.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
         -31 (-3.69 % of base) : 62794.dasm - ILCompiler.LazyGenericsSupport+Graph`1[System.__Canon]:FindCyclesWorker(ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon],System.Collections.Generic.List`1[ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]],byref,System.Diagnostics.Stopwatch) (FullOpts)
         -31 (-3.10 % of base) : 166253.dasm - Microsoft.CodeAnalysis.Diagnostics.AsyncQueue`1[System.__Canon]:CompleteCore():ubyte:this (FullOpts)
         -31 (-3.10 % of base) : 183890.dasm - Microsoft.CodeAnalysis.Diagnostics.AsyncQueue`1[System.__Canon]:CompleteCore():ubyte:this (FullOpts)
         -30 (-10.56 % of base) : 200905.dasm - System.ComponentModel.Composition.Hosting.ScopingExtensions:ContainsPartMetadata[int](System.ComponentModel.Composition.Primitives.ComposablePartDefinition,System.String,int):ubyte (FullOpts)

Top method regressions (percentages):
          14 (17.95 % of base) : 237018.dasm - Microsoft.Build.Internal.ProjectXmlUtilities:GetAttributeValue(Microsoft.Build.Construction.XmlElementWithLocation,System.String):System.String (FullOpts)
          14 (16.09 % of base) : 138480.dasm - System.Xml.DocumentXPathNavigator:get_ValueDocument():System.String:this (FullOpts)
           3 (11.11 % of base) : 223580.dasm - System.Security.Cryptography.SHA1CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
           3 (11.11 % of base) : 223612.dasm - System.Security.Cryptography.SHA256CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
           3 (11.11 % of base) : 223644.dasm - System.Security.Cryptography.SHA384CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
           3 (11.11 % of base) : 223676.dasm - System.Security.Cryptography.SHA512CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
          48 (10.57 % of base) : 295430.dasm - System.Net.Sockets.SocketAsyncContext:ReceiveMessageFrom(System.Span`1[ubyte],byref,System.Memory`1[ubyte],byref,ubyte,ubyte,int,byref,byref):int:this (FullOpts)
          18 (6.43 % of base) : 102712.dasm - Microsoft.CodeAnalysis.VisualBasic.BinderFactory:BuildAttributeBinder(Microsoft.CodeAnalysis.VisualBasic.Binder,Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode):Microsoft.CodeAnalysis.VisualBasic.Binder:this (FullOpts)
           3 (6.25 % of base) : 222827.dasm - System.Security.Cryptography.HMAC:Dispose(ubyte):this (FullOpts)
           3 (6.25 % of base) : 223036.dasm - System.Security.Cryptography.KeyedHashAlgorithm:Dispose(ubyte):this (FullOpts)
          46 (5.60 % of base) : 102188.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindNamespaceOrTypeOrExpressionSyntaxForSemanticModel(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
          95 (5.59 % of base) : 104465.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.MetadataDecoder:SubstituteNoPiaLocalType(byref,ubyte,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,System.String,System.String,System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol):Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol (FullOpts)
           3 (5.26 % of base) : 149015.dasm - Microsoft.VisualBasic.CompilerServices.StringType:StrLikeCompareBinary(ubyte,ubyte,ushort,ushort):ubyte (FullOpts)
          18 (5.22 % of base) : 20756.dasm - System.Xml.XPathNodePointer:GetNamespace(System.String):System.String:this (FullOpts)
          19 (4.60 % of base) : 70157.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:SetUpdatedSymbol(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)
           3 (3.70 % of base) : 223891.dasm - System.Security.Cryptography.UniversalCryptoDecryptor:Dispose(ubyte):this (FullOpts)
           3 (3.49 % of base) : 265665.dasm - System.Net.Mail.AlternateView:Dispose(ubyte):this (FullOpts)
           3 (3.26 % of base) : 222964.dasm - System.Security.Cryptography.HMACSHA3_256:Dispose(ubyte):this (FullOpts)
           3 (3.26 % of base) : 223008.dasm - System.Security.Cryptography.HMACSHA3_512:Dispose(ubyte):this (FullOpts)
           3 (3.26 % of base) : 222944.dasm - System.Security.Cryptography.HMACSHA512:Dispose(ubyte):this (FullOpts)

Top method improvements (percentages):
         -36 (-39.56 % of base) : 63028.dasm - ILCompiler.IBC.IBCProfileParser+IBCBlobKey:Equals(System.Object):ubyte:this (FullOpts)
         -35 (-38.04 % of base) : 58829.dasm - Microsoft.Diagnostics.Tracing.CLRRuntimeActivityComputer+IdOfIncompleteAction:Equals(System.Object):ubyte:this (FullOpts)
         -32 (-30.48 % of base) : 291734.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
         -37 (-29.37 % of base) : 243596.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.TypeTable+KeyPair`2[ubyte,System.Nullable`1[int]]:Equals(System.Object):ubyte:this (FullOpts)
         -29 (-25.89 % of base) : 157853.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
         -67 (-20.43 % of base) : 11407.dasm - Microsoft.FSharp.Core.PrintfImpl+FloatAndDecimal:isNumber(System.Object):ubyte (FullOpts)
        -173 (-19.61 % of base) : 11458.dasm - Microsoft.FSharp.Core.PrintfImpl+GenericNumber:isPositive(System.Object):ubyte (FullOpts)
        -143 (-19.07 % of base) : 242900.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal:IsDefault(System.Object):ubyte (FullOpts)
         -19 (-14.73 % of base) : 244355.dasm - System.Data.Odbc.OdbcParameter:GetParameterScale(System.Object):ubyte:this (FullOpts)
         -29 (-13.24 % of base) : 243592.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.TypeTable+KeyPair`2[System.__Canon,System.Nullable`1[int]]:Equals(System.Object):ubyte:this (FullOpts)
         -13 (-12.26 % of base) : 146661.dasm - System.Xml.Serialization.XmlSchemaObjectComparer:Namespace(System.Xml.Schema.XmlSchemaObject):System.String (FullOpts)
         -53 (-11.21 % of base) : 11406.dasm - Microsoft.FSharp.Core.PrintfImpl+FloatAndDecimal:toFormattedString(System.String,System.Object):System.String (FullOpts)
         -30 (-10.56 % of base) : 200905.dasm - System.ComponentModel.Composition.Hosting.ScopingExtensions:ContainsPartMetadata[int](System.ComponentModel.Composition.Primitives.ComposablePartDefinition,System.String,int):ubyte (FullOpts)
         -14 (-9.21 % of base) : 11422.dasm - Microsoft.FSharp.Core.PrintfImpl+Integer:eliminateNative(System.Object):System.Object (FullOpts)
         -16 (-8.89 % of base) : 230752.dasm - System.Configuration.Internal.WriteFileContext:ReplaceFile(System.String,System.String):this (FullOpts)
         -15 (-8.77 % of base) : 294389.dasm - R2RDump.Disassembler:TryParseAbsoluteAddress(System.String,byref,byref,byref):ubyte:this (FullOpts)
         -18 (-8.11 % of base) : 58822.dasm - Microsoft.Diagnostics.Tracing.CLRRuntimeActivityComputer+EventUID:Equals(System.Object):ubyte:this (FullOpts)
          -5 (-7.94 % of base) : 261917.dasm - System.Buffers.ReadOnlySequence`1[ubyte]:SeekMultiSegment(System.Buffers.ReadOnlySequenceSegment`1[ubyte],System.Object,int,long,int):System.SequencePosition (FullOpts)
          -5 (-7.81 % of base) : 261865.dasm - System.Buffers.ReadOnlySequence`1[System.__Canon]:SeekMultiSegment(System.Buffers.ReadOnlySequenceSegment`1[System.__Canon],System.Object,int,long,int):System.SequencePosition (FullOpts)
         -11 (-7.80 % of base) : 23711.dasm - System.Data.ExpressionParser:ScanDate():this (FullOpts)


libraries_tests.run.linux.x64.Release.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 335624331 (overridden on cmd)
Total bytes of diff: 335603604 (overridden on cmd)
Total bytes of delta: -20727 (-0.01 % of base)
    diff is a regression.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         469 : 471500.dasm (11.40 % of base)
         341 : 314027.dasm (9.60 % of base)
         330 : 43371.dasm (4.85 % of base)
         306 : 188410.dasm (6.16 % of base)
         287 : 89724.dasm (9.90 % of base)
         252 : 713867.dasm (5.69 % of base)
         233 : 591616.dasm (3.37 % of base)
         224 : 351580.dasm (4.23 % of base)
         208 : 59779.dasm (4.46 % of base)
         203 : 66395.dasm (9.48 % of base)
         183 : 684203.dasm (2.78 % of base)
         181 : 63971.dasm (5.79 % of base)
         172 : 116633.dasm (3.34 % of base)
         172 : 88042.dasm (2.19 % of base)
         172 : 90040.dasm (3.44 % of base)
         168 : 578958.dasm (4.58 % of base)
         161 : 183175.dasm (3.17 % of base)
         151 : 696821.dasm (3.99 % of base)
         146 : 704532.dasm (2.77 % of base)
         146 : 48816.dasm (3.29 % of base)

Top file improvements (bytes):
        -478 : 696327.dasm (-3.75 % of base)
        -460 : 62986.dasm (-3.20 % of base)
        -290 : 714183.dasm (-11.67 % of base)
        -274 : 707040.dasm (-1.30 % of base)
        -225 : 191700.dasm (-2.18 % of base)
        -196 : 675636.dasm (-2.52 % of base)
        -173 : 674465.dasm (-1.20 % of base)
        -141 : 247910.dasm (-3.72 % of base)
        -136 : 712676.dasm (-1.43 % of base)
        -133 : 709936.dasm (-1.57 % of base)
        -131 : 714670.dasm (-1.00 % of base)
        -119 : 494275.dasm (-0.70 % of base)
        -119 : 494276.dasm (-0.71 % of base)
        -119 : 494277.dasm (-0.71 % of base)
        -119 : 494278.dasm (-0.71 % of base)
        -118 : 92517.dasm (-2.84 % of base)
        -116 : 705098.dasm (-2.46 % of base)
        -111 : 638486.dasm (-1.94 % of base)
        -110 : 682850.dasm (-1.16 % of base)
        -108 : 658653.dasm (-1.69 % of base)

90 total files with Code Size differences (52 improved, 38 regressed), 20 unchanged.

Top method regressions (bytes):
         469 (11.40 % of base) : 471500.dasm - System.Xml.XmlDiff.XmlDiffDocument:ReadAttributes(System.Xml.XmlDiff.XmlDiffElement,System.Xml.XmlReader,System.Xml.XmlDiff.PositionInfo):this (Tier1)
         341 (9.60 % of base) : 314027.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExprMethodInfo:get_ConstructorInfo():System.Reflection.ConstructorInfo:this (Tier1)
         330 (4.85 % of base) : 43371.dasm - System.Composition.CompositionContextExtensions:SatisfyImportsInternal(System.Composition.CompositionContext,System.Object,System.Composition.Convention.AttributedModelProvider) (Tier1)
         306 (6.16 % of base) : 188410.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.OverriddenOrHiddenMembersHelpers:FindOverriddenOrHiddenMembers(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,ubyte,byref,byref) (Tier1)
         287 (9.90 % of base) : 89724.dasm - Microsoft.CodeAnalysis.CSharp.ConversionsBase:ClassifyExplicitBuiltInOnlyConversion(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte,byref,ubyte):Microsoft.CodeAnalysis.CSharp.Conversion:this (Tier1)
         252 (5.69 % of base) : 713867.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<ReinferAndVisitBinaryOperator>g__getTypeIfContainingType|186_1(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundExpression):Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:this (Tier1)
         233 (3.37 % of base) : 591616.dasm - System.Security.Cryptography.X509Certificates.Asn1.TbsCertificateAsn:DecodeCore(byref,System.Formats.Asn1.Asn1Tag,System.ReadOnlyMemory`1[ubyte],byref) (Tier1)
         224 (4.23 % of base) : 351580.dasm - Xunit.Sdk.ReflectionMethodInfo:GetParent(System.Reflection.MethodInfo):System.Reflection.MethodInfo (Tier1)
         208 (4.46 % of base) : 59779.dasm - Microsoft.CodeAnalysis.SyntaxValueProvider:<GetMatchingNodes>g__processMember|16_3(Microsoft.CodeAnalysis.SyntaxNode,byref) (Tier1)
         203 (9.48 % of base) : 66395.dasm - Microsoft.Interop.Analyzers.GeneratedComInterfaceAttributeAnalyzer:Initialize(Microsoft.CodeAnalysis.Diagnostics.AnalysisContext):this (Tier1)
         183 (2.78 % of base) : 684203.dasm - System.Text.Json.Serialization.JsonDictionaryConverter`3[System.Text.Json.Serialization.Tests.StructDictionary`2[System.__Canon,int],System.__Canon,int]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (Tier1)
         181 (5.79 % of base) : 63971.dasm - Microsoft.CodeAnalysis.CSharp.ConversionsBase:ClassifyExplicitBuiltInOnlyConversion(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte,byref,ubyte):Microsoft.CodeAnalysis.CSharp.Conversion:this (Tier1)
         172 (3.44 % of base) : 90040.dasm - Microsoft.CodeAnalysis.Compilation:CommonBindScriptClass():Microsoft.CodeAnalysis.INamedTypeSymbol:this (Tier1)
         172 (2.19 % of base) : 88042.dasm - Microsoft.CodeAnalysis.CSharp.MethodCompiler:CompileMethod(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,int,byref,Microsoft.CodeAnalysis.CSharp.SynthesizedSubmissionFields,Microsoft.CodeAnalysis.CSharp.TypeCompilationState):this (Tier1)
         172 (3.34 % of base) : 116633.dasm - Microsoft.CodeAnalysis.Workspace:<SetCurrentSolutionAsync>g__UnifyLinkedDocumentContents|27_0(Microsoft.CodeAnalysis.Solution,Microsoft.CodeAnalysis.Solution):Microsoft.CodeAnalysis.Solution (Tier1)
         168 (4.58 % of base) : 578958.dasm - System.Security.Cryptography.Pkcs.Asn1.Rfc3161TstInfo:DecodeCore(byref,System.Formats.Asn1.Asn1Tag,System.ReadOnlyMemory`1[ubyte],byref) (Tier1)
         161 (3.17 % of base) : 183175.dasm - Microsoft.CodeAnalysis.Workspace:<SetCurrentSolutionAsync>g__UnifyLinkedDocumentContents|27_0(Microsoft.CodeAnalysis.Solution,Microsoft.CodeAnalysis.Solution):Microsoft.CodeAnalysis.Solution (Tier1)
         151 (3.99 % of base) : 696821.dasm - Microsoft.CodeAnalysis.CSharp.ConversionsBase:ClassifyBuiltInConversion(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte,byref):Microsoft.CodeAnalysis.CSharp.Conversion:this (Tier1)
         146 (2.77 % of base) : 704532.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseLocalDeclarationStatement(Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AttributeListSyntax]):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.StatementSyntax:this (Tier1)
         146 (3.29 % of base) : 48816.dasm - System.Collections.Immutable.ImmutableArray:CreateRange[System.__Canon,System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier1)

Top method improvements (bytes):
        -478 (-3.75 % of base) : 696327.dasm - Microsoft.Cci.MetadataWriter:SerializeMethodBodies(System.Reflection.Metadata.BlobBuilder,Microsoft.Cci.PdbWriter,byref):int[]:this (Tier1-OSR)
        -460 (-3.20 % of base) : 62986.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckValidNullableMethodOverride[System.ValueTuple`2[System.__Canon,ubyte]](Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.Symbols.ReportMismatchInReturnType`1[System.ValueTuple`2[System.__Canon,ubyte]],Microsoft.CodeAnalysis.CSharp.Symbols.ReportMismatchInParameterType`1[System.ValueTuple`2[System.__Canon,ubyte]],System.ValueTuple`2[System.__Canon,ubyte],ubyte):ubyte (Tier1)
        -290 (-11.67 % of base) : 714183.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this (Tier1)
        -274 (-1.30 % of base) : 707040.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,System.__Canon]:VisitBinaryLogicalOperatorChildren(Microsoft.CodeAnalysis.CSharp.BoundExpression):this (Tier1)
        -225 (-2.18 % of base) : 191700.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindInvocationExpression(Microsoft.CodeAnalysis.CSharp.Syntax.InvocationExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier1)
        -196 (-2.52 % of base) : 675636.dasm - System.Text.Json.Tests.Utf8JsonReaderTests:TestJsonReaderUtf8(ubyte,int,System.String) (Tier1)
        -173 (-1.20 % of base) : 674465.dasm - System.Text.Json.Tests.Utf8JsonReaderTests:TestingNumbers_TryGetMethods() (Tier1-OSR)
        -141 (-3.72 % of base) : 247910.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
        -136 (-1.43 % of base) : 712676.dasm - Microsoft.Cci.MetadataWriter:PopulateMethodTableRows(int[]):this (Tier1)
        -133 (-1.57 % of base) : 709936.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitCollectionExpression(Microsoft.CodeAnalysis.CSharp.BoundCollectionExpression):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier1)
        -131 (-1.00 % of base) : 714670.dasm - System.Text.RegularExpressions.Generator.RegexGenerator+<>c__DisplayClass25_0:<EmitTryMatchAtCurrentPosition>g__EmitLazy|28(System.Text.RegularExpressions.RegexNode):this (Tier1)
        -119 (-0.70 % of base) : 494275.dasm - System.Xml.Tests.TCAttributeAccess:TestAttributeAccess1():int:this (Tier1)
        -119 (-0.71 % of base) : 494276.dasm - System.Xml.Tests.TCAttributeAccess:TestAttributeAccess2():int:this (Tier1)
        -119 (-0.71 % of base) : 494277.dasm - System.Xml.Tests.TCAttributeAccess:TestAttributeAccess3():int:this (Tier1)
        -119 (-0.71 % of base) : 494278.dasm - System.Xml.Tests.TCAttributeAccess:TestAttributeAccess4():int:this (Tier1)
        -118 (-2.84 % of base) : 92517.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:AreParameterAnnotationsCompatible(ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,int,ubyte):ubyte (Tier1)
        -116 (-2.46 % of base) : 705098.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.Optimizer:RemoveIntersectingLocals(System.Collections.Generic.Dictionary`2[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol,Microsoft.CodeAnalysis.CSharp.CodeGen.LocalDefUseInfo],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.CodeGen.LocalDefUseInfo]) (Tier1)
        -111 (-1.94 % of base) : 638486.dasm - System.Text.Json.Serialization.Converters.ObjectWithParameterizedConstructorConverter`1[System.__Canon]:ReadConstructorArguments(byref,byref,System.Text.Json.JsonSerializerOptions):this (Tier1)
        -110 (-1.16 % of base) : 682850.dasm - System.Text.Json.Serialization.Converters.ObjectWithParameterizedConstructorConverter`1[System.Text.Json.Serialization.Tests.Struct_With_Ctor_With_65_Params]:ReadConstructorArgumentsWithContinuation(byref,byref,System.Text.Json.JsonSerializerOptions):ubyte:this (Tier1)
        -108 (-1.69 % of base) : 658653.dasm - System.Text.Json.Serialization.JsonCollectionConverter`2[System.__Canon,int]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (Tier1)

Top method regressions (percentages):
          58 (21.32 % of base) : 734178.dasm - System.Diagnostics.DebuggerAttributes:IsPrimitiveType(System.Object):ubyte (Tier1)
          26 (13.33 % of base) : 606818.dasm - System.Dynamic.Utils.TypeUtils:AreReferenceAssignable(System.Type,System.Type):ubyte (Tier1)
          29 (11.65 % of base) : 243509.dasm - System.Collections.Tests.IEnumerable_Generic_Tests`1[int]:<IEnumerable_Generic_Enumerator_Reset>b__55_2(System.Collections.Generic.IEnumerator`1[int],int[],int):this (Tier1)
         469 (11.40 % of base) : 471500.dasm - System.Xml.XmlDiff.XmlDiffDocument:ReadAttributes(System.Xml.XmlDiff.XmlDiffElement,System.Xml.XmlReader,System.Xml.XmlDiff.PositionInfo):this (Tier1)
          29 (11.11 % of base) : 246225.dasm - System.Collections.Tests.IEnumerable_Generic_Tests`1[System.Collections.Generic.KeyValuePair`2[int,int]]:<IEnumerable_Generic_Enumerator_Reset>b__55_2(System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[int,int]],System.Collections.Generic.KeyValuePair`2[int,int][],int):this (Tier1)
          14 (10.69 % of base) : 693200.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:ShouldCheckRequiredMembers(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol):ubyte (Tier1)
         129 (10.33 % of base) : 476049.dasm - System.Xml.Xsl.Xslt.XslAstAnalyzer:VisitChildren(System.Xml.Xsl.Xslt.XslNode):int:this (Tier1)
          12 (10.17 % of base) : 696514.dasm - Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder:IsGenericType(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol):ubyte (Tier1)
         287 (9.90 % of base) : 89724.dasm - Microsoft.CodeAnalysis.CSharp.ConversionsBase:ClassifyExplicitBuiltInOnlyConversion(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte,byref,ubyte):Microsoft.CodeAnalysis.CSharp.Conversion:this (Tier1)
          29 (9.63 % of base) : 242058.dasm - System.Collections.Tests.IEnumerable_Generic_Tests`1[System.__Canon]:<IEnumerable_Generic_Enumerator_Reset>b__55_2(System.Collections.Generic.IEnumerator`1[System.__Canon],System.__Canon[],int):this (Tier1)
         341 (9.60 % of base) : 314027.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExprMethodInfo:get_ConstructorInfo():System.Reflection.ConstructorInfo:this (Tier1)
         203 (9.48 % of base) : 66395.dasm - Microsoft.Interop.Analyzers.GeneratedComInterfaceAttributeAnalyzer:Initialize(Microsoft.CodeAnalysis.Diagnostics.AnalysisContext):this (Tier1)
          28 (9.09 % of base) : 57612.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_IsDelaySigned():ubyte:this (Tier1)
          45 (9.00 % of base) : 334294.dasm - System.Reflection.TypeNameParser:Parse():System.Type:this (Tier1)
          25 (8.42 % of base) : 89853.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_IsDelaySigned():ubyte:this (Tier1)
          25 (8.25 % of base) : 695976.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol+<>c:<AfterMembersCompletedChecks>b__92_0(Microsoft.CodeAnalysis.CSharp.Symbol):ubyte:this (Tier1)
          34 (7.93 % of base) : 692447.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol+AliasesAndUsings:GetUsingsAndDiagnostics(byref,Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],ubyte):Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol+AliasesAndUsings+UsingsAndDiagnostics:this (Tier1)
           9 (7.50 % of base) : 188108.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetSymbol[System.__Canon](Microsoft.CodeAnalysis.ISymbol):System.__Canon (Tier1)
           9 (7.50 % of base) : 90041.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetSymbol[System.__Canon](Microsoft.CodeAnalysis.ISymbol):System.__Canon (Tier1)
          18 (7.50 % of base) : 313058.dasm - System.Runtime.CompilerServices.CallSite`1+<>c[System.__Canon]:<CreateCustomUpdateDelegate>b__20_1(System.Linq.Expressions.ParameterExpression):System.Linq.Expressions.Expression:this (Tier1)

Top method improvements (percentages):
         -34 (-43.59 % of base) : 287347.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -34 (-43.59 % of base) : 468474.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -34 (-43.59 % of base) : 550739.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -34 (-43.59 % of base) : 217926.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -34 (-43.59 % of base) : 223516.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -34 (-43.59 % of base) : 268653.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -34 (-43.59 % of base) : 306484.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -34 (-43.59 % of base) : 361351.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -34 (-43.59 % of base) : 373458.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -34 (-43.59 % of base) : 384244.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -34 (-43.59 % of base) : 692589.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -34 (-43.59 % of base) : 108918.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -34 (-43.59 % of base) : 756559.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -34 (-43.59 % of base) : 241116.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -34 (-43.59 % of base) : 606126.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -34 (-43.59 % of base) : 310926.dasm - System.UInt32:Equals(System.Object):ubyte:this (Tier1)
         -34 (-43.59 % of base) : 232068.dasm - System.UInt32:Equals(System.Object):ubyte:this (Tier1)
         -34 (-43.59 % of base) : 679785.dasm - System.UInt32:Equals(System.Object):ubyte:this (Tier1)
         -34 (-43.59 % of base) : 109315.dasm - System.UInt32:Equals(System.Object):ubyte:this (Tier1)
         -34 (-43.59 % of base) : 384898.dasm - System.UInt32:Equals(System.Object):ubyte:this (Tier1)


librariestestsnotieredcompilation.run.linux.x64.Release.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 132556965 (overridden on cmd)
Total bytes of diff: 132555208 (overridden on cmd)
Total bytes of delta: -1757 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         109 : 264457.dasm (4.76 % of base)
         107 : 182113.dasm (2.74 % of base)
          65 : 75001.dasm (1.19 % of base)
          63 : 182146.dasm (1.71 % of base)
          62 : 182134.dasm (1.39 % of base)
          60 : 181914.dasm (1.90 % of base)
          59 : 181869.dasm (1.81 % of base)
          52 : 182223.dasm (1.65 % of base)
          48 : 12427.dasm (0.77 % of base)
          48 : 30897.dasm (3.06 % of base)
          48 : 290494.dasm (1.35 % of base)
          47 : 167106.dasm (1.63 % of base)
          47 : 264562.dasm (0.98 % of base)
          47 : 251362.dasm (0.98 % of base)
          45 : 144682.dasm (2.20 % of base)
          43 : 267901.dasm (0.84 % of base)
          42 : 182280.dasm (1.10 % of base)
          42 : 20618.dasm (10.85 % of base)
          40 : 165762.dasm (1.18 % of base)
          40 : 85754.dasm (0.99 % of base)

Top file improvements (bytes):
        -165 : 117100.dasm (-18.88 % of base)
        -164 : 84527.dasm (-8.83 % of base)
        -124 : 179659.dasm (-4.48 % of base)
        -122 : 25056.dasm (-18.10 % of base)
         -89 : 300412.dasm (-2.52 % of base)
         -77 : 6722.dasm (-4.15 % of base)
         -65 : 300491.dasm (-2.97 % of base)
         -65 : 205813.dasm (-2.87 % of base)
         -65 : 212732.dasm (-2.67 % of base)
         -64 : 122757.dasm (-2.92 % of base)
         -52 : 93173.dasm (-1.52 % of base)
         -51 : 212736.dasm (-4.99 % of base)
         -49 : 94069.dasm (-1.43 % of base)
         -48 : 160616.dasm (-2.12 % of base)
         -46 : 300492.dasm (-2.23 % of base)
         -45 : 160488.dasm (-1.99 % of base)
         -45 : 211431.dasm (-1.61 % of base)
         -42 : 51166.dasm (-3.24 % of base)
         -41 : 160484.dasm (-2.00 % of base)
         -41 : 207317.dasm (-1.60 % of base)

80 total files with Code Size differences (41 improved, 39 regressed), 20 unchanged.

Top method regressions (bytes):
         109 (4.76 % of base) : 264457.dasm - System.Text.Json.Tests.Utf8JsonWriterTests:WritePartialBase64String(System.Text.Json.JsonWriterOptions):this (FullOpts)
         107 (2.74 % of base) : 182113.dasm - System.Reflection.Metadata.Tests.MetadataReaderTests:ValidateTypeDefTableMod():this (FullOpts)
          65 (1.19 % of base) : 75001.dasm - System.Collections.Specialized.Tests.NameValueCollectionAddStringStringTests:Add():this (FullOpts)
          63 (1.71 % of base) : 182146.dasm - System.Reflection.Metadata.Tests.MetadataReaderTests:ValidateTypeDefTable():this (FullOpts)
          62 (1.39 % of base) : 182134.dasm - System.Reflection.Metadata.Tests.MetadataReaderTests:ValidateFieldDef(System.Reflection.Metadata.MetadataReader,uint,uint,ubyte):this (FullOpts)
          60 (1.90 % of base) : 181914.dasm - System.Reflection.Metadata.Tests.MetadataReaderTests:ValidateTypeRefTable():this (FullOpts)
          59 (1.81 % of base) : 181869.dasm - System.Reflection.Metadata.Tests.MetadataReaderTests:ValidateAssemblyRefTable():this (FullOpts)
          52 (1.65 % of base) : 182223.dasm - System.Reflection.Metadata.Tests.MetadataReaderTests:ValidateTypeRefTableMod():this (FullOpts)
          48 (3.06 % of base) : 30897.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass+LocalState,System.__Canon]:VisitIsPatternExpression(Microsoft.CodeAnalysis.CSharp.BoundIsPatternExpression):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
          48 (0.77 % of base) : 12427.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:BetterFunctionMember[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],ubyte,byref):int:this (FullOpts)
          48 (1.35 % of base) : 290494.dasm - System.Text.RegularExpressions.Tests.GetGroupNamesTests:GroupNamesAndNumbers(System.String,System.String,System.String[],int[],System.String[],int):this (FullOpts)
          47 (0.98 % of base) : 264562.dasm - System.Text.Json.Serialization.Tests.NumberHandlingTests+<<FloatingPointConstants_Pass>g__PerformFloatingPointSerialization|38_0>d:MoveNext():this (FullOpts)
          47 (0.98 % of base) : 251362.dasm - System.Text.Json.Serialization.Tests.NumberHandlingTests+<<FloatingPointConstants_Pass>g__PerformFloatingPointSerialization|38_0>d:MoveNext():this (FullOpts)
          47 (1.63 % of base) : 167106.dasm - XPathTests.Common.Utils:XPathNodesetTest(int,System.String,System.String,XPathTests.Common.XPathResult,System.Xml.XmlNamespaceManager,System.String) (FullOpts)
          45 (2.20 % of base) : 144682.dasm - System.SpanTests.IndexOfAnyInRangeTests_RefType:NullBound_Throws():this (FullOpts)
          43 (0.84 % of base) : 267901.dasm - System.Text.RegularExpressions.Tests.RegexUnicodeCharTests+<RegexUnicodeChar>d__1:MoveNext():this (FullOpts)
          42 (10.85 % of base) : 20618.dasm - System.Formats.Asn1.AsnDecoder:DecodeLength(System.ReadOnlySpan`1[ubyte],int,byref,byref):int (FullOpts)
          42 (1.10 % of base) : 182280.dasm - System.Reflection.Metadata.Tests.MetadataReaderTests:ValidateGenericParamTable():this (FullOpts)
          40 (0.99 % of base) : 85754.dasm - System.Drawing.ColorConverter:ConvertTo(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type):System.Object:this (FullOpts)
          40 (1.18 % of base) : 165762.dasm - XmlSerializerTests:XmlMembersMapping_MultipleMembers_XmlAnyElement() (FullOpts)

Top method improvements (bytes):
        -165 (-18.88 % of base) : 117100.dasm - Microsoft.FSharp.Core.PrintfImpl+GenericNumber:isPositive(System.Object):ubyte (FullOpts)
        -164 (-8.83 % of base) : 84527.dasm - System.ComponentModel.Composition.Hosting.ScopeExtensionsTests:ContainsMetadata():this (FullOpts)
        -124 (-4.48 % of base) : 179659.dasm - System.Reflection.Emit.Tests.AssemblySaveConstructorBuilderTests:DefineDefaultConstructor_TypesWithGenericParents():this (FullOpts)
        -122 (-18.10 % of base) : 25056.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal:IsDefault(System.Object):ubyte (FullOpts)
         -89 (-2.52 % of base) : 300412.dasm - System.Threading.Tasks.Tests.TaskRtTests_Core:RunTaskCompletionSourceTests_SetException() (FullOpts)
         -77 (-4.15 % of base) : 6722.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetAttributes(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Binder],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData[],Microsoft.CodeAnalysis.CSharp.BoundAttribute[],System.Action`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax],System.Action`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag) (FullOpts)
         -65 (-2.87 % of base) : 205813.dasm - System.Tests.ByteTests:ToStringTest(ubyte,System.String,System.IFormatProvider,System.String) (FullOpts)
         -65 (-2.67 % of base) : 212732.dasm - System.Tests.UInt16Tests:ToStringTest(ushort,System.String,System.IFormatProvider,System.String) (FullOpts)
         -65 (-2.97 % of base) : 300491.dasm - System.Threading.Tasks.Tests.TaskRtTests_Core:RunTaskCompletionSourceTests_CancellationTests() (FullOpts)
         -64 (-2.92 % of base) : 122757.dasm - System.IO.Compression.Tests.zip_UpdateTests:Update_Comment_EntryName_Encoding_Internal(System.String,System.String,System.String,System.Text.Encoding,System.String,System.String) (FullOpts)
         -52 (-1.52 % of base) : 93173.dasm - System.Data.RBTree`1[int]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
         -51 (-4.99 % of base) : 212736.dasm - System.Tests.UInt16Tests:EqualsTest(ushort,System.Object,ubyte) (FullOpts)
         -49 (-1.43 % of base) : 94069.dasm - System.Data.RBTree`1[System.__Canon]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
         -48 (-2.12 % of base) : 160616.dasm - System.Numerics.Tensors.Tests.ConvertTests:ConvertCheckedImpl[ubyte,ubyte]() (FullOpts)
         -46 (-2.23 % of base) : 300492.dasm - System.Threading.Tasks.Tests.TaskRtTests_Core:RunBasicFutureTest() (FullOpts)
         -45 (-1.99 % of base) : 160488.dasm - System.Numerics.Tensors.Tests.ConvertTests:ConvertSaturatingImpl[byte,byte]() (FullOpts)
         -45 (-1.61 % of base) : 211431.dasm - System.Tests.Int32Tests:ToStringTest(int,System.String,System.IFormatProvider,System.String) (FullOpts)
         -42 (-3.24 % of base) : 51166.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindArgumentAndName(Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Syntax.NameColonSyntax,ubyte):this (FullOpts)
         -41 (-2.00 % of base) : 160484.dasm - System.Numerics.Tensors.Tests.ConvertTests:ConvertTruncatingImpl[byte,byte]() (FullOpts)
         -41 (-1.60 % of base) : 207317.dasm - System.Tests.SByteTests:ToStringTest(byte,System.String,System.IFormatProvider,System.String) (FullOpts)

Top method regressions (percentages):
          14 (16.09 % of base) : 167450.dasm - System.Xml.DocumentXPathNavigator:get_ValueDocument():System.String:this (FullOpts)
           3 (15.79 % of base) : 151838.dasm - System.Net.NetworkInformation.Tests.PingTest+FinalizingPing:Dispose(ubyte):this (FullOpts)
           3 (11.11 % of base) : 215580.dasm - System.Security.Cryptography.SHA1CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
           3 (11.11 % of base) : 215909.dasm - System.Security.Cryptography.SHA256CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
           3 (11.11 % of base) : 215903.dasm - System.Security.Cryptography.SHA384CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
           3 (11.11 % of base) : 215895.dasm - System.Security.Cryptography.SHA512CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
          42 (10.85 % of base) : 20618.dasm - System.Formats.Asn1.AsnDecoder:DecodeLength(System.ReadOnlySpan`1[ubyte],int,byref,byref):int (FullOpts)
          28 (6.86 % of base) : 187708.dasm - System.IO.Tests.PathTests:GetDirectoryName_NetFxInvalid(System.String):this (FullOpts)
           3 (6.25 % of base) : 224272.dasm - System.Security.Cryptography.HMAC:Dispose(ubyte):this (FullOpts)
          29 (5.50 % of base) : 188075.dasm - System.Tests.ConvertToStringTests:FromUInt32Array() (FullOpts)
          26 (5.44 % of base) : 50373.dasm - Microsoft.CodeAnalysis.CSharp.CSharpSemanticModel:CanGetSemanticInfo(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,ubyte,ubyte):ubyte (FullOpts)
           3 (5.26 % of base) : 60003.dasm - Microsoft.VisualBasic.CompilerServices.StringType:StrLikeCompareBinary(ubyte,ubyte,ushort,ushort):ubyte (FullOpts)
         109 (4.76 % of base) : 264457.dasm - System.Text.Json.Tests.Utf8JsonWriterTests:WritePartialBase64String(System.Text.Json.JsonWriterOptions):this (FullOpts)
          19 (4.60 % of base) : 50216.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:SetUpdatedSymbol(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)
          19 (4.60 % of base) : 44375.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:SetUpdatedSymbol(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)
          19 (4.60 % of base) : 54059.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:SetUpdatedSymbol(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)
           3 (4.05 % of base) : 175232.dasm - XmlCoreTest.Common.CustomWriter:Dispose(ubyte):this (FullOpts)
          21 (4.02 % of base) : 188118.dasm - System.Tests.ConvertToStringTests:FromByte() (FullOpts)
          21 (3.99 % of base) : 188071.dasm - System.Tests.ConvertToStringTests:FromUInt16Array() (FullOpts)
          10 (3.76 % of base) : 187718.dasm - System.IO.Tests.PathTests:GetFileName_Volume(System.String,System.String):this (FullOpts)

Top method improvements (percentages):
         -36 (-44.44 % of base) : 193646.dasm - System.Runtime.Serialization.Formatters.Tests.StructContainingArraysOfOtherStructs:Equals(System.Object):ubyte:this (FullOpts)
         -32 (-30.48 % of base) : 31533.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
         -29 (-25.89 % of base) : 97293.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
        -165 (-18.88 % of base) : 117100.dasm - Microsoft.FSharp.Core.PrintfImpl+GenericNumber:isPositive(System.Object):ubyte (FullOpts)
        -122 (-18.10 % of base) : 25056.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal:IsDefault(System.Object):ubyte (FullOpts)
         -27 (-13.99 % of base) : 96819.dasm - System.Data.Tests.DataRowTest2+Address:Equals(System.Object):ubyte:this (FullOpts)
        -164 (-8.83 % of base) : 84527.dasm - System.ComponentModel.Composition.Hosting.ScopeExtensionsTests:ContainsMetadata():this (FullOpts)
          -5 (-7.94 % of base) : 16566.dasm - System.Buffers.ReadOnlySequence`1[ubyte]:SeekMultiSegment(System.Buffers.ReadOnlySequenceSegment`1[ubyte],System.Object,int,long,int):System.SequencePosition (FullOpts)
         -11 (-7.80 % of base) : 95684.dasm - System.Data.ExpressionParser:ScanDate():this (FullOpts)
         -12 (-7.36 % of base) : 192345.dasm - System.Numerics.BigInteger:op_Multiply(System.Numerics.BigInteger,System.Numerics.BigInteger):System.Numerics.BigInteger (FullOpts)
         -14 (-6.90 % of base) : 10713.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckConstantBounds(byte,Microsoft.CodeAnalysis.ConstantValue,byref):ubyte (FullOpts)
         -14 (-6.90 % of base) : 45854.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckConstantBounds(byte,Microsoft.CodeAnalysis.ConstantValue,byref):ubyte (FullOpts)
         -14 (-6.90 % of base) : 51290.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckConstantBounds(byte,Microsoft.CodeAnalysis.ConstantValue,byref):ubyte (FullOpts)
         -19 (-6.76 % of base) : 71254.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:SymmetricExceptWithSameComparer(System.__Canon[],int):this (FullOpts)
          -5 (-6.33 % of base) : 773.dasm - System.Xml.Linq.XObject:SkipNotify():ubyte:this (FullOpts)
          -6 (-6.25 % of base) : 153159.dasm - System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor+ErrorCollection+Enumerator:MoveNext():ubyte:this (FullOpts)
         -26 (-5.94 % of base) : 149512.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
         -26 (-5.94 % of base) : 152196.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
         -26 (-5.94 % of base) : 152584.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
          -5 (-5.81 % of base) : 63018.dasm - System.Xml.Linq.XObject:get_BaseUri():System.String:this (FullOpts)


realworld.run.linux.x64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 13174803 (overridden on cmd)
Total bytes of diff: 13174859 (overridden on cmd)
Total bytes of delta: 56 (0.00 % of base)
    diff is a regression.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          89 : 14058.dasm (2.61 % of base)
          48 : 23557.dasm (3.07 % of base)
          41 : 22292.dasm (0.65 % of base)
          34 : 18204.dasm (1.20 % of base)
          30 : 7397.dasm (1.96 % of base)
          29 : 17244.dasm (4.82 % of base)
          27 : 30373.dasm (2.78 % of base)
          21 : 8095.dasm (0.74 % of base)
          21 : 17220.dasm (1.83 % of base)
          20 : 12201.dasm (2.16 % of base)
          19 : 19490.dasm (4.60 % of base)
          16 : 17191.dasm (2.99 % of base)
          14 : 19046.dasm (0.24 % of base)
          12 : 20472.dasm (0.21 % of base)
          11 : 23294.dasm (0.96 % of base)
          11 : 25919.dasm (0.30 % of base)
          10 : 19035.dasm (0.80 % of base)
           9 : 17230.dasm (0.93 % of base)
           9 : 8889.dasm (0.06 % of base)
           8 : 15209.dasm (2.86 % of base)

Top file improvements (bytes):
         -93 : 13406.dasm (-2.94 % of base)
         -45 : 972.dasm (-0.69 % of base)
         -36 : 6712.dasm (-42.86 % of base)
         -36 : 7022.dasm (-42.86 % of base)
         -35 : 8852.dasm (-44.30 % of base)
         -28 : 19048.dasm (-1.59 % of base)
         -17 : 19037.dasm (-0.80 % of base)
         -16 : 812.dasm (-7.17 % of base)
         -16 : 15826.dasm (-1.79 % of base)
         -15 : 19994.dasm (-0.54 % of base)
         -14 : 21390.dasm (-6.90 % of base)
         -14 : 31865.dasm (-0.46 % of base)
         -13 : 17455.dasm (-1.50 % of base)
         -13 : 12095.dasm (-1.51 % of base)
         -11 : 18490.dasm (-5.02 % of base)
         -10 : 20925.dasm (-0.40 % of base)
          -8 : 19804.dasm (-3.46 % of base)
          -7 : 32658.dasm (-0.52 % of base)
          -7 : 472.dasm (-1.00 % of base)
          -6 : 16485.dasm (-0.62 % of base)

56 total files with Code Size differences (28 improved, 28 regressed), 20 unchanged.

Top method regressions (bytes):
          89 (2.61 % of base) : 14058.dasm - Microsoft.ML.Internal.Utilities.VBufferUtils:ApplyInto[float,float,float](byref,byref,byref,System.Func`4[int,float,float,float]) (FullOpts)
          48 (3.07 % of base) : 23557.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass+LocalState,System.__Canon]:VisitIsPatternExpression(Microsoft.CodeAnalysis.CSharp.BoundIsPatternExpression):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
          41 (0.65 % of base) : 22292.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:BetterFunctionMember[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],ubyte,byref):int:this (FullOpts)
          34 (1.20 % of base) : 18204.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (FullOpts)
          30 (1.96 % of base) : 7397.dasm - FSharp.Compiler.LexFilter:rulesForBothSoftWhiteAndHardWhite$cont@2481(FSharp.Compiler.LexFilter+LexFilterImpl,FSharp.Compiler.LexFilter+TokenTup,ubyte,FSharp.Compiler.LexFilter+TokenTup,Microsoft.FSharp.Core.Unit) (FullOpts)
          29 (4.82 % of base) : 17244.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolatedStringToken>g__getCloseQuote|428_5(byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
          27 (2.78 % of base) : 30373.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
          21 (0.74 % of base) : 8095.dasm - FSharp.Compiler.CheckExpressions:MakeAndPublishVal(FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.TypedTree+ParentRef,ubyte,FSharp.Compiler.CheckExpressions+DeclKind,FSharp.Compiler.TypedTree+ValRecursiveScopeInfo,FSharp.Compiler.CheckExpressions+ValScheme,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib],FSharp.Compiler.Xml.XmlDoc,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+Const],ubyte):FSharp.Compiler.TypedTree+Val (FullOpts)
          21 (1.83 % of base) : 17220.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseInterpolation(Microsoft.CodeAnalysis.CSharp.CSharpParseOptions,System.String,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer+Interpolation,int):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationSyntax (FullOpts)
          20 (2.16 % of base) : 12201.dasm - SixLabors.ImageSharp.Processing.Processors.Quantization.PaletteQuantizer:CreatePixelSpecificQuantizer[SixLabors.ImageSharp.PixelFormats.Rgba32](SixLabors.ImageSharp.Configuration,SixLabors.ImageSharp.Processing.Processors.Quantization.QuantizerOptions):SixLabors.ImageSharp.Processing.Processors.Quantization.IQuantizer`1[SixLabors.ImageSharp.PixelFormats.Rgba32]:this (FullOpts)
          19 (4.60 % of base) : 19490.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:SetUpdatedSymbol(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)
          16 (2.99 % of base) : 17191.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolatedStringToken>g__getOpenQuote|428_1(byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
          14 (0.24 % of base) : 19046.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (FullOpts)
          12 (0.21 % of base) : 20472.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodSymbol:CheckModifiers(ubyte,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
          11 (0.96 % of base) : 23294.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitObjectElementInitializer>g__visitMemberInitializer|169_0(int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundAssignmentOperator,ubyte):System.Action`2[int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]:this (FullOpts)
          11 (0.30 % of base) : 25919.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:BestTypeForLambdaReturns(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.ValueTuple`3[Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte]],Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Conversions,byref):Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations (FullOpts)
          10 (0.80 % of base) : 19035.dasm - Microsoft.CodeAnalysis.ConstantValue:Create(System.Object,ubyte):Microsoft.CodeAnalysis.ConstantValue (FullOpts)
           9 (0.06 % of base) : 8889.dasm - FSharp.Compiler.CheckExpressions:TcMethodApplication(ubyte,FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+TType]],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Expr],FSharp.Compiler.Text.Range,FSharp.Compiler.Text.Range,System.String,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+TType],FSharp.Compiler.AccessibilityLogic+AccessorDomain,FSharp.Compiler.TypedTreeOps+Mutates,ubyte,Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[FSharp.Compiler.Infos+MethInfo,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Infos+PropInfo]]],FSharp.Compiler.NameResolution+AfterResolution,FSharp.Compiler.TypedTree+ValUseFlag,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynExpr],FSharp.Compiler.ConstraintSolver+OverallTy,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+DelayedItem]):System.Tuple`2[System.Tuple`3[FSharp.Compiler.TypedTree+Expr,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.MethodCalls+CallerNamedArg`1[FSharp.Compiler.TypedTree+Expr]],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+DelayedItem]],FSharp.Compiler.CheckExpressions+UnscopedTyparEnv] (FullOpts)
           9 (0.93 % of base) : 17230.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolation>g__getFormatAndCloseBrace|434_1(byref):System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationFormatClauseSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken]:this (FullOpts)
           8 (1.61 % of base) : 17234.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolation>g__getInterpolationCloseToken|434_2(Microsoft.CodeAnalysis.GreenNode,byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)

Top method improvements (bytes):
         -93 (-2.94 % of base) : 13406.dasm - Microsoft.ML.Data.SchemaDefinition:Create(System.Type,int):Microsoft.ML.Data.SchemaDefinition (FullOpts)
         -45 (-0.69 % of base) : 972.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
         -36 (-42.86 % of base) : 7022.dasm - System.Boolean:Equals(System.Object):ubyte:this (FullOpts)
         -36 (-42.86 % of base) : 6712.dasm - System.Byte:Equals(System.Object):ubyte:this (FullOpts)
         -35 (-44.30 % of base) : 8852.dasm - System.Int32:Equals(System.Object):ubyte:this (FullOpts)
         -28 (-1.59 % of base) : 19048.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindArgumentAndName(Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Syntax.NameColonSyntax,ubyte):this (FullOpts)
         -17 (-0.80 % of base) : 19037.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetSpecialType(byte):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (FullOpts)
         -16 (-1.79 % of base) : 15826.dasm - Roslyn.Utilities.CommandLineUtilities:SplitCommandLineIntoArguments(System.ReadOnlySpan`1[ushort],ubyte,System.Text.StringBuilder,System.Collections.Generic.List`1[System.String],byref) (FullOpts)
         -16 (-7.17 % of base) : 812.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
         -15 (-0.54 % of base) : 19994.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
         -14 (-6.90 % of base) : 21390.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckConstantBounds(byte,Microsoft.CodeAnalysis.ConstantValue,byref):ubyte (FullOpts)
         -14 (-0.46 % of base) : 31865.dasm - System.Management.Automation.Adapter:FindBestMethodImpl(System.Management.Automation.MethodInformation[],System.Management.Automation.PSMethodInvocationConstraints,ubyte,System.Object[],byref,byref,byref):System.Management.Automation.MethodInformation (FullOpts)
         -13 (-1.50 % of base) : 17455.dasm - Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString:FromSource(System.String):Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString (FullOpts)
         -13 (-1.51 % of base) : 12095.dasm - SixLabors.ImageSharp.Compression.Zlib.DeflaterHuffman+Tree:BuildLength(System.ReadOnlySpan`1[int]):this (FullOpts)
         -11 (-5.02 % of base) : 18490.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
         -10 (-0.40 % of base) : 20925.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourcePropertySymbolBase:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
          -8 (-3.46 % of base) : 19804.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:this (FullOpts)
          -7 (-0.52 % of base) : 32658.dasm - System.Management.Automation.PowerShell:CoreInvoke[System.__Canon,System.__Canon](System.Management.Automation.PSDataCollection`1[System.__Canon],System.Management.Automation.PSDataCollection`1[System.__Canon],System.Management.Automation.PSInvocationSettings):this (FullOpts)
          -7 (-1.00 % of base) : 472.dasm - System.Text.Ascii:GetIndexOfFirstNonAsciiByte_Vector(ulong,ulong):ulong (FullOpts)
          -6 (-0.62 % of base) : 16485.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseCommaSeparatedSyntaxList[System.__Canon](byref,ushort,System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte],System.Func`2[System.__Canon,System.__Canon],Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon],ubyte,ubyte,ubyte):Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:this (FullOpts)

Top method regressions (percentages):
          29 (4.82 % of base) : 17244.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolatedStringToken>g__getCloseQuote|428_5(byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
          19 (4.60 % of base) : 19490.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:SetUpdatedSymbol(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)
           2 (3.23 % of base) : 14665.dasm - System.Net.Http.HttpConnectionPool:GetSslOptionsForRequest(System.Net.Http.HttpRequestMessage):System.Net.Security.SslClientAuthenticationOptions:this (FullOpts)
          48 (3.07 % of base) : 23557.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass+LocalState,System.__Canon]:VisitIsPatternExpression(Microsoft.CodeAnalysis.CSharp.BoundIsPatternExpression):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
          16 (2.99 % of base) : 17191.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolatedStringToken>g__getOpenQuote|428_1(byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
           8 (2.86 % of base) : 15209.dasm - System.Net.Http.Headers.BaseHeaderParser:TryParseValue(System.String,System.Object,byref,byref):ubyte:this (FullOpts)
           3 (2.86 % of base) : 15413.dasm - System.Net.Http.HttpConnection+HttpContentReadStream:Dispose(ubyte):this (FullOpts)
          27 (2.78 % of base) : 30373.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
          89 (2.61 % of base) : 14058.dasm - Microsoft.ML.Internal.Utilities.VBufferUtils:ApplyInto[float,float,float](byref,byref,byref,System.Func`4[int,float,float,float]) (FullOpts)
           2 (2.30 % of base) : 31155.dasm - System.Management.Automation.LocationGlobber:IsProviderDirectPath(System.String):ubyte (FullOpts)
           3 (2.24 % of base) : 31416.dasm - System.Management.Automation.CompiledScriptBlockData:Compile(ubyte):ubyte:this (FullOpts)
          20 (2.16 % of base) : 12201.dasm - SixLabors.ImageSharp.Processing.Processors.Quantization.PaletteQuantizer:CreatePixelSpecificQuantizer[SixLabors.ImageSharp.PixelFormats.Rgba32](SixLabors.ImageSharp.Configuration,SixLabors.ImageSharp.Processing.Processors.Quantization.QuantizerOptions):SixLabors.ImageSharp.Processing.Processors.Quantization.IQuantizer`1[SixLabors.ImageSharp.PixelFormats.Rgba32]:this (FullOpts)
          30 (1.96 % of base) : 7397.dasm - FSharp.Compiler.LexFilter:rulesForBothSoftWhiteAndHardWhite$cont@2481(FSharp.Compiler.LexFilter+LexFilterImpl,FSharp.Compiler.LexFilter+TokenTup,ubyte,FSharp.Compiler.LexFilter+TokenTup,Microsoft.FSharp.Core.Unit) (FullOpts)
           3 (1.84 % of base) : 21828.dasm - Microsoft.CodeAnalysis.CSharp.Binder:WithCheckedOrUncheckedRegion(ubyte):Microsoft.CodeAnalysis.CSharp.Binder:this (FullOpts)
          21 (1.83 % of base) : 17220.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseInterpolation(Microsoft.CodeAnalysis.CSharp.CSharpParseOptions,System.String,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer+Interpolation,int):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationSyntax (FullOpts)
           8 (1.61 % of base) : 17234.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolation>g__getInterpolationCloseToken|434_2(Microsoft.CodeAnalysis.GreenNode,byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
           3 (1.42 % of base) : 32264.dasm - System.Collections.Generic.SortedSet`1+Enumerator[System.Collections.Generic.KeyValuePair`2[int,System.__Canon]]:Initialize():this (FullOpts)
          34 (1.20 % of base) : 18204.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (FullOpts)
          11 (0.96 % of base) : 23294.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitObjectElementInitializer>g__visitMemberInitializer|169_0(int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundAssignmentOperator,ubyte):System.Action`2[int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]:this (FullOpts)
           9 (0.93 % of base) : 17230.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolation>g__getFormatAndCloseBrace|434_1(byref):System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationFormatClauseSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken]:this (FullOpts)

Top method improvements (percentages):
         -35 (-44.30 % of base) : 8852.dasm - System.Int32:Equals(System.Object):ubyte:this (FullOpts)
         -36 (-42.86 % of base) : 7022.dasm - System.Boolean:Equals(System.Object):ubyte:this (FullOpts)
         -36 (-42.86 % of base) : 6712.dasm - System.Byte:Equals(System.Object):ubyte:this (FullOpts)
         -16 (-7.17 % of base) : 812.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
         -14 (-6.90 % of base) : 21390.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckConstantBounds(byte,Microsoft.CodeAnalysis.ConstantValue,byref):ubyte (FullOpts)
         -11 (-5.02 % of base) : 18490.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
          -8 (-3.46 % of base) : 19804.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:this (FullOpts)
          -5 (-3.12 % of base) : 15336.dasm - System.Globalization.CultureData:GetSeparator(System.String,System.String):System.String (FullOpts)
         -93 (-2.94 % of base) : 13406.dasm - Microsoft.ML.Data.SchemaDefinition:Create(System.Type,int):Microsoft.ML.Data.SchemaDefinition (FullOpts)
          -4 (-1.96 % of base) : 824.dasm - System.Number:RoundNumber(byref,int,ubyte) (FullOpts)
         -16 (-1.79 % of base) : 15826.dasm - Roslyn.Utilities.CommandLineUtilities:SplitCommandLineIntoArguments(System.ReadOnlySpan`1[ushort],ubyte,System.Text.StringBuilder,System.Collections.Generic.List`1[System.String],byref) (FullOpts)
         -28 (-1.59 % of base) : 19048.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindArgumentAndName(Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Syntax.NameColonSyntax,ubyte):this (FullOpts)
         -13 (-1.51 % of base) : 12095.dasm - SixLabors.ImageSharp.Compression.Zlib.DeflaterHuffman+Tree:BuildLength(System.ReadOnlySpan`1[int]):this (FullOpts)
         -13 (-1.50 % of base) : 17455.dasm - Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString:FromSource(System.String):Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString (FullOpts)
          -5 (-1.34 % of base) : 25134.dasm - System.Collections.Immutable.ImmutableList`1+Enumerator[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:ResetStack():this (FullOpts)
          -2 (-1.28 % of base) : 3178.dasm - System.Globalization.Ordinal:CompareStringIgnoreCase(byref,int,byref,int):int (FullOpts)
          -5 (-1.20 % of base) : 7704.dasm - System.Xml.Linq.XContainer+<GetDescendants>d__38:MoveNext():ubyte:this (FullOpts)
          -4 (-1.20 % of base) : 10021.dasm - FSharp.Compiler.Syntax.PrettyNaming:TryChopPropertyName(System.String):Microsoft.FSharp.Core.FSharpOption`1[System.String] (FullOpts)
          -7 (-1.00 % of base) : 472.dasm - System.Text.Ascii:GetIndexOfFirstNonAsciiByte_Vector(ulong,ulong):ulong (FullOpts)
          -5 (-0.96 % of base) : 23797.dasm - Microsoft.CodeAnalysis.CSharp.LocalBinderFactory:FindLocalFunction(Microsoft.CodeAnalysis.CSharp.Syntax.LocalFunctionStatementSyntax,Microsoft.CodeAnalysis.CSharp.Binder):Microsoft.CodeAnalysis.CSharp.Symbols.LocalFunctionSymbol (FullOpts)


smoke_tests.nativeaot.linux.x64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 4234485 (overridden on cmd)
Total bytes of diff: 4231395 (overridden on cmd)
Total bytes of delta: -3090 (-0.07 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          27 : 24418.dasm (3.12 % of base)
          27 : 27122.dasm (3.12 % of base)
          27 : 6607.dasm (3.12 % of base)
          27 : 19678.dasm (3.12 % of base)
          21 : 7256.dasm (4.70 % of base)
          21 : 24086.dasm (4.70 % of base)
          21 : 26791.dasm (4.70 % of base)
          21 : 19354.dasm (4.70 % of base)
          15 : 12577.dasm (1.30 % of base)
           7 : 3231.dasm (1.09 % of base)
           7 : 3239.dasm (0.43 % of base)
           6 : 15405.dasm (5.66 % of base)
           3 : 14235.dasm (0.93 % of base)
           3 : 20266.dasm (0.18 % of base)
           3 : 3598.dasm (5.08 % of base)
           3 : 7332.dasm (1.43 % of base)
           3 : 11270.dasm (2.59 % of base)
           3 : 14950.dasm (4.11 % of base)
           3 : 21331.dasm (2.36 % of base)
           2 : 7846.dasm (0.99 % of base)

Top file improvements (bytes):
         -51 : 23645.dasm (-40.80 % of base)
         -51 : 23659.dasm (-40.80 % of base)
         -51 : 26347.dasm (-40.80 % of base)
         -51 : 26358.dasm (-40.80 % of base)
         -51 : 4260.dasm (-42.86 % of base)
         -51 : 18908.dasm (-40.80 % of base)
         -51 : 18914.dasm (-40.80 % of base)
         -51 : 4382.dasm (-41.80 % of base)
         -50 : 820.dasm (-56.82 % of base)
         -50 : 832.dasm (-56.82 % of base)
         -48 : 18061.dasm (-45.28 % of base)
         -48 : 20011.dasm (-48.98 % of base)
         -48 : 25512.dasm (-45.28 % of base)
         -48 : 733.dasm (-30.57 % of base)
         -48 : 22800.dasm (-45.28 % of base)
         -48 : 592.dasm (-45.28 % of base)
         -48 : 686.dasm (-45.28 % of base)
         -47 : 880.dasm (-44.76 % of base)
         -47 : 701.dasm (-50.00 % of base)
         -46 : 1170.dasm (-50.55 % of base)

69 total files with Code Size differences (48 improved, 21 regressed), 16 unchanged.

Top method regressions (bytes):
          27 (3.12 % of base) : 24418.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
          27 (3.12 % of base) : 27122.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
          27 (3.12 % of base) : 6607.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
          27 (3.12 % of base) : 19678.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
          21 (4.70 % of base) : 7256.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
          21 (4.70 % of base) : 24086.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
          21 (4.70 % of base) : 26791.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
          21 (4.70 % of base) : 19354.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
          15 (1.30 % of base) : 12577.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (FullOpts)
           7 (0.43 % of base) : 3239.dasm - System.Text.UTF32Encoding:GetBytes(ulong,int,ulong,int,System.Text.EncoderNLS):int:this (FullOpts)
           7 (1.09 % of base) : 3231.dasm - System.TimeZoneInfo:TryGetEndOfDstIfYearStartWithDst(int,System.TimeSpan,System.TimeZoneInfo,byref):ubyte (FullOpts)
           6 (5.66 % of base) : 15405.dasm - System.Threading.PortableThreadPool:RemoveWaitThread(System.Threading.PortableThreadPool+WaitThread):this (FullOpts)
           3 (1.43 % of base) : 7332.dasm - Internal.TypeSystem.TypeSystemContext:GetArrayTypesCache(ubyte,int):Internal.TypeSystem.TypeSystemContext+RuntimeTypeHandleToParameterTypeRuntimeTypeHandleHashtable (FullOpts)
           3 (5.08 % of base) : 3598.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:set_SupportsRandomAccess(ubyte):this (FullOpts)
           3 (0.18 % of base) : 20266.dasm - ReflectionTest+TestStackTraces:<Run>g__Check|3_0(System.String,System.String,System.String,ubyte,System.String) (FullOpts)
           3 (0.93 % of base) : 14235.dasm - System.Threading.Tasks.Task:FinishSlow(ubyte):this (FullOpts)
           3 (2.36 % of base) : 21331.dasm - System.Threading.Tasks.Task`1[System.__Canon]:.ctor(ubyte,System.__Canon,int,System.Threading.CancellationToken):this (FullOpts)
           3 (2.59 % of base) : 11270.dasm - System.Threading.Tasks.Task`1[System.Threading.Tasks.VoidTaskResult]:.ctor(ubyte,System.Threading.Tasks.VoidTaskResult,int,System.Threading.CancellationToken):this (FullOpts)
           3 (4.11 % of base) : 14950.dasm - ThreadTest+Resurrector:Finalize():this (FullOpts)
           2 (0.99 % of base) : 7846.dasm - Internal.Runtime.CompilerServices.RuntimeSignature:Equals(Internal.Runtime.CompilerServices.RuntimeSignature):ubyte:this (FullOpts)

Top method improvements (bytes):
         -51 (-40.80 % of base) : 23645.dasm - System.Double:Equals(System.Object):ubyte:this (FullOpts)
         -51 (-40.80 % of base) : 26347.dasm - System.Double:Equals(System.Object):ubyte:this (FullOpts)
         -51 (-40.80 % of base) : 18908.dasm - System.Double:Equals(System.Object):ubyte:this (FullOpts)
         -51 (-41.80 % of base) : 4382.dasm - System.Double:Equals(System.Object):ubyte:this (FullOpts)
         -51 (-40.80 % of base) : 23659.dasm - System.Single:Equals(System.Object):ubyte:this (FullOpts)
         -51 (-40.80 % of base) : 26358.dasm - System.Single:Equals(System.Object):ubyte:this (FullOpts)
         -51 (-42.86 % of base) : 4260.dasm - System.Single:Equals(System.Object):ubyte:this (FullOpts)
         -51 (-40.80 % of base) : 18914.dasm - System.Single:Equals(System.Object):ubyte:this (FullOpts)
         -50 (-56.82 % of base) : 820.dasm - System.RuntimeFieldHandle:Equals(System.Object):ubyte:this (FullOpts)
         -50 (-56.82 % of base) : 832.dasm - System.RuntimeMethodHandle:Equals(System.Object):ubyte:this (FullOpts)
         -48 (-45.28 % of base) : 18061.dasm - Internal.Reflection.Core.QScopeDefinition:Equals(System.Object):ubyte:this (FullOpts)
         -48 (-45.28 % of base) : 25512.dasm - Internal.Reflection.Core.QScopeDefinition:Equals(System.Object):ubyte:this (FullOpts)
         -48 (-45.28 % of base) : 22800.dasm - Internal.Reflection.Core.QScopeDefinition:Equals(System.Object):ubyte:this (FullOpts)
         -48 (-45.28 % of base) : 686.dasm - Internal.Reflection.Core.QScopeDefinition:Equals(System.Object):ubyte:this (FullOpts)
         -48 (-30.57 % of base) : 733.dasm - Internal.Runtime.CompilerServices.OpenMethodResolver:Equals(System.Object):ubyte:this (FullOpts)
         -48 (-45.28 % of base) : 592.dasm - System.Reflection.Runtime.General.QHandle:Equals(System.Object):ubyte:this (FullOpts)
         -48 (-48.98 % of base) : 20011.dasm - System.Runtime.Serialization.StreamingContext:Equals(System.Object):ubyte:this (FullOpts)
         -47 (-44.76 % of base) : 880.dasm - Internal.Runtime.CompilerServices.FunctionPointerOps+GenericMethodDescriptorInfo:Equals(System.Object):ubyte:this (FullOpts)
         -47 (-50.00 % of base) : 701.dasm - System.TypeUnificationKey:Equals(System.Object):ubyte:this (FullOpts)
         -46 (-50.55 % of base) : 24770.dasm - System.Boolean:Equals(System.Object):ubyte:this (FullOpts)

Top method regressions (percentages):
           6 (5.66 % of base) : 15405.dasm - System.Threading.PortableThreadPool:RemoveWaitThread(System.Threading.PortableThreadPool+WaitThread):this (FullOpts)
           3 (5.08 % of base) : 3598.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:set_SupportsRandomAccess(ubyte):this (FullOpts)
          21 (4.70 % of base) : 7256.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
          21 (4.70 % of base) : 24086.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
          21 (4.70 % of base) : 26791.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
          21 (4.70 % of base) : 19354.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
           3 (4.11 % of base) : 14950.dasm - ThreadTest+Resurrector:Finalize():this (FullOpts)
          27 (3.12 % of base) : 24418.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
          27 (3.12 % of base) : 27122.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
          27 (3.12 % of base) : 6607.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
          27 (3.12 % of base) : 19678.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
           3 (2.59 % of base) : 11270.dasm - System.Threading.Tasks.Task`1[System.Threading.Tasks.VoidTaskResult]:.ctor(ubyte,System.Threading.Tasks.VoidTaskResult,int,System.Threading.CancellationToken):this (FullOpts)
           3 (2.36 % of base) : 21331.dasm - System.Threading.Tasks.Task`1[System.__Canon]:.ctor(ubyte,System.__Canon,int,System.Threading.CancellationToken):this (FullOpts)
           3 (1.43 % of base) : 7332.dasm - Internal.TypeSystem.TypeSystemContext:GetArrayTypesCache(ubyte,int):Internal.TypeSystem.TypeSystemContext+RuntimeTypeHandleToParameterTypeRuntimeTypeHandleHashtable (FullOpts)
          15 (1.30 % of base) : 12577.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (FullOpts)
           7 (1.09 % of base) : 3231.dasm - System.TimeZoneInfo:TryGetEndOfDstIfYearStartWithDst(int,System.TimeSpan,System.TimeZoneInfo,byref):ubyte (FullOpts)
           2 (0.99 % of base) : 7846.dasm - Internal.Runtime.CompilerServices.RuntimeSignature:Equals(Internal.Runtime.CompilerServices.RuntimeSignature):ubyte:this (FullOpts)
           3 (0.93 % of base) : 14235.dasm - System.Threading.Tasks.Task:FinishSlow(ubyte):this (FullOpts)
           7 (0.43 % of base) : 3239.dasm - System.Text.UTF32Encoding:GetBytes(ulong,int,ulong,int,System.Text.EncoderNLS):int:this (FullOpts)
           1 (0.40 % of base) : 5854.dasm - Internal.Runtime.MethodTable:SetGenericComposition(long):this (FullOpts)

Top method improvements (percentages):
         -50 (-56.82 % of base) : 820.dasm - System.RuntimeFieldHandle:Equals(System.Object):ubyte:this (FullOpts)
         -50 (-56.82 % of base) : 832.dasm - System.RuntimeMethodHandle:Equals(System.Object):ubyte:this (FullOpts)
         -45 (-52.33 % of base) : 22140.dasm - System.Int32:Equals(System.Object):ubyte:this (FullOpts)
         -45 (-52.33 % of base) : 24849.dasm - System.Int32:Equals(System.Object):ubyte:this (FullOpts)
         -45 (-52.33 % of base) : 145.dasm - System.Int32:Equals(System.Object):ubyte:this (FullOpts)
         -45 (-52.33 % of base) : 17402.dasm - System.Int32:Equals(System.Object):ubyte:this (FullOpts)
         -45 (-52.33 % of base) : 17957.dasm - System.UInt32:Equals(System.Object):ubyte:this (FullOpts)
         -45 (-52.33 % of base) : 22651.dasm - System.UInt32:Equals(System.Object):ubyte:this (FullOpts)
         -45 (-52.33 % of base) : 25440.dasm - System.UInt32:Equals(System.Object):ubyte:this (FullOpts)
         -45 (-52.33 % of base) : 1220.dasm - System.UInt32:Equals(System.Object):ubyte:this (FullOpts)
         -46 (-50.55 % of base) : 24770.dasm - System.Boolean:Equals(System.Object):ubyte:this (FullOpts)
         -46 (-50.55 % of base) : 22061.dasm - System.Boolean:Equals(System.Object):ubyte:this (FullOpts)
         -46 (-50.55 % of base) : 17385.dasm - System.Byte:Equals(System.Object):ubyte:this (FullOpts)
         -46 (-50.55 % of base) : 1924.dasm - System.Byte:Equals(System.Object):ubyte:this (FullOpts)
         -46 (-50.55 % of base) : 24834.dasm - System.Byte:Equals(System.Object):ubyte:this (FullOpts)
         -46 (-50.55 % of base) : 22129.dasm - System.Byte:Equals(System.Object):ubyte:this (FullOpts)
         -46 (-50.55 % of base) : 24830.dasm - System.Char:Equals(System.Object):ubyte:this (FullOpts)
         -46 (-50.55 % of base) : 17380.dasm - System.Char:Equals(System.Object):ubyte:this (FullOpts)
         -46 (-50.55 % of base) : 1809.dasm - System.Char:Equals(System.Object):ubyte:this (FullOpts)
         -46 (-50.55 % of base) : 22118.dasm - System.Char:Equals(System.Object):ubyte:this (FullOpts)



windows arm64

Diffs are based on 2,340,158 contexts (938,449 MinOpts, 1,401,709 FullOpts).

MISSED contexts: base: 8 (0.00%), diff: 959 (0.04%)

Overall (-72,576 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.arm64.checked.mch 10,957,840 -516
benchmarks.run_pgo.windows.arm64.checked.mch 45,445,732 -5,720
benchmarks.run_tiered.windows.arm64.checked.mch 15,585,968 -448
coreclr_tests.run.windows.arm64.checked.mch 495,087,516 -3,976
libraries.crossgen2.windows.arm64.checked.mch 59,070,348 -1,324
libraries.pmi.windows.arm64.checked.mch 79,830,948 -3,216
libraries_tests.run.windows.arm64.Release.mch 329,448,404 -51,336
librariestestsnotieredcompilation.run.windows.arm64.Release.mch 171,564,424 -3,808
realworld.run.windows.arm64.checked.mch 15,902,520 -516
smoke_tests.nativeaot.windows.arm64.checked.mch 3,970,716 -1,716

FullOpts (-72,576 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.arm64.checked.mch 10,957,304 -516
benchmarks.run_pgo.windows.arm64.checked.mch 29,434,336 -5,720
benchmarks.run_tiered.windows.arm64.checked.mch 4,408,780 -448
coreclr_tests.run.windows.arm64.checked.mch 156,398,412 -3,976
libraries.crossgen2.windows.arm64.checked.mch 59,068,712 -1,324
libraries.pmi.windows.arm64.checked.mch 79,710,964 -3,216
libraries_tests.run.windows.arm64.Release.mch 126,014,808 -51,336
librariestestsnotieredcompilation.run.windows.arm64.Release.mch 158,410,676 -3,808
realworld.run.windows.arm64.checked.mch 15,338,540 -516
smoke_tests.nativeaot.windows.arm64.checked.mch 3,969,704 -1,716

Example diffs

benchmarks.run.windows.arm64.checked.mch

-36 (-21.95%) : 7035.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan1[uint]):int (FullOpts)

@@ -11,12 +11,14 @@ ;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]> ; V02 loc0 [V02,T00] ( 7, 24.50) int -> x4 ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T01] ( 6, 20 ) int -> x5 "dup spill" -; V05 tmp2 [V05,T05] ( 3, 5.50) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP -; V06 tmp3 [V06,T04] ( 5, 7 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP -; V07 tmp4 [V07,T06] ( 3, 5.50) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP -; V08 tmp5 [V08,T03] ( 6, 7.50) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP -; V09 cse0 [V09,T02] ( 6, 13.50) long -> x6 multi-def "CSE - aggressive"
+; V04 tmp1 [V04,T01] ( 2, 16 ) int -> x4 "dup spill" +; V05 tmp2 [V05,T07] ( 2, 5 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP +; V06 tmp3 [V06,T04] ( 4, 6.50) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP +; V07 tmp4 [V07,T08] ( 2, 5 ) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP +; V08 tmp5 [V08,T03] ( 5, 7 ) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP +; V09 cse0 [V09,T05] ( 3, 8.50) int -> x6 "CSE - aggressive" +; V10 cse1 [V10,T06] ( 3, 8.50) int -> x5 "CSE - aggressive" +; V11 cse2 [V11,T02] ( 3, 12 ) long -> x5 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -33,51 +35,39 @@ G_M264_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs -[x0 x2] cmp w1, w3 blt G_M264_IG11
- b G_M264_IG09
+ b G_M264_IG07
;; size=12 bbWeight=0.50 PerfScore 1.25 G_M264_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref ; byrRegs +[x0 x2] sxtw w4, w3 ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M264_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
- sub w5, w4, #1 - sxtw w4, w5 - tbnz w4, #31, G_M264_IG06
+ sub w4, w4, #1 + tbnz w4, #31, G_M264_IG09
cmp w4, w1 bhs G_M264_IG13
- ubfiz x6, x4, #2, #32 - ldr w7, [x0, x6]
+ ubfiz x5, x4, #2, #32 + ldr w6, [x0, x5]
cmp w4, w3 bhs G_M264_IG13
- ldr w6, [x2, x6] - cmp w7, w6
+ ldr w5, [x2, x5] + cmp w6, w5
beq G_M264_IG05
- ;; size=48 bbWeight=4 PerfScore 54.00 -G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz - tbz w5, #31, G_M264_IG08 - mov w0, wzr - ; byrRegs -[x0]
+ ;; size=44 bbWeight=4 PerfScore 52.00 +G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ; byrRegs -[x0 x2] + cmp w5, w6 + bhi G_M264_IG11
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M264_IG07: ; bbWeight=0.50, epilog, nogc, extend
+G_M264_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov w0, #1 + ;; size=4 bbWeight=0.50 PerfScore 0.25 +G_M264_IG08: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M264_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, gcvars, byref, isz - ; byrRegs +[x0] - cmp w5, w1 - bhs G_M264_IG13 - ubfiz x6, x5, #2, #32 - ldr w0, [x0, x6] - ; byrRegs -[x0] - cmp w5, w3 - bhs G_M264_IG13 - ldr w1, [x2, x6] - cmp w0, w1 - blo G_M264_IG11 - ;; size=36 bbWeight=0.50 PerfScore 5.75 -G_M264_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; byrRegs -[x2] - mov w0, #1
+G_M264_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + mov w0, wzr
;; size=4 bbWeight=0.50 PerfScore 0.25 G_M264_IG10: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x10 @@ -96,7 +86,7 @@ G_M264_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, brk_windows #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 164, prolog size 8, PerfScore 68.50, instruction count 41, allocated bytes for code 164 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
+; Total bytes of code 128, prolog size 8, PerfScore 61.00, instruction count 32, allocated bytes for code 128 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
; ============================================================ Unwind Info: @@ -107,7 +97,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
+ Function Length : 32 (0x00020) Actual length = 128 (0x000080)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-48 (-7.64%) : 16412.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan1[ushort],System.Span1[ubyte],byref,byref):this (FullOpts)

@@ -9,12 +9,12 @@ ; Final local variable assignments ; ; V00 this [V00,T10] ( 6, 6 ) ref -> x0 this class-hnd single-def <System.Xml.Base64Decoder>
-; V01 arg1 [V01 ] ( 20, 43 ) struct (16) [fp+0x10] do-not-enreg[XSA] multireg-arg addr-exposed ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
+; V01 arg1 [V01 ] ( 19, 42.50) struct (16) [fp+0x10] do-not-enreg[XSA] multireg-arg addr-exposed ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
;* V02 arg2 [V02 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ubyte]> ; V03 arg3 [V03,T13] ( 3, 3 ) byref -> x5 single-def ; V04 arg4 [V04,T14] ( 3, 3 ) byref -> x6 single-def ; V05 loc0 [V05,T06] ( 6, 12 ) int -> registers
-; V06 loc1 [V06,T00] ( 19, 56 ) int -> registers
+; V06 loc1 [V06,T00] ( 18, 55.50) int -> registers
; V07 loc2 [V07,T11] ( 5, 8 ) int -> x7 ; V08 loc3 [V08,T04] ( 8, 12.50) int -> x8 ;* V09 loc4 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ubyte]> @@ -36,7 +36,7 @@ ;* V25 tmp13 [V25 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]> ;* V26 tmp14 [V26 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]> ; V27 tmp15 [V27 ] ( 9, 15.50) byref -> [fp+0x10] do-not-enreg[X] addr-exposed single-def "field V01._reference (fldOffset=0x0)" P-DEP
-; V28 tmp16 [V28 ] ( 15, 29.50) int -> [fp+0x18] do-not-enreg[X] addr-exposed single-def "field V01._length (fldOffset=0x8)" P-DEP
+; V28 tmp16 [V28 ] ( 14, 29 ) int -> [fp+0x18] do-not-enreg[X] addr-exposed single-def "field V01._length (fldOffset=0x8)" P-DEP
; V29 tmp17 [V29,T15] ( 2, 3 ) byref -> x3 single-def "field V02._reference (fldOffset=0x0)" P-INDEP ; V30 tmp18 [V30,T09] ( 3, 7 ) int -> x4 single-def "field V02._length (fldOffset=0x8)" P-INDEP ; V31 tmp19 [V31,T16] ( 2, 3 ) byref -> x9 single-def "field V09._reference (fldOffset=0x0)" P-INDEP @@ -84,7 +84,7 @@ G_M19254_IG03: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0268 {x3 x5 x bhs G_M19254_IG06 ldr w10, [fp, #0x18] // [V28 tmp16] cmp w2, w10
- bhs G_M19254_IG17
+ bhs G_M19254_IG12
ldr x10, [fp, #0x10] // [V27 tmp15] ; byrRegs +[x10] ldrh w10, [x10, w2, UXTW #2] @@ -100,10 +100,10 @@ G_M19254_IG03: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0268 {x3 x5 x ;; size=60 bbWeight=4 PerfScore 70.00 G_M19254_IG04: ; bbWeight=2, gcrefRegs=0001 {x0}, byrefRegs=0268 {x3 x5 x6 x9}, byref, isz cmp w10, #123
- bge G_M19254_IG18
+ bge G_M19254_IG13
ldrb w10, [x9, w10, UXTW #2] cmp w10, #255
- beq G_M19254_IG18
+ beq G_M19254_IG13
orr w7, w10, w7, LSL #6 add w8, w8, #6 cmp w8, #8 @@ -114,7 +114,7 @@ G_M19254_IG04: ; bbWeight=2, gcrefRegs=0001 {x0}, byrefRegs=0268 {x3 x5 x strb w11, [x3, w1, UXTW #2] cmp w10, w4 mov w1, w10
- beq G_M19254_IG16
+ beq G_M19254_IG10
;; size=64 bbWeight=2 PerfScore 27.00 G_M19254_IG05: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0268 {x3 x5 x6 x9}, byref, isz ldr w10, [fp, #0x18] // [V28 tmp16] @@ -125,26 +125,26 @@ G_M19254_IG06: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0060 {x5 x ; byrRegs -[x3 x9] ldr w3, [fp, #0x18] // [V28 tmp16] cmp w2, w3
- bhs G_M19254_IG15
+ bhs G_M19254_IG10
ldr w3, [fp, #0x18] // [V28 tmp16] cmp w2, w3
- bhs G_M19254_IG17
+ bhs G_M19254_IG12
ldr x3, [fp, #0x10] // [V27 tmp15] ; byrRegs +[x3] ldrh w3, [x3, w2, UXTW #2] ; byrRegs -[x3] cmp w3, #61
- bne G_M19254_IG14
+ bne G_M19254_IG10
mov w8, wzr ;; size=44 bbWeight=0.50 PerfScore 7.00 G_M19254_IG07: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0060 {x5 x6}, byref, isz add w2, w2, #1 ldr w3, [fp, #0x18] // [V28 tmp16] cmp w2, w3
- bhs G_M19254_IG08
+ bhs G_M19254_IG10
ldr w3, [fp, #0x18] // [V28 tmp16] cmp w2, w3
- bhs G_M19254_IG17
+ bhs G_M19254_IG12
ldr x3, [fp, #0x10] // [V27 tmp15] ; byrRegs +[x3] ldrh w3, [x3, w2, UXTW #2] @@ -152,66 +152,44 @@ G_M19254_IG07: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0060 {x5 x6}, cmp w3, #61 beq G_M19254_IG07 ;; size=44 bbWeight=4 PerfScore 56.00
-G_M19254_IG08: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0060 {x5 x6}, byref, isz - ldr w3, [fp, #0x18] // [V28 tmp16] - cmp w2, w3 - bhs G_M19254_IG13
+G_M19254_IG08: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0060 {x5 x6}, byref
movz x11, #0xD1FFAB1E movk x11, #0xD1FFAB1E LSL #16 movk x11, #0xD1FFAB1E LSL #32
- ;; size=24 bbWeight=0.50 PerfScore 2.50
+ ;; size=12 bbWeight=0.50 PerfScore 0.75
G_M19254_IG09: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0060 {x5 x6}, byref, isz add w3, w2, #1 ldr w4, [fp, #0x18] // [V28 tmp16] cmp w2, w4
- bhs G_M19254_IG17
+ bhs G_M19254_IG12
ldr x4, [fp, #0x10] // [V27 tmp15] ; byrRegs +[x4] ldrh w2, [x4, w2, UXTW #2] ldrb w2, [x11, w2, UXTW #2]
- tbz w2, #0, G_M19254_IG19
+ tbz w2, #0, G_M19254_IG14
ldr w2, [fp, #0x18] // [V28 tmp16] cmp w3, w2
- blo G_M19254_IG12 - ;; size=44 bbWeight=4 PerfScore 66.00
+ mov w2, w3 + blo G_M19254_IG09 + ;; size=48 bbWeight=4 PerfScore 68.00
G_M19254_IG10: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0060 {x5 x6}, byref ; byrRegs -[x4] stp w7, w8, [x0, #0x1C] str w1, [x6]
- str w3, [x5]
+ str w2, [x5]
;; size=12 bbWeight=1 PerfScore 3.00 G_M19254_IG11: ; bbWeight=1, epilog, nogc, extend ldp x19, x20, [sp, #0x20] ldp fp, lr, [sp], #0x30 ret lr ;; size=12 bbWeight=1 PerfScore 3.00
-G_M19254_IG12: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0060 {x5 x6}, gcvars, byref - mov w2, w3 - b G_M19254_IG09 - ;; size=8 bbWeight=2 PerfScore 3.00 -G_M19254_IG13: ; bbWeight=0.25, gcrefRegs=0001 {x0}, byrefRegs=0060 {x5 x6}, byref - mov w3, w2 - b G_M19254_IG10 - ;; size=8 bbWeight=0.25 PerfScore 0.38 -G_M19254_IG14: ; bbWeight=0.25, gcrefRegs=0001 {x0}, byrefRegs=0060 {x5 x6}, byref - mov w3, w2 - b G_M19254_IG10 - ;; size=8 bbWeight=0.25 PerfScore 0.38 -G_M19254_IG15: ; bbWeight=0.25, gcrefRegs=0001 {x0}, byrefRegs=0060 {x5 x6}, byref - mov w3, w2 - b G_M19254_IG10 - ;; size=8 bbWeight=0.25 PerfScore 0.38 -G_M19254_IG16: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0060 {x5 x6}, byref - mov w3, w2 - b G_M19254_IG10 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M19254_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M19254_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] ; byrRegs -[x5-x6] bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M19254_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M19254_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for <unknown method> movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -257,7 +235,7 @@ G_M19254_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x0 x20] ; gcr arg pop 0 ;; size=108 bbWeight=0 PerfScore 0.00
-G_M19254_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M19254_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for <unknown method> movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -305,7 +283,7 @@ G_M19254_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_windows #0 ;; size=112 bbWeight=0 PerfScore 0.00
-; Total bytes of code 628, prolog size 16, PerfScore 266.12, instruction count 157, allocated bytes for code 628 (MethodHash=6376b4c9) for method System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (FullOpts)
+; Total bytes of code 580, prolog size 16, PerfScore 260.75, instruction count 145, allocated bytes for code 580 (MethodHash=6376b4c9) for method System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (FullOpts)
; ============================================================ Unwind Info: @@ -316,7 +294,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 157 (0x0009d) Actual length = 628 (0x000274)
+ Function Length : 145 (0x00091) Actual length = 580 (0x000244)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-20 (-7.04%) : 21058.dasm - Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (FullOpts)

@@ -7,20 +7,21 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T05] ( 6, 22 ) int -> x0 -; V01 arg1 [V01,T06] ( 6, 19 ) int -> x19 single-def -; V02 arg2 [V02,T08] ( 5, 11 ) ref -> x20 class-hnd single-def <int[]> -; V03 loc0 [V03,T00] ( 17,112 ) int -> x23 -; V04 loc1 [V04,T01] ( 13,100 ) int -> x1
+; V00 arg0 [V00,T06] ( 6, 22 ) int -> x0 +; V01 arg1 [V01,T07] ( 6, 19 ) int -> x19 single-def +; V02 arg2 [V02,T09] ( 5, 11 ) ref -> x20 class-hnd single-def <int[]> +; V03 loc0 [V03,T00] ( 16,110 ) int -> x23 +; V04 loc1 [V04,T01] ( 10, 94 ) int -> x1
; V05 loc2 [V05,T04] ( 4, 38 ) int -> x3
-; V06 loc3 [V06,T09] ( 4, 8 ) int -> x4
+; V06 loc3 [V06,T10] ( 4, 8 ) int -> x5
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T10] ( 2, 8 ) int -> x5 "Strict ordering of exceptions for Array store" -; V09 tmp2 [V09,T07] ( 2, 16 ) int -> x0 "arg temp" -; V10 cse0 [V10,T11] ( 3, 7 ) long -> x22 hoist "CSE - aggressive" -; V11 cse1 [V11,T12] ( 3, 6 ) long -> x1 "CSE - aggressive" -; V12 cse2 [V12,T02] ( 11, 51 ) byref -> x21 hoist "CSE - aggressive" -; V13 cse3 [V13,T03] ( 7, 46 ) int -> x2 "CSE - aggressive"
+; V08 tmp1 [V08,T11] ( 2, 8 ) int -> x4 "Strict ordering of exceptions for Array store" +; V09 tmp2 [V09,T08] ( 2, 16 ) int -> x0 "arg temp" +; V10 cse0 [V10,T05] ( 3, 34 ) int -> x4 "CSE - aggressive" +; V11 cse1 [V11,T12] ( 3, 7 ) long -> x22 hoist "CSE - aggressive" +; V12 cse2 [V12,T13] ( 3, 6 ) long -> x1 "CSE - aggressive" +; V13 cse3 [V13,T02] ( 10, 49 ) byref -> x21 hoist "CSE - aggressive" +; V14 cse4 [V14,T03] ( 6, 44 ) int -> x2 "CSE - aggressive"
; ; Lcl frame size = 8 @@ -72,7 +73,7 @@ G_M36260_IG08: ; bbWeight=8, gcrefRegs=100000 {x20}, byrefRegs=200000 {x2 ;; size=4 bbWeight=8 PerfScore 4.00 G_M36260_IG09: ; bbWeight=16, gcrefRegs=100000 {x20}, byrefRegs=200000 {x21}, byref, isz cmp w1, w23
- ble G_M36260_IG10
+ ble G_M36260_IG11
cmp w1, w2 bhs G_M36260_IG15 ldr w4, [x21, w1, UXTW #2] @@ -80,17 +81,12 @@ G_M36260_IG09: ; bbWeight=16, gcrefRegs=100000 {x20}, byrefRegs=200000 {x bge G_M36260_IG08 ;; size=28 bbWeight=16 PerfScore 120.00 G_M36260_IG10: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=200000 {x21}, byref, isz
- cmp w23, w1 - bge G_M36260_IG11
cmp w23, w2 bhs G_M36260_IG15
- ldr w4, [x21, w23, UXTW #2] - cmp w1, w2 - bhs G_M36260_IG15 - ldr w5, [x21, w1, UXTW #2] - str w5, [x21, w23, UXTW #2] - str w4, [x21, w1, UXTW #2] - ;; size=40 bbWeight=2 PerfScore 25.00
+ ldr w5, [x21, w23, UXTW #2] + str w4, [x21, w23, UXTW #2] + str w5, [x21, w1, UXTW #2] + ;; size=20 bbWeight=2 PerfScore 13.00
G_M36260_IG11: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=200000 {x21}, byref, isz cmp w23, w1 blt G_M36260_IG06 @@ -101,9 +97,9 @@ G_M36260_IG12: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=200000 {x2 cmp w23, w2 bhs G_M36260_IG15 ubfiz x1, x23, #2, #32
- ldr w4, [x21, x1]
+ ldr w5, [x21, x1]
str w3, [x21, x1]
- str w4, [x21, x22]
+ str w5, [x21, x22]
;; size=24 bbWeight=2 PerfScore 15.00 G_M36260_IG13: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=200000 {x21}, byref sub w1, w23, #1 @@ -134,7 +130,7 @@ G_M36260_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_windows #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 284, prolog size 28, PerfScore 399.00, instruction count 71, allocated bytes for code 284 (MethodHash=1870725b) for method Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (FullOpts)
+; Total bytes of code 264, prolog size 28, PerfScore 387.00, instruction count 66, allocated bytes for code 264 (MethodHash=1870725b) for method Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (FullOpts)
; ============================================================ Unwind Info: @@ -145,7 +141,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 71 (0x00047) Actual length = 284 (0x00011c)
+ Function Length : 66 (0x00042) Actual length = 264 (0x000108)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+4 (+1.11%) : 15942.dasm - System.Enum+<>c__631[uint]:<FormatNumberAsHex>b__63_0(System.Span1[ushort],long):this (FullOpts)

@@ -10,32 +10,32 @@ ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Enum+<>c__63`1[uint]> ;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Span`1[ushort]>
-; V02 arg2 [V02,T02] ( 3, 2.50) long -> x3 single-def
+; V02 arg2 [V02,T01] ( 3, 2.50) long -> x3 single-def
;* V03 loc0 [V03 ] ( 0, 0 ) ubyte -> zero-ref ;* V04 loc1 [V04,T17] ( 0, 0 ) int -> zero-ref ld-addr-op ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V06 tmp1 [V06,T18] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V07 tmp2 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ; V08 tmp3 [V08,T08] ( 5, 2.50) int -> x0 "Inline stloc first use temp"
-; V09 tmp4 [V09,T04] ( 3, 3 ) ubyte -> x2 "Inlining Arg"
+; V09 tmp4 [V09,T03] ( 3, 3 ) ubyte -> x2 "Inlining Arg"
; V10 tmp5 [V10,T09] ( 3, 1.50) int -> x2 "Inline stloc first use temp" ; V11 tmp6 [V11,T10] ( 3, 1.50) int -> x2 "Inline stloc first use temp" ;* V12 tmp7 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
-; V13 tmp8 [V13,T05] ( 3, 3 ) ubyte -> x2 "Inlining Arg"
+; V13 tmp8 [V13,T04] ( 3, 3 ) ubyte -> x2 "Inlining Arg"
; V14 tmp9 [V14,T11] ( 3, 1.50) int -> x2 "Inline stloc first use temp" ; V15 tmp10 [V15,T12] ( 3, 1.50) int -> x2 "Inline stloc first use temp" ;* V16 tmp11 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
-; V17 tmp12 [V17,T06] ( 3, 3 ) ubyte -> x2 "Inlining Arg"
+; V17 tmp12 [V17,T05] ( 3, 3 ) ubyte -> x2 "Inlining Arg"
; V18 tmp13 [V18,T13] ( 3, 1.50) int -> x2 "Inline stloc first use temp" ; V19 tmp14 [V19,T14] ( 3, 1.50) int -> x2 "Inline stloc first use temp" ;* V20 tmp15 [V20 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
-; V21 tmp16 [V21,T07] ( 3, 3 ) ubyte -> x0 "Inlining Arg"
+; V21 tmp16 [V21,T06] ( 3, 3 ) ubyte -> x0 "Inlining Arg"
; V22 tmp17 [V22,T15] ( 3, 1.50) int -> x0 "Inline stloc first use temp" ; V23 tmp18 [V23,T16] ( 3, 1.50) int -> x0 "Inline stloc first use temp" ;* V24 tmp19 [V24 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V25 tmp20 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V26 tmp21 [V26,T00] ( 9, 5 ) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V27 tmp22 [V27,T03] ( 2, 2 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V27 tmp22 [V27,T02] ( 2, 2 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
;* V28 tmp23 [V28 ] ( 0, 0 ) byref -> zero-ref single-def "field V07._reference (fldOffset=0x0)" P-INDEP ;* V29 tmp24 [V29 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP ;* V30 tmp25 [V30 ] ( 0, 0 ) byref -> zero-ref single-def "field V12._reference (fldOffset=0x0)" P-INDEP @@ -46,14 +46,15 @@ ;* V35 tmp30 [V35 ] ( 0, 0 ) int -> zero-ref "field V20._length (fldOffset=0x8)" P-INDEP ;* V36 tmp31 [V36 ] ( 0, 0 ) byref -> zero-ref single-def "field V24._reference (fldOffset=0x0)" P-INDEP ;* V37 tmp32 [V37 ] ( 0, 0 ) int -> zero-ref "field V24._length (fldOffset=0x8)" P-INDEP
-; V38 cse0 [V38,T01] ( 6, 6 ) ref -> x1 multi-def "CSE - aggressive"
+; V38 cse0 [V38,T07] ( 5, 2.50) ref -> x19 "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M18375_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x10]!
+ stp fp, lr, [sp, #-0x20]! + str x19, [sp, #0x18]
mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50
+ ;; size=12 bbWeight=1 PerfScore 2.50
G_M18375_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz ; byrRegs +[x1] cmp w2, #8 @@ -127,48 +128,50 @@ G_M18375_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, b strh w0, [x1, #0x0C] b G_M18375_IG05 ;; size=264 bbWeight=0.50 PerfScore 23.75
-G_M18375_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M18375_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x1]
- movz x1, #8 - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - mov x0, x1
+ movz x19, #8 + movk x19, #0xD1FFAB1E LSL #16 + movk x19, #0xD1FFAB1E LSL #32 + mov x0, x19
; gcrRegs +[x0]
+ mov x1, x19 + ; gcrRegs +[x1]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x0] - movz x1, #8 - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - mov x0, x1
+ ; gcrRegs -[x0-x1] +[x19] + mov x0, x19
; gcrRegs +[x0]
+ mov x1, x19 + ; gcrRegs +[x1]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x0] - ;; size=72 bbWeight=1 PerfScore 15.00
+ ; gcrRegs -[x0-x1 x19] + ;; size=68 bbWeight=0.50 PerfScore 7.25
G_M18375_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ldp fp, lr, [sp], #0x10
+ ldr x19, [sp, #0x18] + ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=1 PerfScore 2.00
+ ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 360, prolog size 8, PerfScore 43.75, instruction count 90, allocated bytes for code 360 (MethodHash=1579b838) for method System.Enum+<>c__63`1[uint]:<FormatNumberAsHex>b__63_0(System.Span`1[ushort],long):this (FullOpts)
+; Total bytes of code 364, prolog size 12, PerfScore 39.00, instruction count 91, allocated bytes for code 364 (MethodHash=1579b838) for method System.Enum+<>c__63`1[uint]:<FormatNumberAsHex>b__63_0(System.Span`1[ushort],long):this (FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 1
+ Code Words : 2
Epilog Count : 1 E bit : 0 X bit : 0 Vers : 0
- Function Length : 90 (0x0005a) Actual length = 360 (0x000168)
+ Function Length : 91 (0x0005b) Actual length = 364 (0x00016c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -176,7 +179,10 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
+ D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24] + 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! + E4 end + E4 end
E4 end E4 end

+4 (+1.22%) : 6388.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)

@@ -8,34 +8,37 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T10] ( 5, 15 ) ref -> x20 class-hnd single-def <System.Reflection.ParameterInfo[]> -; V01 arg1 [V01,T11] ( 5, 11 ) ref -> x21 class-hnd single-def <System.Type[]> -; V02 arg2 [V02,T06] ( 5, 23 ) byref -> x19 single-def
+; V00 arg0 [V00,T10] ( 4, 11 ) ref -> x20 class-hnd single-def <System.Reflection.ParameterInfo[]> +; V01 arg1 [V01,T14] ( 4, 4 ) ref -> x21 class-hnd single-def <System.Type[]> +; V02 arg2 [V02,T05] ( 5, 23 ) byref -> x19 single-def
; V03 loc0 [V03,T09] ( 6, 21 ) int -> x23
-;* V04 loc1 [V04,T13] ( 0, 0 ) ubyte -> zero-ref -; V05 loc2 [V05,T12] ( 2, 12 ) ref -> x24 class-hnd <System.Type> -; V06 loc3 [V06,T01] ( 7, 88 ) int -> x25
+;* V04 loc1 [V04,T12] ( 0, 0 ) ubyte -> zero-ref +; V05 loc2 [V05,T11] ( 2, 12 ) ref -> x25 class-hnd <System.Type> +; V06 loc3 [V06,T01] ( 7, 88 ) int -> x26
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V08 tmp1 [V08 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]>
-; V09 tmp2 [V09,T07] ( 3, 24 ) ref -> x0 class-hnd "impAppendStmt" <<unknown class>>
+; V09 tmp2 [V09,T06] ( 3, 24 ) ref -> x0 class-hnd "impAppendStmt" <<unknown class>>
;* V10 tmp3 [V10 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-;* V11 tmp4 [V11,T15] ( 0, 0 ) ubyte -> zero-ref "field V08.hasValue (fldOffset=0x0)" P-INDEP -; V12 tmp5 [V12,T14] ( 2, 8 ) int -> x1 "field V08.value (fldOffset=0x4)" P-INDEP
+;* V11 tmp4 [V11,T17] ( 0, 0 ) ubyte -> zero-ref "field V08.hasValue (fldOffset=0x0)" P-INDEP +; V12 tmp5 [V12,T13] ( 2, 8 ) int -> x1 "field V08.value (fldOffset=0x4)" P-INDEP
; V13 tmp6 [V13,T00] ( 3, 96 ) ref -> x0 "arr expr" ; V14 tmp7 [V14,T02] ( 3, 48 ) ref -> x0 "argument with side effect" ; V15 tmp8 [V15,T03] ( 3, 48 ) ref -> x0 "argument with side effect"
-; V16 tmp9 [V16,T08] ( 3, 24 ) byref -> x0 "BlockOp address local" -; V17 cse0 [V17,T04] ( 4, 44 ) long -> x26 "CSE - aggressive" -; V18 cse1 [V18,T05] ( 5, 26 ) int -> x22 multi-def "CSE - aggressive"
+; V16 tmp9 [V16,T07] ( 3, 24 ) byref -> x0 "BlockOp address local" +; V17 cse0 [V17,T04] ( 4, 44 ) long -> x27 "CSE - aggressive" +; V18 cse1 [V18,T08] ( 4, 22 ) int -> x22 "CSE - aggressive" +; V19 cse2 [V19,T16] ( 2, 5 ) byref -> x21 hoist "CSE - aggressive" +; V20 cse3 [V20,T15] ( 3, 6 ) int -> x24 "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M59545_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x50]! - stp x19, x20, [sp, #0x10] - stp x21, x22, [sp, #0x20] - stp x23, x24, [sp, #0x30] - stp x25, x26, [sp, #0x40]
+ stp fp, lr, [sp, #-0x60]! + stp x19, x20, [sp, #0x18] + stp x21, x22, [sp, #0x28] + stp x23, x24, [sp, #0x38] + stp x25, x26, [sp, #0x48] + str x27, [sp, #0x58]
mov fp, sp mov x20, x0 ; gcrRegs +[x20] @@ -43,7 +46,7 @@ G_M59545_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[x21] mov x19, x2 ; byrRegs +[x19]
- ;; size=36 bbWeight=1 PerfScore 7.00
+ ;; size=40 bbWeight=1 PerfScore 8.00
G_M59545_IG02: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=80000 {x19}, byref, isz ldr w22, [x20, #0x08] mov w1, w22 @@ -61,37 +64,36 @@ G_M59545_IG02: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=80000 ; gcrRegs -[x0 x15] ; byrRegs -[x14] mov w23, wzr
- ldr w0, [x21, #0x08] - cmp w0, #0
+ ldr w24, [x21, #0x08] + cmp w24, #0
ble G_M59545_IG09
- ;; size=52 bbWeight=1 PerfScore 13.00 -G_M59545_IG03: ; bbWeight=4, gcrefRegs=300000 {x20 x21}, byrefRegs=80000 {x19}, byref, isz - add x0, x21, #16 - ; byrRegs +[x0] - ldr x24, [x0, w23, UXTW #3] - ; gcrRegs +[x24] - mov w25, wzr - ldr w22, [x20, #0x08]
+ add x21, x21, #16 + ; gcrRegs -[x21] + ; byrRegs +[x21] + ;; size=56 bbWeight=1 PerfScore 13.50 +G_M59545_IG03: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=280000 {x19 x21}, byref, isz + ldr x25, [x21, w23, UXTW #3] + ; gcrRegs +[x25] + mov w26, wzr
cmp w22, #0 ble G_M59545_IG11
- ;; size=24 bbWeight=4 PerfScore 34.00 -G_M59545_IG04: ; bbWeight=16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=80000 {x19}, byref, isz - ; byrRegs -[x0]
+ ;; size=16 bbWeight=4 PerfScore 20.00 +G_M59545_IG04: ; bbWeight=16, gcrefRegs=2100000 {x20 x25}, byrefRegs=280000 {x19 x21}, byref, isz
ldr x0, [x19] ; gcrRegs +[x0] ldr w1, [x0, #0x08]
- cmp w25, w1
+ cmp w26, w1
bhs G_M59545_IG13
- ubfiz x26, x25, #3, #32 - add x1, x26, #16
+ ubfiz x27, x26, #3, #32 + add x1, x27, #16
ldrb w0, [x0, x1] ; gcrRegs -[x0] cbnz w0, G_M59545_IG06 ;; size=32 bbWeight=16 PerfScore 208.00
-G_M59545_IG05: ; bbWeight=8, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=80000 {x19}, byref, isz
+G_M59545_IG05: ; bbWeight=8, gcrefRegs=2100000 {x20 x25}, byrefRegs=280000 {x19 x21}, byref, isz
add x0, x20, #16 ; byrRegs +[x0]
- ldr x0, [x0, x26]
+ ldr x0, [x0, x27]
; gcrRegs +[x0] ; byrRegs -[x0] ldr x1, [x0] @@ -99,7 +101,7 @@ G_M59545_IG05: ; bbWeight=8, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8 ldr x1, [x1, #0x38] blr x1 ; gcr arg pop 0
- mov x1, x24
+ mov x1, x25
; gcrRegs +[x1] ldr x2, [x0] ldr x2, [x2, #0xB8] @@ -109,26 +111,26 @@ G_M59545_IG05: ; bbWeight=8, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8 ; gcr arg pop 0 cbnz w0, G_M59545_IG08 ;; size=48 bbWeight=8 PerfScore 200.00
-G_M59545_IG06: ; bbWeight=16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=80000 {x19}, byref, isz - add w25, w25, #1 - cmp w22, w25
+G_M59545_IG06: ; bbWeight=16, gcrefRegs=2100000 {x20 x25}, byrefRegs=280000 {x19 x21}, byref, isz + add w26, w26, #1 + cmp w22, w26
bgt G_M59545_IG04 ;; size=12 bbWeight=16 PerfScore 32.00 G_M59545_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x20-x21 x24] - ; byrRegs -[x19]
+ ; gcrRegs -[x20 x25] + ; byrRegs -[x19 x21]
b G_M59545_IG11 ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M59545_IG08: ; bbWeight=4, gcrefRegs=300000 {x20 x21}, byrefRegs=80000 {x19}, byref, isz - ; gcrRegs +[x20-x21] - ; byrRegs +[x19]
+G_M59545_IG08: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=280000 {x19 x21}, byref, isz + ; gcrRegs +[x20] + ; byrRegs +[x19 x21]
ldr x0, [x19] ; gcrRegs +[x0] sxtw w1, w23 ldr w2, [x0, #0x08]
- cmp w25, w2
+ cmp w26, w2
bhs G_M59545_IG13
- add x2, x26, #16
+ add x2, x27, #16
add x0, x0, x2 ; gcrRegs -[x0] ; byrRegs +[x0] @@ -136,53 +138,53 @@ G_M59545_IG08: ; bbWeight=4, gcrefRegs=300000 {x20 x21}, byrefRegs=80000 strb w2, [x0] str w1, [x0, #0x04] add w23, w23, #1
- ldr w0, [x21, #0x08] - ; byrRegs -[x0] - cmp w0, w23
+ cmp w24, w23
bgt G_M59545_IG03
- ;; size=56 bbWeight=4 PerfScore 66.00
+ ;; size=52 bbWeight=4 PerfScore 54.00
G_M59545_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x20-x21] - ; byrRegs -[x19]
+ ; gcrRegs -[x20] + ; byrRegs -[x0 x19 x21]
mov w0, #1 ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M59545_IG10: ; bbWeight=0.50, epilog, nogc, extend
- ldp x25, x26, [sp, #0x40] - ldp x23, x24, [sp, #0x30] - ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x50
+ ldr x27, [sp, #0x58] + ldp x25, x26, [sp, #0x48] + ldp x23, x24, [sp, #0x38] + ldp x21, x22, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x60
ret lr
- ;; size=24 bbWeight=0.50 PerfScore 3.00
+ ;; size=28 bbWeight=0.50 PerfScore 4.00
G_M59545_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref mov w0, wzr ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M59545_IG12: ; bbWeight=0.50, epilog, nogc, extend
- ldp x25, x26, [sp, #0x40] - ldp x23, x24, [sp, #0x30] - ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x50
+ ldr x27, [sp, #0x58] + ldp x25, x26, [sp, #0x48] + ldp x23, x24, [sp, #0x38] + ldp x21, x22, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x60
ret lr
- ;; size=24 bbWeight=0.50 PerfScore 3.00
+ ;; size=28 bbWeight=0.50 PerfScore 4.00
G_M59545_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 brk_windows #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 328, prolog size 36, PerfScore 567.00, instruction count 82, allocated bytes for code 328 (MethodHash=29c21766) for method Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)
+; Total bytes of code 332, prolog size 40, PerfScore 544.50, instruction count 83, allocated bytes for code 332 (MethodHash=29c21766) for method Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 3
Epilog Count : 2 E bit : 0 X bit : 0 Vers : 0
- Function Length : 82 (0x00052) Actual length = 328 (0x000148)
+ Function Length : 83 (0x00053) Actual length = 332 (0x00014c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -193,10 +195,13 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
+ D2 0B save_reg X#8 Z#11 (0x0B); str x27, [sp, #88]
E6 save_next E6 save_next E6 save_next
- C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
...

+16 (+1.32%) : 4099.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)

@@ -11,16 +11,16 @@ ; V00 arg0 [V00,T07] ( 22, 23 ) ref -> x19 class-hnd single-def <System.Collections.Generic.List`1[System.String]> ; V01 loc0 [V01,T20] ( 7, 3.50) ref -> x20 class-hnd exact single-def <System.String> ; V02 loc1 [V02 ] ( 20, 54 ) struct (16) [fp-0x48] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Span`1[ushort]>
-; V03 loc2 [V03,T00] ( 39,149.08) int -> x22
+; V03 loc2 [V03,T00] ( 41,183.08) int -> x22
; V04 loc3 [V04,T23] ( 4, 2 ) int -> x0 ;* V05 loc4 [V05 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[ushort]>
-; V06 loc5 [V06,T06] ( 9, 25.50) int -> x21
+; V06 loc5 [V06,T06] ( 9, 25.50) int -> x23
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V08 tmp1 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V09 tmp2 [V09,T04] ( 5, 28 ) ref -> x22 class-hnd exact "impAppendStmt" <System.String>
+; V09 tmp2 [V09,T04] ( 5, 28 ) ref -> x21 class-hnd exact "impAppendStmt" <System.String>
; V10 tmp3 [V10,T26] ( 2, 2 ) long -> x1 "Inlining Arg" ; V11 tmp4 [V11,T25] ( 2, 2 ) ref -> x2 class-hnd exact single-def "Inlining Arg" <System.String>
-; V12 tmp5 [V12,T05] ( 5, 28 ) ref -> x23 class-hnd "Inlining Arg" <System.__Canon>
+; V12 tmp5 [V12,T05] ( 5, 28 ) ref -> x22 class-hnd "Inlining Arg" <System.__Canon>
; V13 tmp6 [V13,T15] ( 2, 4 ) ubyte -> x0 "Inline return value spill temp" ; V14 tmp7 [V14,T17] ( 2, 8 ) byref -> x0 "impAppendStmt" ; V15 tmp8 [V15,T27] ( 3, 1.50) ref -> x14 class-hnd single-def "Inline stloc first use temp" <<unknown class>> @@ -38,12 +38,12 @@ ; V27 cse0 [V27,T14] ( 3, 10 ) int -> x0 "CSE - aggressive" ; V28 cse1 [V28,T28] ( 3, 1.50) long -> x24 "CSE - moderate" ; V29 cse2 [V29,T31] ( 2, 1 ) int -> x12 "CSE - moderate"
-; V30 cse3 [V30,T01] ( 3, 48 ) long -> x1 "CSE - aggressive"
+; V30 cse3 [V30,T02] ( 3, 48 ) long -> x1 "CSE - aggressive"
; V31 cse4 [V31,T11] ( 3, 12 ) long -> x1 "CSE - aggressive" ; V32 cse5 [V32,T12] ( 3, 12 ) int -> x0 "CSE - aggressive" ; V33 cse6 [V33,T10] ( 3, 12 ) ref -> x1 "CSE - aggressive"
-; V34 cse7 [V34,T03] ( 15, 30.54) int -> x21 "CSE - aggressive" -; V35 cse8 [V35,T02] ( 10, 46 ) byref -> x23 hoist multi-def "CSE - aggressive"
+; V34 cse7 [V34,T01] ( 17, 64.54) int -> x21 "CSE - aggressive" +; V35 cse8 [V35,T03] ( 10, 46 ) byref -> x23 hoist multi-def "CSE - aggressive"
; V36 cse9 [V36,T16] ( 4, 8 ) int -> x24 "CSE - aggressive" ; V37 cse10 [V37,T18] ( 2, 8 ) int -> x3 "CSE - aggressive" ; V38 cse11 [V38,T13] ( 3, 11.88) int -> x0 "CSE - aggressive" @@ -71,19 +71,19 @@ G_M28069_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=56 bbWeight=1 PerfScore 10.50 G_M28069_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldr w0, [x19, #0x10]
- cbz w0, G_M28069_IG27
+ cbz w0, G_M28069_IG26
;; size=8 bbWeight=1 PerfScore 4.00 G_M28069_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldr x0, [x19, #0x08] ; gcrRegs +[x0] ldr w1, [x0, #0x08] cmp w1, #0
- bls G_M28069_IG29
+ bls G_M28069_IG28
ldr x20, [x0, #0x10] ; gcrRegs +[x20] ldr w21, [x20, #0x08] cmp w21, #100
- bgt G_M28069_IG27
+ bgt G_M28069_IG26
add w0, w21, #2 ; gcrRegs -[x0] mov w1, #2 @@ -110,105 +110,103 @@ G_M28069_IG05: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000 mov x1, sp ;; size=8 bbWeight=0.50 PerfScore 0.50 G_M28069_IG06: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- tbnz w0, #31, G_M28069_IG30
+ tbnz w0, #31, G_M28069_IG29
str x1, [fp, #-0x48] // [V17 tmp10] str w0, [fp, #-0x40] // [V18 tmp11] mov w22, wzr cmp w21, #0
- ble G_M28069_IG15
+ ble G_M28069_IG14
add x23, x20, #12 ; byrRegs +[x23] ;; size=28 bbWeight=0.50 PerfScore 2.75 G_M28069_IG07: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz ldrh w0, [x23, w22, UXTW #2] cmp w0, #39
- bne G_M28069_IG11
+ bne G_M28069_IG10
;; size=12 bbWeight=4 PerfScore 18.00 G_M28069_IG08: ; bbWeight=16, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz ldr w0, [fp, #-0x40] // [V18 tmp11] cmp w22, w0
- bhs G_M28069_IG29
+ bhs G_M28069_IG28
ldr x0, [fp, #-0x48] // [V17 tmp10] ; byrRegs +[x0] ubfiz x1, x22, #1, #32 add x0, x0, x1
+ cmp w22, w21 + bhs G_M28069_IG28
ldrh w1, [x23, x1] strh w1, [x0] add w22, w22, #1 cmp w21, w22
- ble G_M28069_IG09
+ ble G_M28069_IG26 + cmp w22, w21 + bhs G_M28069_IG28
ldrh w0, [x23, w22, UXTW #2] ; byrRegs -[x0] cmp w0, #39 bne G_M28069_IG08
- ;; size=56 bbWeight=16 PerfScore 280.00 -G_M28069_IG09: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz - cmp w21, w22 - bgt G_M28069_IG12 - ;; size=8 bbWeight=2 PerfScore 3.00 -G_M28069_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x19-x20] - ; byrRegs -[x23] - b G_M28069_IG27 - ;; size=4 bbWeight=0.50 PerfScore 0.50 -G_M28069_IG11: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz - ; gcrRegs +[x19-x20] - ; byrRegs +[x23]
+ ;; size=72 bbWeight=16 PerfScore 328.00 +G_M28069_IG09: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref + b G_M28069_IG11 + ;; size=4 bbWeight=4 PerfScore 4.00 +G_M28069_IG10: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
cmp w0, #121
- beq G_M28069_IG14
+ beq G_M28069_IG13
;; size=8 bbWeight=2 PerfScore 3.00
-G_M28069_IG12: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
+G_M28069_IG11: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
ldr w0, [fp, #-0x40] // [V18 tmp11] cmp w22, w0
- bhs G_M28069_IG29
+ bhs G_M28069_IG28
ldr x0, [fp, #-0x48] // [V17 tmp10] ; byrRegs +[x0] ubfiz x1, x22, #1, #32 add x0, x0, x1
+ cmp w22, w21 + bhs G_M28069_IG28
ldrh w1, [x23, x1] strh w1, [x0] add w22, w22, #1 cmp w21, w22 bgt G_M28069_IG07
- ;; size=44 bbWeight=4 PerfScore 52.00 -G_M28069_IG13: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+ ;; size=52 bbWeight=4 PerfScore 58.00 +G_M28069_IG12: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; byrRegs -[x0 x23]
- b G_M28069_IG15
+ b G_M28069_IG14
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M28069_IG14: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG13: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldr w0, [fp, #-0x40] // [V18 tmp11] cmp w22, w0
- bhs G_M28069_IG29
+ bhs G_M28069_IG28
ldr x0, [fp, #-0x48] // [V17 tmp10] ; byrRegs +[x0] mov w1, #121 strh w1, [x0, w22, UXTW #2] ;; size=24 bbWeight=0.50 PerfScore 3.50
-G_M28069_IG15: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG14: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x0] sub w0, w21, #1 cmp w0, w22
- ble G_M28069_IG27
+ ble G_M28069_IG26
add w0, w22, #1 cmp w0, w21
- bhs G_M28069_IG29
+ bhs G_M28069_IG28
add x23, x20, #12 ; byrRegs +[x23] add w0, w22, #1 ubfiz x24, x0, #1, #32 ldrh w0, [x23, x24] cmp w0, #121
- bne G_M28069_IG27
+ bne G_M28069_IG26
add w25, w22, #2 cmp w21, w25
- ble G_M28069_IG16
+ ble G_M28069_IG15
cmp w25, w21
- bhs G_M28069_IG29
+ bhs G_M28069_IG28
ldrh w0, [x23, w25, UXTW #2] cmp w0, #121
- beq G_M28069_IG27
+ beq G_M28069_IG26
;; size=80 bbWeight=0.50 PerfScore 9.25
-G_M28069_IG16: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
+G_M28069_IG15: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
add w0, w22, #3 ldr w1, [fp, #-0x40] // [V18 tmp11] cmp w0, w1 @@ -222,7 +220,7 @@ G_M28069_IG16: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800 add w0, w22, #1 ldr w1, [fp, #-0x40] // [V18 tmp11] cmp w0, w1
- bhs G_M28069_IG29
+ bhs G_M28069_IG28
ldr x0, [fp, #-0x48] // [V17 tmp10] ; byrRegs +[x0] mov w1, #121 @@ -230,7 +228,7 @@ G_M28069_IG16: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800 ldr w0, [fp, #-0x40] // [V18 tmp11] ; byrRegs -[x0] cmp w25, w0
- bhs G_M28069_IG29
+ bhs G_M28069_IG28
ldr x0, [fp, #-0x48] // [V17 tmp10] ; byrRegs +[x0] strh w1, [x0, w25, UXTW #2] @@ -238,7 +236,7 @@ G_M28069_IG16: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800 ; byrRegs -[x0] ldr w1, [fp, #-0x40] // [V18 tmp11] cmp w0, w1
- bhs G_M28069_IG29
+ bhs G_M28069_IG28
ldr x0, [fp, #-0x48] // [V17 tmp10] ; byrRegs +[x0] add w1, w22, #3 @@ -246,15 +244,15 @@ G_M28069_IG16: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800 strh w2, [x0, w1, UXTW #2] sxtw w22, w25 cmp w21, w22
- ble G_M28069_IG20 - tbnz w22, #31, G_M28069_IG19
+ ble G_M28069_IG19 + tbnz w22, #31, G_M28069_IG18
;; size=132 bbWeight=0.50 PerfScore 17.00
-G_M28069_IG17: ; bbWeight=3.96, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
+G_M28069_IG16: ; bbWeight=3.96, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
; byrRegs -[x0] add w0, w22, #2 ldr w1, [fp, #-0x40] // [V18 tmp11] cmp w0, w1
- bhs G_M28069_IG29
+ bhs G_M28069_IG28
ldr x1, [fp, #-0x48] // [V17 tmp10] ; byrRegs +[x1] ubfiz x0, x0, #1, #32 @@ -265,32 +263,32 @@ G_M28069_IG17: ; bbWeight=3.96, gcrefRegs=180000 {x19 x20}, byrefRegs=800 strh w1, [x0] add w22, w22, #1 cmp w21, w22
- bgt G_M28069_IG17
...

benchmarks.run_pgo.windows.arm64.checked.mch

-40 (-34.48%) : 33902.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)

@@ -9,86 +9,73 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 3, 3 ) byref -> x20 this single-def -; V01 arg1 [V01,T00] ( 5, 4.50) ref -> x19 class-hnd single-def <System.Object>
+; V00 this [V00,T02] ( 3, 3 ) byref -> x0 this single-def +; V01 arg1 [V01,T00] ( 4, 4 ) ref -> x1 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> x0 class-hnd "spilling QMark2" <System.Reflection.MetadataImport>
+; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> x2 class-hnd "spilling QMark2" <System.Reflection.MetadataImport>
;* V04 tmp2 [V04 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Reflection.MetadataImport> ;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref "field V04.m_keepalive (fldOffset=0x0)" P-INDEP
-; V06 tmp4 [V06,T05] ( 2, 2 ) long -> x0 "field V04.m_metadataImport2 (fldOffset=0x8)" P-INDEP -; V07 cse0 [V07,T03] ( 4, 2.50) long -> x0 "CSE - aggressive" -; V08 cse1 [V08,T04] ( 3, 2 ) long -> x1 "CSE - aggressive"
+; V06 tmp4 [V06,T03] ( 2, 2 ) long -> x1 "field V04.m_metadataImport2 (fldOffset=0x8)" P-INDEP +; V07 cse0 [V07,T04] ( 2, 1 ) long -> x3 "CSE - moderate"
; ; Lcl frame size = 0 G_M38955_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]! - stp x19, x20, [sp, #0x10]
+ stp fp, lr, [sp, #-0x10]!
mov fp, sp
- mov x20, x0 - ; byrRegs +[x20] - mov x19, x1 - ; gcrRegs +[x19] - ;; size=20 bbWeight=1 PerfScore 3.50 -G_M38955_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz - mov x0, x19 - ; gcrRegs +[x0] - cbz x0, G_M38955_IG08
;; size=8 bbWeight=1 PerfScore 1.50
-G_M38955_IG03: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=100000 {x20}, byref, isz - ldr x1, [x0] - movz x0, #0xD1FFAB1E - ; gcrRegs -[x0] - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - cmp x1, x0 - bne G_M38955_IG08
+G_M38955_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0001 {x0}, byref, isz + ; gcrRegs +[x1] + ; byrRegs +[x0] + mov x2, x1 + ; gcrRegs +[x2] + cbnz x2, G_M38955_IG05 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M38955_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x1-x2] + ; byrRegs -[x0] + mov w0, wzr + ;; size=4 bbWeight=1 PerfScore 0.50 +G_M38955_IG04: ; bbWeight=1, epilog, nogc, extend + ldp fp, lr, [sp], #0x10 + ret lr + ;; size=8 bbWeight=1 PerfScore 2.00 +G_M38955_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0006 {x1 x2}, byrefRegs=0001 {x0}, gcvars, byref, isz + ; gcrRegs +[x1-x2] + ; byrRegs +[x0] + ldr x2, [x2] + ; gcrRegs -[x2] + movz x3, #0xD1FFAB1E + movk x3, #0xD1FFAB1E LSL #16 + movk x3, #0xD1FFAB1E LSL #32 + cmp x2, x3 + bne G_M38955_IG03
;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M38955_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
+G_M38955_IG06: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0001 {x0}, byref + ldr x1, [x1, #0x10] + ; gcrRegs -[x1] + ldr x0, [x0, #0x08] + ; byrRegs -[x0]
cmp x1, x0
- bne G_M38955_IG07 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M38955_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref - ldr x0, [x19, #0x10] - ldr x1, [x20, #0x08] - cmp x0, x1
cset x0, eq ;; size=16 bbWeight=1 PerfScore 7.00
-G_M38955_IG06: ; bbWeight=1, epilog, nogc, extend - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20
+G_M38955_IG07: ; bbWeight=1, epilog, nogc, extend + ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=1 PerfScore 3.00 -G_M38955_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, gcvars, byref - mov x1, x19 - ; gcrRegs +[x1] - bl CORINFO_HELP_UNBOX - ; gcrRegs -[x1] - b G_M38955_IG05 - ;; size=12 bbWeight=0.50 PerfScore 1.25 -G_M38955_IG08: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x19] - ; byrRegs -[x20] - mov w0, wzr - ;; size=4 bbWeight=0.25 PerfScore 0.12 -G_M38955_IG09: ; bbWeight=0.25, epilog, nogc, extend - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20 - ret lr - ;; size=12 bbWeight=0.25 PerfScore 0.75
+ ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 116, prolog size 12, PerfScore 21.62, instruction count 29, allocated bytes for code 116 (MethodHash=885867d4) for method System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 76, prolog size 8, PerfScore 17.50, instruction count 19, allocated bytes for code 76 (MethodHash=885867d4) for method System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 1
Epilog Count : 2 E bit : 0 X bit : 0 Vers : 0
- Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
+ Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -99,10 +86,7 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16] - 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! - E4 end - E4 end
+ 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
E4 end E4 end

-40 (-34.48%) : 32336.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)

@@ -9,86 +9,73 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 3, 3 ) byref -> x20 this single-def -; V01 arg1 [V01,T00] ( 5, 4.50) ref -> x19 class-hnd single-def <System.Object>
+; V00 this [V00,T02] ( 3, 3 ) byref -> x0 this single-def +; V01 arg1 [V01,T00] ( 4, 4 ) ref -> x1 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> x0 class-hnd "spilling QMark2" <System.Reflection.MetadataImport>
+; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> x2 class-hnd "spilling QMark2" <System.Reflection.MetadataImport>
;* V04 tmp2 [V04 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Reflection.MetadataImport> ;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref "field V04.m_keepalive (fldOffset=0x0)" P-INDEP
-; V06 tmp4 [V06,T05] ( 2, 2 ) long -> x0 "field V04.m_metadataImport2 (fldOffset=0x8)" P-INDEP -; V07 cse0 [V07,T03] ( 4, 2.50) long -> x0 "CSE - aggressive" -; V08 cse1 [V08,T04] ( 3, 2 ) long -> x1 "CSE - aggressive"
+; V06 tmp4 [V06,T03] ( 2, 2 ) long -> x1 "field V04.m_metadataImport2 (fldOffset=0x8)" P-INDEP +; V07 cse0 [V07,T04] ( 2, 1 ) long -> x3 "CSE - moderate"
; ; Lcl frame size = 0 G_M38955_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]! - stp x19, x20, [sp, #0x10]
+ stp fp, lr, [sp, #-0x10]!
mov fp, sp
- mov x20, x0 - ; byrRegs +[x20] - mov x19, x1 - ; gcrRegs +[x19] - ;; size=20 bbWeight=1 PerfScore 3.50 -G_M38955_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz - mov x0, x19 - ; gcrRegs +[x0] - cbz x0, G_M38955_IG08
;; size=8 bbWeight=1 PerfScore 1.50
-G_M38955_IG03: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=100000 {x20}, byref, isz - ldr x1, [x0] - movz x0, #0xD1FFAB1E - ; gcrRegs -[x0] - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - cmp x1, x0 - bne G_M38955_IG08
+G_M38955_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0001 {x0}, byref, isz + ; gcrRegs +[x1] + ; byrRegs +[x0] + mov x2, x1 + ; gcrRegs +[x2] + cbnz x2, G_M38955_IG05 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M38955_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x1-x2] + ; byrRegs -[x0] + mov w0, wzr + ;; size=4 bbWeight=1 PerfScore 0.50 +G_M38955_IG04: ; bbWeight=1, epilog, nogc, extend + ldp fp, lr, [sp], #0x10 + ret lr + ;; size=8 bbWeight=1 PerfScore 2.00 +G_M38955_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0006 {x1 x2}, byrefRegs=0001 {x0}, gcvars, byref, isz + ; gcrRegs +[x1-x2] + ; byrRegs +[x0] + ldr x2, [x2] + ; gcrRegs -[x2] + movz x3, #0xD1FFAB1E + movk x3, #0xD1FFAB1E LSL #16 + movk x3, #0xD1FFAB1E LSL #32 + cmp x2, x3 + bne G_M38955_IG03
;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M38955_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
+G_M38955_IG06: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0001 {x0}, byref + ldr x1, [x1, #0x10] + ; gcrRegs -[x1] + ldr x0, [x0, #0x08] + ; byrRegs -[x0]
cmp x1, x0
- bne G_M38955_IG07 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M38955_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref - ldr x0, [x19, #0x10] - ldr x1, [x20, #0x08] - cmp x0, x1
cset x0, eq ;; size=16 bbWeight=1 PerfScore 7.00
-G_M38955_IG06: ; bbWeight=1, epilog, nogc, extend - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20
+G_M38955_IG07: ; bbWeight=1, epilog, nogc, extend + ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=1 PerfScore 3.00 -G_M38955_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, gcvars, byref - mov x1, x19 - ; gcrRegs +[x1] - bl CORINFO_HELP_UNBOX - ; gcrRegs -[x1] - b G_M38955_IG05 - ;; size=12 bbWeight=0.50 PerfScore 1.25 -G_M38955_IG08: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x19] - ; byrRegs -[x20] - mov w0, wzr - ;; size=4 bbWeight=0.25 PerfScore 0.12 -G_M38955_IG09: ; bbWeight=0.25, epilog, nogc, extend - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20 - ret lr - ;; size=12 bbWeight=0.25 PerfScore 0.75
+ ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 116, prolog size 12, PerfScore 21.62, instruction count 29, allocated bytes for code 116 (MethodHash=885867d4) for method System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 76, prolog size 8, PerfScore 17.50, instruction count 19, allocated bytes for code 76 (MethodHash=885867d4) for method System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 1
Epilog Count : 2 E bit : 0 X bit : 0 Vers : 0
- Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
+ Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -99,10 +86,7 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16] - 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! - E4 end - E4 end
+ 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
E4 end E4 end

-36 (-32.14%) : 50157.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)

@@ -9,85 +9,69 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 3, 3 ) byref -> x20 this single-def -; V01 arg1 [V01,T00] ( 5, 4.50) ref -> x19 class-hnd single-def <System.Object>
+; V00 this [V00,T02] ( 3, 3 ) byref -> x0 this single-def +; V01 arg1 [V01,T00] ( 4, 4 ) ref -> x1 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> x0 class-hnd "spilling QMark2" <System.Reflection.MetadataImport>
+; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> x2 class-hnd "spilling QMark2" <System.Reflection.MetadataImport>
;* V04 tmp2 [V04 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Reflection.MetadataImport> ;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref "field V04.m_keepalive (fldOffset=0x0)" P-INDEP
-; V06 tmp4 [V06,T05] ( 2, 2 ) long -> x0 "field V04.m_metadataImport2 (fldOffset=0x8)" P-INDEP -; V07 cse0 [V07,T03] ( 4, 2.50) long -> x0 "CSE - aggressive" -; V08 cse1 [V08,T04] ( 3, 2 ) long -> x1 "CSE - aggressive"
+; V06 tmp4 [V06,T03] ( 2, 2 ) long -> x1 "field V04.m_metadataImport2 (fldOffset=0x8)" P-INDEP +; V07 cse0 [V07,T04] ( 2, 1 ) long -> x3 "CSE - moderate"
; ; Lcl frame size = 0 G_M38955_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]! - stp x19, x20, [sp, #0x10]
+ stp fp, lr, [sp, #-0x10]!
mov fp, sp
- mov x20, x0 - ; byrRegs +[x20] - mov x19, x1 - ; gcrRegs +[x19] - ;; size=20 bbWeight=1 PerfScore 3.50 -G_M38955_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz - mov x0, x19 - ; gcrRegs +[x0] - cbz x0, G_M38955_IG08
;; size=8 bbWeight=1 PerfScore 1.50
-G_M38955_IG03: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=100000 {x20}, byref, isz - ldr x1, [x0] - movz x0, #0xD1FFAB1E - ; gcrRegs -[x0] - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - cmp x1, x0 - bne G_M38955_IG08 - ;; size=24 bbWeight=0.50 PerfScore 3.00 -G_M38955_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz - cmp x1, x0 - beq G_M38955_IG06 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M38955_IG05: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref - mov x1, x19
+G_M38955_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0001 {x0}, byref, isz
; gcrRegs +[x1]
- bl CORINFO_HELP_UNBOX
+ ; byrRegs +[x0] + mov x2, x1 + ; gcrRegs +[x2] + cbz x2, G_M38955_IG06 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M38955_IG03: ; bbWeight=0.50, gcrefRegs=0006 {x1 x2}, byrefRegs=0001 {x0}, byref, isz + ldr x2, [x2] + ; gcrRegs -[x2] + movz x3, #0xD1FFAB1E + movk x3, #0xD1FFAB1E LSL #16 + movk x3, #0xD1FFAB1E LSL #32 + cmp x2, x3 + bne G_M38955_IG06 + ;; size=24 bbWeight=0.50 PerfScore 3.00 +G_M38955_IG04: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0001 {x0}, byref + ldr x1, [x1, #0x10]
; gcrRegs -[x1]
- ;; size=8 bbWeight=0.50 PerfScore 0.75 -G_M38955_IG06: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref - ldr x0, [x19, #0x10] - ldr x1, [x20, #0x08] - cmp x0, x1
+ ldr x0, [x0, #0x08] + ; byrRegs -[x0] + cmp x1, x0
cset x0, eq ;; size=16 bbWeight=1 PerfScore 7.00
-G_M38955_IG07: ; bbWeight=1, epilog, nogc, extend - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20
+G_M38955_IG05: ; bbWeight=1, epilog, nogc, extend + ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=1 PerfScore 3.00 -G_M38955_IG08: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x19] - ; byrRegs -[x20]
+ ;; size=8 bbWeight=1 PerfScore 2.00 +G_M38955_IG06: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, wzr
- ;; size=4 bbWeight=0.25 PerfScore 0.12 -G_M38955_IG09: ; bbWeight=0.25, epilog, nogc, extend - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20
+ ;; size=4 bbWeight=1 PerfScore 0.50 +G_M38955_IG07: ; bbWeight=1, epilog, nogc, extend + ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=0.25 PerfScore 0.75
+ ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 112, prolog size 12, PerfScore 21.12, instruction count 28, allocated bytes for code 112 (MethodHash=885867d4) for method System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 76, prolog size 8, PerfScore 17.50, instruction count 19, allocated bytes for code 76 (MethodHash=885867d4) for method System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 1
Epilog Count : 2 E bit : 0 X bit : 0 Vers : 0
- Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
+ Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -98,10 +82,7 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16] - 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! - E4 end - E4 end
+ 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
E4 end E4 end

+16 (+6.56%) : 60155.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyDelaySignAttributeSetting():ubyte:this (Tier1)

@@ -9,19 +9,19 @@ ; 3 inlinees with PGO data; 8 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 9, 5 ) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol>
+; V00 this [V00,T00] ( 9, 5 ) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol>
;* V01 loc0 [V01,T09] ( 0, 0 ) ubyte -> zero-ref single-def
-; V02 loc1 [V02,T03] ( 5, 5 ) ubyte -> x20
+; V02 loc1 [V02,T06] ( 5, 3 ) ubyte -> x20
;* V03 loc2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]> ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
-; V06 tmp2 [V06,T06] ( 5, 4 ) ref -> x21 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]> -; V07 tmp3 [V07,T04] ( 3, 4.50) ref -> x1 single-def "CASTCLASS eval op1"
+; V06 tmp2 [V06,T05] ( 5, 4 ) ref -> x21 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]> +; V07 tmp3 [V07,T03] ( 3, 4.50) ref -> x1 single-def "CASTCLASS eval op1"
; V08 tmp4 [V08,T07] ( 3, 2.50) long -> x3 "fgMakeTemp is creating a new local variable"
-; V09 tmp5 [V09,T00] ( 5, 7.50) ref -> x2 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]> -; V10 tmp6 [V10,T05] ( 3, 4.50) ref -> x1 single-def "CASTCLASS eval op1" -; V11 tmp7 [V11,T08] ( 3, 2.50) long -> x3 "fgMakeTemp is creating a new local variable" -; V12 tmp8 [V12,T01] ( 5, 7.50) ref -> x2 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
+; V09 tmp5 [V09,T01] ( 5, 5.50) ref -> x2 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]> +; V10 tmp6 [V10,T04] ( 3, 4.50) ref -> x1 single-def "CASTCLASS eval op1" +; V11 tmp7 [V11,T08] ( 3, 2.50) long -> x2 "fgMakeTemp is creating a new local variable" +; V12 tmp8 [V12,T02] ( 5, 5.50) ref -> x3 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
;* V13 tmp9 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]> ; ; Lcl frame size = 8 @@ -38,16 +38,16 @@ G_M43843_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by mov w20, wzr ldr x21, [x19, #0x80] ; gcrRegs +[x21]
- cbz x21, G_M43843_IG14
+ cbz x21, G_M43843_IG12
ldrb w0, [x21, #0x18]
- tbz w0, #1, G_M43843_IG14
+ tbz w0, #1, G_M43843_IG12
;; size=20 bbWeight=1 PerfScore 8.50 G_M43843_IG03: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz ldr x1, [x21, #0x08] ; gcrRegs +[x1] mov x2, x1 ; gcrRegs +[x2]
- cbz x2, G_M43843_IG07
+ cbz x2, G_M43843_IG06
;; size=12 bbWeight=1 PerfScore 4.50 G_M43843_IG04: ; bbWeight=0.50, gcrefRegs=80006 {x1 x2 x19}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x21] @@ -56,7 +56,7 @@ G_M43843_IG04: ; bbWeight=0.50, gcrefRegs=80006 {x1 x2 x19}, byrefRegs=00 movk x3, #0xD1FFAB1E LSL #16 movk x3, #0xD1FFAB1E LSL #32 cmp x0, x3
- beq G_M43843_IG06
+ beq G_M43843_IG13
;; size=24 bbWeight=0.50 PerfScore 3.00 G_M43843_IG05: ; bbWeight=0.25, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref ; gcrRegs -[x2] @@ -65,60 +65,54 @@ G_M43843_IG05: ; bbWeight=0.25, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 ; gcrRegs -[x1] +[x0] mov x2, x0 ; gcrRegs +[x2]
- ;; size=12 bbWeight=0.25 PerfScore 0.50 -G_M43843_IG06: ; bbWeight=1, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - ldrb w20, [x2, #0x84] - ;; size=4 bbWeight=1 PerfScore 3.00 -G_M43843_IG07: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x2] - cbnz w20, G_M43843_IG12
+ b G_M43843_IG13 + ;; size=16 bbWeight=0.25 PerfScore 0.75 +G_M43843_IG06: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x0 x2] + cbnz w20, G_M43843_IG10
ldr x0, [x19, #0x88] ; gcrRegs +[x0]
- cbz x0, G_M43843_IG15
+ cbz x0, G_M43843_IG14
;; size=12 bbWeight=1 PerfScore 5.00
-G_M43843_IG08: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M43843_IG07: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] ldr x0, [x19, #0x88] ; gcrRegs +[x0] ldr x1, [x0, #0x08] ; gcrRegs +[x1]
- mov x2, x1 - ; gcrRegs +[x2] - cbz x2, G_M43843_IG12
+ mov x3, x1 + ; gcrRegs +[x3] + cbz x3, G_M43843_IG10
;; size=16 bbWeight=1 PerfScore 7.50
-G_M43843_IG09: ; bbWeight=0.50, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz
+G_M43843_IG08: ; bbWeight=0.50, gcrefRegs=000A {x1 x3}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0 x19]
- ldr x0, [x2] - movz x3, #0xD1FFAB1E - movk x3, #0xD1FFAB1E LSL #16 - movk x3, #0xD1FFAB1E LSL #32 - cmp x0, x3 - beq G_M43843_IG11
+ ldr x0, [x3] + movz x2, #0xD1FFAB1E + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + cmp x0, x2 + beq G_M43843_IG15
;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M43843_IG10: ; bbWeight=0.25, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref - ; gcrRegs -[x2] - mov x0, x3
+G_M43843_IG09: ; bbWeight=0.25, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref + ; gcrRegs -[x3] + mov x0, x2
bl CORINFO_HELP_CHKCASTCLASS_SPECIAL ; gcrRegs -[x1] +[x0]
- mov x2, x0 - ; gcrRegs +[x2] - ;; size=12 bbWeight=0.25 PerfScore 0.50 -G_M43843_IG11: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - ldrb w20, [x2, #0x84] - ;; size=4 bbWeight=1 PerfScore 3.00 -G_M43843_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x2]
+ mov x3, x0 + ; gcrRegs +[x3] + b G_M43843_IG15 + ;; size=16 bbWeight=0.25 PerfScore 0.75 +G_M43843_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0 x3]
mov w0, w20 ;; size=4 bbWeight=1 PerfScore 0.50
-G_M43843_IG13: ; bbWeight=1, epilog, nogc, extend
+G_M43843_IG11: ; bbWeight=1, epilog, nogc, extend
ldr x21, [sp, #0x28] ldp x19, x20, [sp, #0x18] ldp fp, lr, [sp], #0x30 ret lr ;; size=16 bbWeight=1 PerfScore 5.00
-G_M43843_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M43843_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x19] mov x0, x19 ; gcrRegs +[x0] @@ -132,8 +126,13 @@ G_M43843_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 ; gcrRegs +[x21] b G_M43843_IG03 ;; size=32 bbWeight=0 PerfScore 0.00
-G_M43843_IG15: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ; gcrRegs -[x21]
+G_M43843_IG13: ; bbWeight=0, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref + ; gcrRegs -[x21] +[x2] + ldrb w20, [x2, #0x84] + b G_M43843_IG06 + ;; size=8 bbWeight=0 PerfScore 0.00 +G_M43843_IG14: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + ; gcrRegs -[x2]
add x1, x19, #136 ; byrRegs +[x1] mov x0, x19 @@ -145,10 +144,15 @@ G_M43843_IG15: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by blr x2 ; gcrRegs -[x0] ; byrRegs -[x1]
- b G_M43843_IG08
+ b G_M43843_IG07
;; size=32 bbWeight=0 PerfScore 0.00
+G_M43843_IG15: ; bbWeight=0, gcrefRegs=0008 {x3}, byrefRegs=0000 {}, byref + ; gcrRegs -[x19] +[x3] + ldrb w20, [x3, #0x84] + b G_M43843_IG10 + ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 244, prolog size 16, PerfScore 48.00, instruction count 61, allocated bytes for code 244 (MethodHash=f14d54bc) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyDelaySignAttributeSetting():ubyte:this (Tier1)
+; Total bytes of code 260, prolog size 16, PerfScore 42.50, instruction count 65, allocated bytes for code 260 (MethodHash=f14d54bc) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyDelaySignAttributeSetting():ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -159,7 +163,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 61 (0x0003d) Actual length = 244 (0x0000f4)
+ Function Length : 65 (0x00041) Actual length = 260 (0x000104)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+36 (+8.11%) : 32416.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:TryMatch(byref,int,byref,uint,byref):ubyte:this (Tier1)

@@ -5,22 +5,22 @@ ; optimized using Dynamic PGO ; fp based frame ; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 56032
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 56032
; 8 inlinees with PGO data; 19 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 3, 3 ) ref -> x20 this class-hnd single-def <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]> -; V01 arg1 [V01,T03] ( 3, 3 ) byref -> x21 single-def -; V02 arg2 [V02,T00] ( 5, 4 ) int -> x19 single-def -; V03 arg3 [V03,T04] ( 3, 3 ) byref -> x22 single-def
+; V00 this [V00,T02] ( 4, 3 ) ref -> x20 this class-hnd single-def <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]> +; V01 arg1 [V01,T03] ( 4, 3 ) byref -> x21 single-def +; V02 arg2 [V02,T00] ( 6, 4 ) int -> x19 single-def +; V03 arg3 [V03,T04] ( 4, 3 ) byref -> x22 single-def
; V04 arg4 [V04,T06] ( 3, 3 ) int -> x4 single-def ; V05 arg5 [V05,T05] ( 3, 3 ) byref -> x23 single-def
-; V06 loc0 [V06,T08] ( 3, 3 ) int -> x24 -; V07 loc1 [V07,T10] ( 2, 2 ) byref -> x22
+; V06 loc0 [V06,T09] ( 4, 3 ) int -> x24 +; V07 loc1 [V07,T10] ( 4, 2 ) byref -> x25
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V09 tmp1 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V10 tmp2 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V11 tmp3 [V11,T07] ( 3, 4 ) int -> x25 "Inlining Arg"
+; V11 tmp3 [V11,T07] ( 4, 4 ) int -> x26 "Inlining Arg"
;* V12 tmp4 [V12 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V13 tmp5 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V14 tmp6 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -29,7 +29,7 @@ ;* V17 tmp9 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V18 tmp10 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V19 tmp11 [V19 ] ( 0, 0 ) byref -> zero-ref "Spilling op1 side effects for Unsafe.ByteOffset"
-; V20 tmp12 [V20,T01] ( 8, 5 ) long -> x26 "Inline stloc first use temp"
+; V20 tmp12 [V20,T01] ( 10, 5 ) long -> x28 "Inline stloc first use temp"
;* V21 tmp13 [V21 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V22 tmp14 [V22 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V23 tmp15 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -61,16 +61,17 @@ ;* V49 tmp41 [V49 ] ( 0, 0 ) int -> zero-ref "field V18._length (fldOffset=0x8)" P-INDEP ;* V50 tmp42 [V50 ] ( 0, 0 ) byref -> zero-ref "field V25._reference (fldOffset=0x0)" P-INDEP ;* V51 tmp43 [V51 ] ( 0, 0 ) int -> zero-ref "field V25._length (fldOffset=0x8)" P-INDEP
-; V52 cse0 [V52,T09] ( 3, 3 ) long -> x22 "CSE - aggressive"
+; V52 cse0 [V52,T08] ( 5, 3 ) long -> x27 "CSE - aggressive"
; ; Lcl frame size = 0 G_M44984_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x50]!
+ stp fp, lr, [sp, #-0x60]!
stp x19, x20, [sp, #0x10] stp x21, x22, [sp, #0x20] stp x23, x24, [sp, #0x30] stp x25, x26, [sp, #0x40]
+ stp x27, x28, [sp, #0x50]
mov fp, sp mov x20, x0 ; gcrRegs +[x20] @@ -81,73 +82,52 @@ G_M44984_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x22] mov x23, x5 ; byrRegs +[x23]
- ;; size=44 bbWeight=1 PerfScore 8.00
+ ;; size=48 bbWeight=1 PerfScore 9.00
G_M44984_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=E00000 {x21 x22 x23}, byref, isz rbit w0, w4 clz w24, w0 tbnz w24, #0, G_M44984_IG08
- ;; size=12 bbWeight=1 PerfScore 2.50 -G_M44984_IG03: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=E00000 {x21 x22 x23}, byref, isz
sxtw x0, w24
- add x22, x22, x0
+ add x25, x22, x0 + ; byrRegs +[x25]
ldr x0, [x20, #0x10] ; gcrRegs +[x0]
- ldr w25, [x0, #0x08] - tbz w19, #31, G_M44984_IG04 - movz x0, #8 - ; gcrRegs -[x0] - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - movz x1, #8 - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - movz x2, #0xD1FFAB1E // code for <unknown method> - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - ldr x2, [x2] - blr x2 - ; gcrRegs -[x20] - movz x0, #8 - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - movz x1, #8 - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - movz x2, #0xD1FFAB1E // code for <unknown method> - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - ldr x2, [x2] - blr x2 - ;; size=108 bbWeight=1 PerfScore 25.00 -G_M44984_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=E00000 {x21 x22 x23}, byref, isz - sub x22, x22, x21
+ ldr w26, [x0, #0x08] + tbnz w19, #31, G_M44984_IG09 + ;; size=32 bbWeight=1 PerfScore 10.50 +G_M44984_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=2A00000 {x21 x23 x25}, byref, isz + ; gcrRegs -[x0 x20]
; byrRegs -[x22]
- mov x26, x22 - tbnz x26, #63, G_M44984_IG09 - tbnz w26, #0, G_M44984_IG10 - ;; size=16 bbWeight=1 PerfScore 3.00
+ sub x27, x25, x21 + mov x28, x27 + tbnz x28, #63, G_M44984_IG10 + ;; size=12 bbWeight=1 PerfScore 2.00 +G_M44984_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref, isz + ; byrRegs -[x21 x25] + tbnz w28, #0, G_M44984_IG11 + ;; size=4 bbWeight=1 PerfScore 1.00
G_M44984_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref, isz
- ; byrRegs -[x21] - add x0, x26, x26, LSR #63
+ add x0, x28, x28, LSR #63
asr x0, x0, #1 sub w0, w19, w0
- cmp w0, w25 - blt G_M44984_IG11
+ cmp w0, w26 + blt G_M44984_IG12
;; size=20 bbWeight=1 PerfScore 4.00 G_M44984_IG06: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref
- lsr x0, x22, #1
+ lsr x0, x27, #1
str w0, [x23] mov w0, #1 ;; size=12 bbWeight=1.00 PerfScore 2.50 G_M44984_IG07: ; bbWeight=1.00, epilog, nogc, extend
+ ldp x27, x28, [sp, #0x50]
ldp x25, x26, [sp, #0x40] ldp x23, x24, [sp, #0x30] ldp x21, x22, [sp, #0x20] ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x50
+ ldp fp, lr, [sp], #0x60
ret lr
- ;; size=24 bbWeight=1.00 PerfScore 6.00 -G_M44984_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=E00000 {x21 x22 x23}, gcvars, byref
+ ;; size=28 bbWeight=1.00 PerfScore 7.00 +G_M44984_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=E00000 {x21 x22 x23}, gcvars, byref, isz
; gcrRegs +[x20] ; byrRegs +[x21-x22] movz x0, #8 @@ -161,11 +141,17 @@ G_M44984_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100000 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
- b G_M44984_IG03 - ;; size=48 bbWeight=0 PerfScore 0.00 -G_M44984_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref, isz - ; gcrRegs -[x20] - ; byrRegs -[x21-x22]
+ sxtw x0, w24 + add x25, x22, x0 + ; byrRegs +[x25] + ldr x0, [x20, #0x10] + ; gcrRegs +[x0] + ldr w26, [x0, #0x08] + tbz w19, #31, G_M44984_IG03 + ;; size=64 bbWeight=0 PerfScore 0.00 +G_M44984_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=2A00000 {x21 x23 x25}, byref, isz + ; gcrRegs -[x0 x20] + ; byrRegs -[x22]
movz x0, #8 movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -177,9 +163,23 @@ G_M44984_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, b movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
- tbz w26, #0, G_M44984_IG05 - ;; size=48 bbWeight=0 PerfScore 0.00
+ movz x0, #8 + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32 + movz x1, #8 + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + movz x2, #0xD1FFAB1E // code for <unknown method> + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + ldr x2, [x2] + blr x2 + sub x27, x25, x21 + mov x28, x27 + tbz x28, #63, G_M44984_IG04 + ;; size=100 bbWeight=0 PerfScore 0.00
G_M44984_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref, isz
+ ; byrRegs -[x21 x25]
movz x0, #8 movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -191,13 +191,27 @@ G_M44984_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, b movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
- add x0, x26, x26, LSR #63
+ tbz w28, #0, G_M44984_IG05 + ;; size=48 bbWeight=0 PerfScore 0.00 +G_M44984_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref, isz + movz x0, #8 + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32 + movz x1, #8 + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + movz x2, #0xD1FFAB1E // code for <unknown method> + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + ldr x2, [x2] + blr x2 + add x0, x28, x28, LSR #63
asr x0, x0, #1 sub w0, w19, w0
- cmp w0, w25
+ cmp w0, w26
bge G_M44984_IG06 ;; size=64 bbWeight=0 PerfScore 0.00
-G_M44984_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref
+G_M44984_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref
movz x0, #8 movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -212,18 +226,18 @@ G_M44984_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, b b G_M44984_IG06 ;; size=48 bbWeight=0 PerfScore 0.00
-; Total bytes of code 444, prolog size 24, PerfScore 51.00, instruction count 111, allocated bytes for code 444 (MethodHash=d0aa5047) for method System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:TryMatch(byref,int,byref,uint,byref):ubyte:this (Tier1)
+; Total bytes of code 480, prolog size 28, PerfScore 36.00, instruction count 120, allocated bytes for code 480 (MethodHash=d0aa5047) for method System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:TryMatch(byref,int,byref,uint,byref):ubyte:this (Tier1)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
...

+20 (+8.20%) : 64265.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)

@@ -9,18 +9,18 @@ ; 3 inlinees with PGO data; 8 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 9, 5 ) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol> -; V01 loc0 [V01,T03] ( 5, 5 ) int -> x20
+; V00 this [V00,T00] ( 10, 5 ) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol> +; V01 loc0 [V01,T08] ( 5, 2 ) int -> x20
;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]> ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
-; V05 tmp2 [V05,T06] ( 5, 4 ) ref -> x21 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]> -; V06 tmp3 [V06,T04] ( 3, 4.50) ref -> x1 single-def "CASTCLASS eval op1" -; V07 tmp4 [V07,T07] ( 3, 2.50) long -> x3 "fgMakeTemp is creating a new local variable" -; V08 tmp5 [V08,T00] ( 5, 7.50) ref -> x2 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]> -; V09 tmp6 [V09,T05] ( 3, 4.50) ref -> x1 single-def "CASTCLASS eval op1" -; V10 tmp7 [V10,T08] ( 3, 2.50) long -> x3 "fgMakeTemp is creating a new local variable" -; V11 tmp8 [V11,T01] ( 5, 7.50) ref -> x2 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
+; V05 tmp2 [V05,T05] ( 5, 4 ) ref -> x21 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]> +; V06 tmp3 [V06,T03] ( 3, 4.50) ref -> x1 single-def "CASTCLASS eval op1" +; V07 tmp4 [V07,T06] ( 3, 2.50) long -> x3 "fgMakeTemp is creating a new local variable" +; V08 tmp5 [V08,T01] ( 5, 5.50) ref -> x2 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]> +; V09 tmp6 [V09,T04] ( 3, 4.50) ref -> x1 single-def "CASTCLASS eval op1" +; V10 tmp7 [V10,T07] ( 3, 2.50) long -> x2 "fgMakeTemp is creating a new local variable" +; V11 tmp8 [V11,T02] ( 5, 5.50) ref -> x3 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
;* V12 tmp9 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]> ; ; Lcl frame size = 8 @@ -37,16 +37,16 @@ G_M4380_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byr mov w20, wzr ldr x21, [x19, #0x80] ; gcrRegs +[x21]
- cbz x21, G_M4380_IG14
+ cbz x21, G_M4380_IG12
ldrb w0, [x21, #0x18]
- tbz w0, #1, G_M4380_IG14
+ tbz w0, #1, G_M4380_IG12
;; size=20 bbWeight=1 PerfScore 8.50 G_M4380_IG03: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz ldr x1, [x21, #0x08] ; gcrRegs +[x1] mov x2, x1 ; gcrRegs +[x2]
- cbz x2, G_M4380_IG07
+ cbz x2, G_M4380_IG06
;; size=12 bbWeight=1 PerfScore 4.50 G_M4380_IG04: ; bbWeight=0.50, gcrefRegs=80006 {x1 x2 x19}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x21] @@ -55,7 +55,7 @@ G_M4380_IG04: ; bbWeight=0.50, gcrefRegs=80006 {x1 x2 x19}, byrefRegs=000 movk x3, #0xD1FFAB1E LSL #16 movk x3, #0xD1FFAB1E LSL #32 cmp x0, x3
- beq G_M4380_IG06
+ beq G_M4380_IG13
;; size=24 bbWeight=0.50 PerfScore 3.00 G_M4380_IG05: ; bbWeight=0.25, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref ; gcrRegs -[x2] @@ -64,60 +64,53 @@ G_M4380_IG05: ; bbWeight=0.25, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 { ; gcrRegs -[x1] +[x0] mov x2, x0 ; gcrRegs +[x2]
- ;; size=12 bbWeight=0.25 PerfScore 0.50 -G_M4380_IG06: ; bbWeight=1, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - ldr w20, [x2, #0x80] - ;; size=4 bbWeight=1 PerfScore 3.00 -G_M4380_IG07: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x2]
+ b G_M4380_IG13 + ;; size=16 bbWeight=0.25 PerfScore 0.75 +G_M4380_IG06: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x0 x2]
ldr x0, [x19, #0x88] ; gcrRegs +[x0]
- cbz x0, G_M4380_IG15
+ cbz x0, G_M4380_IG14
;; size=8 bbWeight=1 PerfScore 4.00
-G_M4380_IG08: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M4380_IG07: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] ldr x0, [x19, #0x88] ; gcrRegs +[x0] ldr x1, [x0, #0x08] ; gcrRegs +[x1]
- mov x2, x1 - ; gcrRegs +[x2] - cbz x2, G_M4380_IG12
+ mov x3, x1 + ; gcrRegs +[x3] + cbz x3, G_M4380_IG10
;; size=16 bbWeight=1 PerfScore 7.50
-G_M4380_IG09: ; bbWeight=0.50, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz
+G_M4380_IG08: ; bbWeight=0.50, gcrefRegs=000A {x1 x3}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0 x19]
- ldr x0, [x2] - movz x3, #0xD1FFAB1E - movk x3, #0xD1FFAB1E LSL #16 - movk x3, #0xD1FFAB1E LSL #32 - cmp x0, x3 - beq G_M4380_IG11
+ ldr x0, [x3] + movz x2, #0xD1FFAB1E + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + cmp x0, x2 + beq G_M4380_IG15
;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M4380_IG10: ; bbWeight=0.25, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref - ; gcrRegs -[x2] - mov x0, x3
+G_M4380_IG09: ; bbWeight=0.25, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref + ; gcrRegs -[x3] + mov x0, x2
bl CORINFO_HELP_CHKCASTCLASS_SPECIAL ; gcrRegs -[x1] +[x0]
- mov x2, x0 - ; gcrRegs +[x2] - ;; size=12 bbWeight=0.25 PerfScore 0.50 -G_M4380_IG11: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - ldr w0, [x2, #0x80] - orr w20, w20, w0 - ;; size=8 bbWeight=1 PerfScore 3.50 -G_M4380_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x2]
+ mov x3, x0 + ; gcrRegs +[x3] + b G_M4380_IG15 + ;; size=16 bbWeight=0.25 PerfScore 0.75 +G_M4380_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0 x3]
mov w0, w20 ;; size=4 bbWeight=1 PerfScore 0.50
-G_M4380_IG13: ; bbWeight=1, epilog, nogc, extend
+G_M4380_IG11: ; bbWeight=1, epilog, nogc, extend
ldr x21, [sp, #0x28] ldp x19, x20, [sp, #0x18] ldp fp, lr, [sp], #0x30 ret lr ;; size=16 bbWeight=1 PerfScore 5.00
-G_M4380_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M4380_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x19] mov x0, x19 ; gcrRegs +[x0] @@ -131,8 +124,15 @@ G_M4380_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 { ; gcrRegs +[x21] b G_M4380_IG03 ;; size=32 bbWeight=0 PerfScore 0.00
-G_M4380_IG15: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ; gcrRegs -[x21]
+G_M4380_IG13: ; bbWeight=0, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x21] +[x2] + ldr w20, [x2, #0x80] + ldr x1, [x19, #0x88] + ; gcrRegs +[x1] + cbnz x1, G_M4380_IG07 + ;; size=12 bbWeight=0 PerfScore 0.00 +G_M4380_IG14: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + ; gcrRegs -[x1-x2]
add x1, x19, #136 ; byrRegs +[x1] mov x0, x19 @@ -144,10 +144,16 @@ G_M4380_IG15: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byr blr x2 ; gcrRegs -[x0] ; byrRegs -[x1]
- b G_M4380_IG08
+ b G_M4380_IG07
;; size=32 bbWeight=0 PerfScore 0.00
+G_M4380_IG15: ; bbWeight=0, gcrefRegs=0008 {x3}, byrefRegs=0000 {}, byref + ; gcrRegs -[x19] +[x3] + ldr w0, [x3, #0x80] + orr w20, w20, w0 + b G_M4380_IG10 + ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 244, prolog size 16, PerfScore 47.50, instruction count 61, allocated bytes for code 244 (MethodHash=64b3eee3) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)
+; Total bytes of code 264, prolog size 16, PerfScore 41.50, instruction count 66, allocated bytes for code 264 (MethodHash=64b3eee3) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)
; ============================================================ Unwind Info: @@ -158,7 +164,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 61 (0x0003d) Actual length = 244 (0x0000f4)
+ Function Length : 66 (0x00042) Actual length = 264 (0x000108)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

benchmarks.run_tiered.windows.arm64.checked.mch

-36 (-32.14%) : 5355.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)

@@ -8,87 +8,72 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 3, 2.50) byref -> x20 this single-def -; V01 arg1 [V01,T00] ( 5, 3.75) ref -> x19 class-hnd single-def <System.Object>
+; V00 this [V00,T02] ( 3, 2.50) byref -> x0 this single-def +; V01 arg1 [V01,T00] ( 4, 3.50) ref -> x1 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 4.50) ref -> x0 class-hnd "spilling QMark2" <System.Reflection.MetadataImport>
+; V03 tmp1 [V03,T01] ( 3, 4.50) ref -> x2 class-hnd "spilling QMark2" <System.Reflection.MetadataImport>
;* V04 tmp2 [V04 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Reflection.MetadataImport> ;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref "field V04.m_keepalive (fldOffset=0x0)" P-INDEP
-; V06 tmp4 [V06,T05] ( 2, 1 ) long -> x0 "field V04.m_metadataImport2 (fldOffset=0x8)" P-INDEP -; V07 cse0 [V07,T03] ( 4, 1.25) long -> x0 "CSE - moderate" -; V08 cse1 [V08,T04] ( 3, 1 ) long -> x1 "CSE - moderate"
+; V06 tmp4 [V06,T03] ( 2, 1 ) long -> x1 "field V04.m_metadataImport2 (fldOffset=0x8)" P-INDEP
; ; Lcl frame size = 0
-G_M38955_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG - stp fp, lr, [sp, #-0x20]! - stp x19, x20, [sp, #0x10]
+G_M38955_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG + stp fp, lr, [sp, #-0x10]!
mov fp, sp
- mov x20, x0 - ; byrRegs +[x20] - mov x19, x1 - ; gcrRegs +[x19] - ;; size=20 bbWeight=1 PerfScore 3.50 -G_M38955_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz - mov x0, x19 - ; gcrRegs +[x0] - cbz x0, G_M38955_IG04
;; size=8 bbWeight=1 PerfScore 1.50
-G_M38955_IG03: ; bbWeight=0.25, gcrefRegs=80001 {x0 x19}, byrefRegs=100000 {x20}, byref, isz - ldr x1, [x0] - movz x0, #0xD1FFAB1E - ; gcrRegs -[x0] - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - cmp x1, x0
+G_M38955_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0001 {x0}, byref, isz + ; gcrRegs +[x1] + ; byrRegs +[x0] + mov x2, x1 + ; gcrRegs +[x2] + cbz x2, G_M38955_IG04 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M38955_IG03: ; bbWeight=0.25, gcrefRegs=0006 {x1 x2}, byrefRegs=0001 {x0}, byref, isz + ldr x2, [x2] + ; gcrRegs -[x2] + movz x3, #0xD1FFAB1E + movk x3, #0xD1FFAB1E LSL #16 + movk x3, #0xD1FFAB1E LSL #32 + cmp x2, x3
beq G_M38955_IG06 ;; size=24 bbWeight=0.25 PerfScore 1.50 G_M38955_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19] - ; byrRegs -[x20]
+ ; gcrRegs -[x1] + ; byrRegs -[x0]
mov w0, wzr ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M38955_IG05: ; bbWeight=0.50, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20
+ ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 1.50 -G_M38955_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, gcvars, byref, isz - ; gcrRegs +[x19] - ; byrRegs +[x20] - cmp x1, x0 - beq G_M38955_IG08 - ;; size=8 bbWeight=0.50 PerfScore 0.75 -G_M38955_IG07: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref - mov x1, x19
+ ;; size=8 bbWeight=0.50 PerfScore 1.00 +G_M38955_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0001 {x0}, gcvars, byref
; gcrRegs +[x1]
- bl CORINFO_HELP_UNBOX
+ ; byrRegs +[x0] + ldr x1, [x1, #0x10]
; gcrRegs -[x1]
- ;; size=8 bbWeight=0.25 PerfScore 0.38 -G_M38955_IG08: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref - ldr x0, [x19, #0x10] - ldr x1, [x20, #0x08] - cmp x0, x1
+ ldr x0, [x0, #0x08] + ; byrRegs -[x0] + cmp x1, x0
cset x0, eq ;; size=16 bbWeight=0.50 PerfScore 3.50
-G_M38955_IG09: ; bbWeight=0.50, epilog, nogc, extend - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20
+G_M38955_IG07: ; bbWeight=0.50, epilog, nogc, extend + ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 1.50
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 112, prolog size 12, PerfScore 14.38, instruction count 28, allocated bytes for code 112 (MethodHash=885867d4) for method System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 76, prolog size 8, PerfScore 10.25, instruction count 19, allocated bytes for code 76 (MethodHash=885867d4) for method System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 1
Epilog Count : 2 E bit : 0 X bit : 0 Vers : 0
- Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
+ Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -99,10 +84,7 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16] - 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! - E4 end - E4 end
+ 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
E4 end E4 end

-36 (-21.95%) : 46977.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan1[uint]):int (Tier1)

@@ -11,12 +11,14 @@ ;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]> ; V02 loc0 [V02,T00] ( 7, 24.50) int -> x4 ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T01] ( 6, 20 ) int -> x5 "dup spill" -; V05 tmp2 [V05,T05] ( 3, 5.50) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP -; V06 tmp3 [V06,T04] ( 5, 7 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP -; V07 tmp4 [V07,T06] ( 3, 5.50) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP -; V08 tmp5 [V08,T03] ( 6, 7.50) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP -; V09 cse0 [V09,T02] ( 6, 13.50) long -> x6 multi-def "CSE - aggressive"
+; V04 tmp1 [V04,T01] ( 2, 16 ) int -> x4 "dup spill" +; V05 tmp2 [V05,T07] ( 2, 5 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP +; V06 tmp3 [V06,T04] ( 4, 6.50) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP +; V07 tmp4 [V07,T08] ( 2, 5 ) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP +; V08 tmp5 [V08,T03] ( 5, 7 ) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP +; V09 cse0 [V09,T05] ( 3, 8.50) int -> x6 "CSE - aggressive" +; V10 cse1 [V10,T06] ( 3, 8.50) int -> x5 "CSE - aggressive" +; V11 cse2 [V11,T02] ( 3, 12 ) long -> x5 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -33,51 +35,39 @@ G_M264_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs -[x0 x2] cmp w1, w3 blt G_M264_IG11
- b G_M264_IG09
+ b G_M264_IG07
;; size=12 bbWeight=0.50 PerfScore 1.25 G_M264_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref ; byrRegs +[x0 x2] sxtw w4, w3 ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M264_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
- sub w5, w4, #1 - sxtw w4, w5 - tbnz w4, #31, G_M264_IG06
+ sub w4, w4, #1 + tbnz w4, #31, G_M264_IG09
cmp w4, w1 bhs G_M264_IG13
- ubfiz x6, x4, #2, #32 - ldr w7, [x0, x6]
+ ubfiz x5, x4, #2, #32 + ldr w6, [x0, x5]
cmp w4, w3 bhs G_M264_IG13
- ldr w6, [x2, x6] - cmp w7, w6
+ ldr w5, [x2, x5] + cmp w6, w5
beq G_M264_IG05
- ;; size=48 bbWeight=4 PerfScore 54.00 -G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz - tbz w5, #31, G_M264_IG08 - mov w0, wzr - ; byrRegs -[x0]
+ ;; size=44 bbWeight=4 PerfScore 52.00 +G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ; byrRegs -[x0 x2] + cmp w5, w6 + bhi G_M264_IG11
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M264_IG07: ; bbWeight=0.50, epilog, nogc, extend
+G_M264_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov w0, #1 + ;; size=4 bbWeight=0.50 PerfScore 0.25 +G_M264_IG08: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M264_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, gcvars, byref, isz - ; byrRegs +[x0] - cmp w5, w1 - bhs G_M264_IG13 - ubfiz x6, x5, #2, #32 - ldr w0, [x0, x6] - ; byrRegs -[x0] - cmp w5, w3 - bhs G_M264_IG13 - ldr w1, [x2, x6] - cmp w0, w1 - blo G_M264_IG11 - ;; size=36 bbWeight=0.50 PerfScore 5.75 -G_M264_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; byrRegs -[x2] - mov w0, #1
+G_M264_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + mov w0, wzr
;; size=4 bbWeight=0.50 PerfScore 0.25 G_M264_IG10: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x10 @@ -96,7 +86,7 @@ G_M264_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, brk_windows #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 164, prolog size 8, PerfScore 68.50, instruction count 41, allocated bytes for code 164 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
+; Total bytes of code 128, prolog size 8, PerfScore 61.00, instruction count 32, allocated bytes for code 128 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
; ============================================================ Unwind Info: @@ -107,7 +97,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
+ Function Length : 32 (0x00020) Actual length = 128 (0x000080)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-20 (-6.94%) : 27419.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)

@@ -8,18 +8,19 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T08] ( 6, 4.02) ref -> x20 class-hnd single-def <int[]> -; V01 arg1 [V01,T10] ( 3, 3 ) int -> x1 single-def -; V02 arg2 [V02,T05] ( 6, 12 ) int -> x19 single-def -; V03 loc0 [V03,T00] ( 14,227 ) int -> x21 -; V04 loc1 [V04,T01] ( 10,134 ) int -> x2
+; V00 arg0 [V00,T09] ( 6, 4.02) ref -> x20 class-hnd single-def <int[]> +; V01 arg1 [V01,T11] ( 3, 3 ) int -> x1 single-def +; V02 arg2 [V02,T06] ( 6, 12 ) int -> x19 single-def +; V03 loc0 [V03,T00] ( 13,219 ) int -> x21 +; V04 loc1 [V04,T01] ( 7,122 ) int -> x2
; V05 loc2 [V05,T04] ( 3, 80.50) int -> x0
-; V06 loc3 [V06,T09] ( 4, 5 ) int -> x6
+; V06 loc3 [V06,T10] ( 4, 5 ) int -> x7
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T06] ( 2, 8 ) int -> x7 "Strict ordering of exceptions for Array store" -; V09 cse0 [V09,T07] ( 6, 7.50) long -> x5 multi-def "CSE - aggressive" -; V10 cse1 [V10,T03] ( 7, 85.01) int -> x3 hoist "CSE - aggressive" -; V11 cse2 [V11,T02] ( 10, 89.51) byref -> x4 hoist "CSE - aggressive"
+; V08 tmp1 [V08,T07] ( 2, 8 ) int -> x5 "Strict ordering of exceptions for Array store" +; V09 cse0 [V09,T05] ( 3, 34 ) int -> x5 "CSE - aggressive" +; V10 cse1 [V10,T08] ( 6, 7.50) long -> x6 multi-def "CSE - aggressive" +; V11 cse2 [V11,T03] ( 6, 83.01) int -> x3 hoist "CSE - aggressive" +; V12 cse3 [V12,T02] ( 9, 87.51) byref -> x4 hoist "CSE - aggressive"
; ; Lcl frame size = 8 @@ -49,7 +50,7 @@ G_M63260_IG04: ; bbWeight=8, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, ;; size=8 bbWeight=8 PerfScore 12.00 G_M63260_IG05: ; bbWeight=64, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz cmp w21, w3
- bhs G_M63260_IG16
+ bhs G_M63260_IG15
ldr w5, [x4, w21, UXTW #2] cmp w5, w0 ble G_M63260_IG03 @@ -62,46 +63,39 @@ G_M63260_IG07: ; bbWeight=8, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, ;; size=4 bbWeight=8 PerfScore 4.00 G_M63260_IG08: ; bbWeight=64, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz cmp w2, w21
- ble G_M63260_IG10
+ ble G_M63260_IG11
;; size=8 bbWeight=64 PerfScore 96.00 G_M63260_IG09: ; bbWeight=16, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz cmp w2, w3
- bhs G_M63260_IG16
+ bhs G_M63260_IG15
ldr w5, [x4, w2, UXTW #2] cmp w5, w0 bge G_M63260_IG07 ;; size=20 bbWeight=16 PerfScore 96.00
-G_M63260_IG10: ; bbWeight=8, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz - cmp w21, w2 - bge G_M63260_IG12 - ;; size=8 bbWeight=8 PerfScore 12.00 -G_M63260_IG11: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
+G_M63260_IG10: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
cmp w21, w3
- bhs G_M63260_IG16 - ubfiz x5, x21, #2, #32 - ldr w6, [x4, x5] - cmp w2, w3 - bhs G_M63260_IG16 - ldr w7, [x4, w2, UXTW #2] - str w7, [x4, x5] - str w6, [x4, w2, UXTW #2]
+ bhs G_M63260_IG15 + ubfiz x6, x21, #2, #32 + ldr w7, [x4, x6] + str w5, [x4, x6] + str w7, [x4, w2, UXTW #2]
b G_M63260_IG04
- ;; size=40 bbWeight=2 PerfScore 26.00 -G_M63260_IG12: ; bbWeight=8, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
+ ;; size=28 bbWeight=2 PerfScore 17.00 +G_M63260_IG11: ; bbWeight=8, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
cmp w21, w19
- beq G_M63260_IG14
+ beq G_M63260_IG13
;; size=8 bbWeight=8 PerfScore 12.00
-G_M63260_IG13: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
+G_M63260_IG12: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0010 {x4}, byref, isz
cmp w21, w3
- bhs G_M63260_IG16 - ubfiz x5, x21, #2, #32 - ldr w6, [x4, x5] - str w0, [x4, x5]
+ bhs G_M63260_IG15 + ubfiz x6, x21, #2, #32 + ldr w7, [x4, x6] + str w0, [x4, x6]
cmp w19, w3
- bhs G_M63260_IG16 - str w6, [x4, w19, UXTW #2]
+ bhs G_M63260_IG15 + str w7, [x4, w19, UXTW #2]
;; size=32 bbWeight=0.50 PerfScore 4.50
-G_M63260_IG14: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M63260_IG13: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
; byrRegs -[x4] sub w2, w21, #1 mov x0, x20 @@ -125,20 +119,20 @@ G_M63260_IG14: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b ; gcrRegs -[x0 x20] ; gcr arg pop 0 ;; size=60 bbWeight=1 PerfScore 13.50
-G_M63260_IG15: ; bbWeight=1, epilog, nogc, extend
+G_M63260_IG14: ; bbWeight=1, epilog, nogc, extend
ldr x21, [sp, #0x28] ldp x19, x20, [sp, #0x18] ldp fp, lr, [sp], #0x30 add sp, sp, #64 ret lr ;; size=20 bbWeight=1 PerfScore 5.50
-G_M63260_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M63260_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 brk_windows #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 288, prolog size 32, PerfScore 668.66, instruction count 72, allocated bytes for code 288 (MethodHash=855f08e3) for method Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)
+; Total bytes of code 268, prolog size 32, PerfScore 647.66, instruction count 67, allocated bytes for code 268 (MethodHash=855f08e3) for method Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)
; ============================================================ Unwind Info: @@ -149,7 +143,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 72 (0x00048) Actual length = 288 (0x000120)
+ Function Length : 67 (0x00043) Actual length = 268 (0x00010c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+0 (0.00%) : 24288.dasm - System.Formats.Tar.TarHeader:FormatOctal(long,System.Span`1[ubyte]):int (Tier0-FullOpts)

@@ -8,7 +8,7 @@ ; 0 inlinees with PGO data; 6 single block inlinees; 4 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T06] ( 3, 3 ) long -> x0 single-def
+; V00 arg0 [V00,T05] ( 3, 3 ) long -> x0 single-def
; V01 arg1 [V01,T03] ( 4, 4 ) struct (16) [fp+0x10] do-not-enreg[SA] multireg-arg single-def <System.Span`1[ubyte]> ; V02 loc0 [V02,T00] ( 5, 33 ) long -> x0 ;* V03 loc1 [V03 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[ubyte]> @@ -21,7 +21,7 @@ ;* V10 tmp4 [V10 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]> ;* V11 tmp5 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]> ; V12 tmp6 [V12,T04] ( 3, 6 ) int -> x20 "Inlining Arg"
-; V13 tmp7 [V13,T07] ( 2, 4 ) byref -> x19 single-def "Inlining Arg"
+; V13 tmp7 [V13,T06] ( 2, 4 ) byref -> x19 single-def "Inlining Arg"
;* V14 tmp8 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V15 tmp9 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V16 tmp10 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]> @@ -47,7 +47,7 @@ ; V36 tmp30 [V36,T09] ( 2, 2 ) byref -> x0 single-def "field V17._reference (fldOffset=0x0)" P-INDEP ; V37 tmp31 [V37,T10] ( 2, 2 ) int -> x1 "field V17._length (fldOffset=0x8)" P-INDEP ; V38 GsCookie [V38 ] ( 1, 1 ) long -> [fp+0x40] do-not-enreg[X] addr-exposed "GSSecurityCookie"
-; V39 cse0 [V39,T05] ( 5, 5 ) ref -> x21 "CSE - aggressive"
+; V39 cse0 [V39,T07] ( 5, 2.50) ref -> x21 "CSE - aggressive"
; ; Lcl frame size = 56 @@ -70,7 +70,7 @@ G_M19635_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref G_M19635_IG03: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz ; byrRegs +[x1] cmp w2, #32
- bhs G_M19635_IG08
+ bhs G_M19635_IG09
and w3, w0, #7 add w3, w3, #48 strb w3, [x1, w2, UXTW #2] @@ -83,13 +83,16 @@ G_M19635_IG04: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byre ;; size=8 bbWeight=4 PerfScore 6.00 G_M19635_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz cmp w2, #32
- bhi G_M19635_IG09
+ bhi G_M19635_IG10
mov w0, w2 add x19, x1, x0 ; byrRegs +[x19] mov w0, #32 sub w20, w0, w2
- tbz w20, #31, G_M19635_IG06
+ tbz w20, #31, G_M19635_IG07 + ;; size=28 bbWeight=1 PerfScore 4.50 +G_M19635_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref + ; byrRegs -[x1]
movz x21, #8 movk x21, #0xD1FFAB1E LSL #16 movk x21, #0xD1FFAB1E LSL #32 @@ -97,7 +100,6 @@ G_M19635_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byre ; gcrRegs +[x0] mov x1, x21 ; gcrRegs +[x1]
- ; byrRegs -[x1]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 @@ -116,8 +118,8 @@ G_M19635_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byre blr x2 ; gcrRegs -[x0-x1 x21] ; gcr arg pop 0
- ;; size=96 bbWeight=1 PerfScore 19.00 -G_M19635_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+ ;; size=68 bbWeight=0.50 PerfScore 7.25 +G_M19635_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
mov x0, x19 ; byrRegs +[x0] sxtw w1, w20 @@ -136,21 +138,21 @@ G_M19635_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by movk xip0, #0xD1FFAB1E LSL #48 ldr xip1, [fp, #0x40] // [V38 GsCookie] cmp xip0, xip1
- beq G_M19635_IG07
+ beq G_M19635_IG08
bl CORINFO_HELP_FAIL_FAST ; gcr arg pop 0 ;; size=64 bbWeight=1 PerfScore 16.00
-G_M19635_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M19635_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldr x21, [sp, #0x58] ldp x19, x20, [sp, #0x48] ldp fp, lr, [sp], #0x60 ret lr ;; size=16 bbWeight=1 PerfScore 5.00
-G_M19635_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M19635_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M19635_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M19635_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRangeException() movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -160,7 +162,7 @@ G_M19635_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_windows #0 ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 288, prolog size 40, PerfScore 98.50, instruction count 72, allocated bytes for code 288 (MethodHash=8d43b34c) for method System.Formats.Tar.TarHeader:FormatOctal(long,System.Span`1[ubyte]):int (Tier0-FullOpts)
+; Total bytes of code 288, prolog size 40, PerfScore 91.25, instruction count 72, allocated bytes for code 288 (MethodHash=8d43b34c) for method System.Formats.Tar.TarHeader:FormatOctal(long,System.Span`1[ubyte]):int (Tier0-FullOpts)
; ============================================================ Unwind Info:

+4 (+0.60%) : 19751.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)

@@ -106,11 +106,11 @@ G_M62513_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr ldr x0, [fp, #0x18] // [V00 this] ; gcrRegs +[x0] ldr w1, [x0, #0x14]
- cbz w1, G_M62513_IG18
+ cbz w1, G_M62513_IG19
ldr w1, [x0, #0x18] cbnz w1, G_M62513_IG10 str w21, [x0, #0x18]
- b G_M62513_IG18
+ b G_M62513_IG19
;; size=28 bbWeight=0.50 PerfScore 6.00 G_M62513_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x0] @@ -134,7 +134,7 @@ G_M62513_IG10: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b ; gcrRegs +[x0] sub w1, w21, w1 cmp w1, w23
- ble G_M62513_IG18
+ ble G_M62513_IG19
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 @@ -236,30 +236,33 @@ G_M62513_IG14: ; bbWeight=4, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, b ; gcrRegs +[x0] ldr w20, [x0, #0x14] cmp w20, #0
- ble G_M62513_IG15
+ ble G_M62513_IG16
sub w1, w24, #1 sxtw w22, w1 cmp w24, #0 bgt G_M62513_IG12 ;; size=32 bbWeight=4 PerfScore 36.00
-G_M62513_IG15: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+G_M62513_IG15: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
; gcrRegs -[x21]
- cmp w20, #0 - bgt G_M62513_IG16 - mov w1, wzr
b G_M62513_IG17
+ ;; size=4 bbWeight=0.50 PerfScore 0.50 +G_M62513_IG16: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz + cmp w20, #0 + bgt G_M62513_IG17 + mov w1, wzr + b G_M62513_IG18
;; size=16 bbWeight=0.50 PerfScore 1.50
-G_M62513_IG16: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M62513_IG17: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
asr w1, w23, #31 and w1, w1, #3 add w1, w1, w23 ldr w2, [x0, #0x18] add w1, w2, w1, ASR #2 ;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M62513_IG17: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M62513_IG18: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
str w1, [x0, #0x18] ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M62513_IG18: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+G_M62513_IG19: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
ldrb w1, [fp, #0x20] // [V08 loc3] cbz w1, G_M62513_IG03 ; GC ptr vars -{V00 V01} @@ -268,7 +271,7 @@ G_M62513_IG18: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b ; gcr arg pop 0 b G_M62513_IG03 ;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M62513_IG19: ; bbWeight=0, gcVars=0000000000000002 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+G_M62513_IG20: ; bbWeight=0, gcVars=0000000000000002 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
; GC ptr vars +{V00 V01} stp fp, lr, [sp, #-0x50]! stp x19, x20, [sp, #0x20] @@ -277,9 +280,9 @@ G_M62513_IG19: ; bbWeight=0, gcVars=0000000000000002 {V00}, gcrefRegs=000 add x3, fp, #96 str x3, [sp, #0x18] ;; size=24 bbWeight=0 PerfScore 0.00
-G_M62513_IG20: ; bbWeight=0, gcVars=0000000000000002 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M62513_IG21: ; bbWeight=0, gcVars=0000000000000002 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
ldrb w0, [fp, #0x20] // [V08 loc3]
- cbz w0, G_M62513_IG21
+ cbz w0, G_M62513_IG22
ldr x0, [fp, #0x18] // [V00 this] ; gcrRegs +[x0] ; GC ptr vars -{V00 V01} @@ -287,7 +290,7 @@ G_M62513_IG20: ; bbWeight=0, gcVars=0000000000000002 {V00}, gcrefRegs=000 ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=16 bbWeight=0 PerfScore 0.00
-G_M62513_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
+G_M62513_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
ldp x23, x24, [sp, #0x40] ldp x21, x22, [sp, #0x30] ldp x19, x20, [sp, #0x20] @@ -295,7 +298,7 @@ G_M62513_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ret lr ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 668, prolog size 48, PerfScore 215.00, instruction count 167, allocated bytes for code 668 (MethodHash=d51a0bce) for method System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
+; Total bytes of code 672, prolog size 48, PerfScore 215.50, instruction count 168, allocated bytes for code 672 (MethodHash=d51a0bce) for method System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
; ============================================================ Unwind Info: @@ -306,7 +309,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 152 (0x00098) Actual length = 608 (0x000260)
+ Function Length : 153 (0x00099) Actual length = 612 (0x000264)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -343,4 +346,4 @@ Unwind Info: *************** EH table for System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this 1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M62513_IG05..G_M62513_IG18) handled by [G_M62513_IG19..END) (fault)
+EH#0: try [G_M62513_IG05..G_M62513_IG19) handled by [G_M62513_IG20..END) (fault)
+16 (+1.39%) : 6673.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (Tier0-FullOpts)
@@ -11,10 +11,10 @@ ; V00 arg0 [V00,T07] ( 22, 23 ) ref -> x19 class-hnd single-def <System.Collections.Generic.List`1[System.String]> ; V01 loc0 [V01,T19] ( 7, 3.50) ref -> x20 class-hnd exact single-def <System.String> ; V02 loc1 [V02 ] ( 20, 54 ) struct (16) [fp-0x48] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Span`1[ushort]>
-; V03 loc2 [V03,T00] ( 39,149.08) int -> x22
+; V03 loc2 [V03,T00] ( 41,183.08) int -> x22
; V04 loc3 [V04,T22] ( 4, 2 ) int -> x0 ;* V05 loc4 [V05 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[ushort]>
-; V06 loc5 [V06,T06] ( 9, 25.50) int -> x21
+; V06 loc5 [V06,T06] ( 9, 25.50) int -> x23
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V08 tmp1 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> ; V09 tmp2 [V09,T04] ( 5, 28 ) ref -> x0 class-hnd exact "impAppendStmt" <System.String> @@ -44,12 +44,12 @@ ; V33 cse0 [V33,T14] ( 3, 10 ) int -> x0 "CSE - aggressive" ; V34 cse1 [V34,T28] ( 3, 1.50) long -> x24 "CSE - moderate" ; V35 cse2 [V35,T31] ( 2, 1 ) int -> x12 "CSE - moderate"
-; V36 cse3 [V36,T01] ( 3, 48 ) long -> x1 "CSE - aggressive"
+; V36 cse3 [V36,T02] ( 3, 48 ) long -> x1 "CSE - aggressive"
; V37 cse4 [V37,T11] ( 3, 12 ) long -> x1 "CSE - aggressive" ; V38 cse5 [V38,T12] ( 3, 12 ) int -> x2 "CSE - aggressive" ; V39 cse6 [V39,T10] ( 3, 12 ) ref -> x1 "CSE - aggressive"
-; V40 cse7 [V40,T03] ( 15, 30.54) int -> x21 "CSE - aggressive" -; V41 cse8 [V41,T02] ( 10, 46 ) byref -> x23 hoist multi-def "CSE - aggressive"
+; V40 cse7 [V40,T01] ( 17, 64.54) int -> x21 "CSE - aggressive" +; V41 cse8 [V41,T03] ( 10, 46 ) byref -> x23 hoist multi-def "CSE - aggressive"
; V42 cse9 [V42,T27] ( 3, 1.50) ref -> x1 "CSE - aggressive" ; V43 cse10 [V43,T17] ( 2, 8 ) int -> x3 "CSE - aggressive" ; V44 cse11 [V44,T13] ( 3, 11.88) int -> x0 "CSE - aggressive" @@ -77,19 +77,19 @@ G_M28069_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=56 bbWeight=1 PerfScore 10.50 G_M28069_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldr w0, [x19, #0x10]
- cbz w0, G_M28069_IG28
+ cbz w0, G_M28069_IG27
;; size=8 bbWeight=1 PerfScore 4.00 G_M28069_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldr x0, [x19, #0x08] ; gcrRegs +[x0] ldr w1, [x0, #0x08] cmp w1, #0
- bls G_M28069_IG30
+ bls G_M28069_IG29
ldr x20, [x0, #0x10] ; gcrRegs +[x20] ldr w21, [x20, #0x08] cmp w21, #100
- bgt G_M28069_IG28
+ bgt G_M28069_IG27
add w0, w21, #2 ; gcrRegs -[x0] mov w1, #2 @@ -116,109 +116,107 @@ G_M28069_IG05: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000 mov x1, sp ;; size=8 bbWeight=0.50 PerfScore 0.50 G_M28069_IG06: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- tbnz w0, #31, G_M28069_IG31
+ tbnz w0, #31, G_M28069_IG30
str x1, [fp, #-0x48] // [V23 tmp16] str w0, [fp, #-0x40] // [V24 tmp17] mov w22, wzr cmp w21, #0
- ble G_M28069_IG15
+ ble G_M28069_IG14
add x23, x20, #12 ; byrRegs +[x23] ;; size=28 bbWeight=0.50 PerfScore 2.75 G_M28069_IG07: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz ldrh w0, [x23, w22, UXTW #2] cmp w0, #39
- bne G_M28069_IG11
+ bne G_M28069_IG10
;; size=12 bbWeight=4 PerfScore 18.00 G_M28069_IG08: ; bbWeight=16, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz ldr w0, [fp, #-0x40] // [V24 tmp17] cmp w22, w0
- bhs G_M28069_IG30
+ bhs G_M28069_IG29
ldr x0, [fp, #-0x48] // [V23 tmp16] ; byrRegs +[x0] ubfiz x1, x22, #1, #32 add x0, x0, x1
+ cmp w22, w21 + bhs G_M28069_IG29
ldrh w1, [x23, x1] strh w1, [x0] add w22, w22, #1 cmp w21, w22
- ble G_M28069_IG09
+ ble G_M28069_IG27 + cmp w22, w21 + bhs G_M28069_IG29
ldrh w0, [x23, w22, UXTW #2] ; byrRegs -[x0] cmp w0, #39 bne G_M28069_IG08
- ;; size=56 bbWeight=16 PerfScore 280.00 -G_M28069_IG09: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz - cmp w21, w22 - bgt G_M28069_IG12 - ;; size=8 bbWeight=2 PerfScore 3.00 -G_M28069_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x19-x20] - ; byrRegs -[x23] - b G_M28069_IG28 - ;; size=4 bbWeight=0.50 PerfScore 0.50 -G_M28069_IG11: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz - ; gcrRegs +[x19-x20] - ; byrRegs +[x23]
+ ;; size=72 bbWeight=16 PerfScore 328.00 +G_M28069_IG09: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref + b G_M28069_IG11 + ;; size=4 bbWeight=4 PerfScore 4.00 +G_M28069_IG10: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
cmp w0, #121
- beq G_M28069_IG14
+ beq G_M28069_IG13
;; size=8 bbWeight=2 PerfScore 3.00
-G_M28069_IG12: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
+G_M28069_IG11: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
ldr w0, [fp, #-0x40] // [V24 tmp17] cmp w22, w0
- bhs G_M28069_IG30
+ bhs G_M28069_IG29
ldr x0, [fp, #-0x48] // [V23 tmp16] ; byrRegs +[x0] ubfiz x1, x22, #1, #32 add x0, x0, x1
+ cmp w22, w21 + bhs G_M28069_IG29
ldrh w1, [x23, x1] strh w1, [x0] add w22, w22, #1 cmp w21, w22 bgt G_M28069_IG07
- ;; size=44 bbWeight=4 PerfScore 52.00 -G_M28069_IG13: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+ ;; size=52 bbWeight=4 PerfScore 58.00 +G_M28069_IG12: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; byrRegs -[x0 x23]
- b G_M28069_IG15
+ b G_M28069_IG14
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M28069_IG14: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG13: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldr w0, [fp, #-0x40] // [V24 tmp17] cmp w22, w0
- bhs G_M28069_IG30
+ bhs G_M28069_IG29
ldr x0, [fp, #-0x48] // [V23 tmp16] ; byrRegs +[x0] mov w1, #121 strh w1, [x0, w22, UXTW #2] ;; size=24 bbWeight=0.50 PerfScore 3.50
-G_M28069_IG15: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG14: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x0] sub w0, w21, #1 cmp w0, w22
- ble G_M28069_IG28
+ ble G_M28069_IG27
add w0, w22, #1 cmp w0, w21
- bhs G_M28069_IG30
+ bhs G_M28069_IG29
add x23, x20, #12 ; byrRegs +[x23] add w0, w22, #1 ubfiz x24, x0, #1, #32 ldrh w0, [x23, x24] cmp w0, #121
- bne G_M28069_IG28
+ bne G_M28069_IG27
add w25, w22, #2 cmp w21, w25
- ble G_M28069_IG16
+ ble G_M28069_IG15
cmp w25, w21
- bhs G_M28069_IG30
+ bhs G_M28069_IG29
ldrh w0, [x23, w25, UXTW #2] cmp w0, #121
- beq G_M28069_IG28
+ beq G_M28069_IG27
;; size=80 bbWeight=0.50 PerfScore 9.25
-G_M28069_IG16: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
+G_M28069_IG15: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
add w0, w22, #3 ldr w1, [fp, #-0x40] // [V24 tmp17] cmp w0, w1
- blt G_M28069_IG17
+ blt G_M28069_IG16
movz x1, #8 movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 @@ -232,11 +230,11 @@ G_M28069_IG16: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800 ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=52 bbWeight=0.50 PerfScore 5.75
-G_M28069_IG17: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
+G_M28069_IG16: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
add w0, w22, #1 ldr w1, [fp, #-0x40] // [V24 tmp17] cmp w0, w1
- bhs G_M28069_IG30
+ bhs G_M28069_IG29
ldr x0, [fp, #-0x48] // [V23 tmp16] ; byrRegs +[x0] mov w1, #121 @@ -244,7 +242,7 @@ G_M28069_IG17: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800 ldr w0, [fp, #-0x40] // [V24 tmp17] ; byrRegs -[x0] cmp w25, w0
- bhs G_M28069_IG30
+ bhs G_M28069_IG29
ldr x0, [fp, #-0x48] // [V23 tmp16] ; byrRegs +[x0] strh w1, [x0, w25, UXTW #2] @@ -252,7 +250,7 @@ G_M28069_IG17: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800 ; byrRegs -[x0] ldr w1, [fp, #-0x40] // [V24 tmp17] cmp w0, w1
- bhs G_M28069_IG30
+ bhs G_M28069_IG29
ldr x0, [fp, #-0x48] // [V23 tmp16] ; byrRegs +[x0] add w1, w22, #3 @@ -260,15 +258,15 @@ G_M28069_IG17: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800 strh w2, [x0, w1, UXTW #2] sxtw w22, w25 cmp w21, w22
- ble G_M28069_IG21 - tbnz w22, #31, G_M28069_IG20
+ ble G_M28069_IG20 + tbnz w22, #31, G_M28069_IG19
;; size=96 bbWeight=0.50 PerfScore 12.50
-G_M28069_IG18: ; bbWeight=3.96, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
+G_M28069_IG17: ; bbWeight=3.96, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
; byrRegs -[x0] add w0, w22, #2 ldr w1, [fp, #-0x40] // [V24 tmp17] cmp w0, w1
- bhs G_M28069_IG30
+ bhs G_M28069_IG29
ldr x1, [fp, #-0x48] // [V23 tmp16] ; byrRegs +[x1] ubfiz x0, x0, #1, #32 @@ -279,32 +277,32 @@ G_M28069_IG18: ; bbWeight=3.96, gcrefRegs=180000 {x19 x20}, byrefRegs=800 strh w1, [x0] add w22, w22, #1 ...

coreclr_tests.run.windows.arm64.checked.mch

-40 (-34.48%) : 452685.dasm - System.UInt64:Equals(System.Object):ubyte:this (Tier1)

@@ -9,83 +9,70 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 3 ) byref -> x0 this single-def
-; V01 arg1 [V01,T00] ( 5, 4.50) ref -> x19 class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 4, 4 ) ref -> x1 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> x1 class-hnd "spilling QMark2" <System.UInt64> -; V04 tmp2 [V04,T03] ( 2, 4 ) long -> x20 "impAppendStmt" -; V05 cse0 [V05,T04] ( 4, 2.50) long -> x2 "CSE - aggressive" -; V06 cse1 [V06,T05] ( 3, 2 ) long -> x1 "CSE - aggressive"
+; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> x2 class-hnd "spilling QMark2" <System.UInt64> +; V04 tmp2 [V04,T03] ( 2, 4 ) long -> x0 "impAppendStmt" +; V05 cse0 [V05,T04] ( 2, 1 ) long -> x3 "CSE - moderate"
; ; Lcl frame size = 0 G_M48470_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]! - stp x19, x20, [sp, #0x10]
+ stp fp, lr, [sp, #-0x10]!
mov fp, sp
- mov x19, x1 - ; gcrRegs +[x19] - ;; size=16 bbWeight=1 PerfScore 3.00 -G_M48470_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref, isz - ; byrRegs +[x0] - mov x1, x19 - ; gcrRegs +[x1] - cbz x1, G_M48470_IG08
;; size=8 bbWeight=1 PerfScore 1.50
-G_M48470_IG03: ; bbWeight=0.50, gcrefRegs=80002 {x1 x19}, byrefRegs=0001 {x0}, byref, isz - ldr x1, [x1] - ; gcrRegs -[x1] - movz x2, #0xD1FFAB1E - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - cmp x1, x2 - bne G_M48470_IG08 - ;; size=24 bbWeight=0.50 PerfScore 3.00 -G_M48470_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref, isz - ldr x20, [x0] - cmp x1, x2 - bne G_M48470_IG07 - ;; size=12 bbWeight=1 PerfScore 4.50 -G_M48470_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ; byrRegs -[x0] - ldr x0, [x19, #0x08] - cmp x20, x0 - cset x0, eq - ;; size=12 bbWeight=1 PerfScore 4.00 -G_M48470_IG06: ; bbWeight=1, epilog, nogc, extend - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20 - ret lr - ;; size=12 bbWeight=1 PerfScore 3.00 -G_M48470_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref - mov x1, x19
+G_M48470_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0001 {x0}, byref, isz
; gcrRegs +[x1]
- mov x0, x2 - bl CORINFO_HELP_UNBOX - ; gcrRegs -[x1] - b G_M48470_IG05 - ;; size=16 bbWeight=0.50 PerfScore 1.50 -G_M48470_IG08: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x19]
+ ; byrRegs +[x0] + mov x2, x1 + ; gcrRegs +[x2] + cbnz x2, G_M48470_IG05 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M48470_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x1-x2] + ; byrRegs -[x0]
mov w0, wzr
- ;; size=4 bbWeight=0.25 PerfScore 0.12 -G_M48470_IG09: ; bbWeight=0.25, epilog, nogc, extend - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20
+ ;; size=4 bbWeight=1 PerfScore 0.50 +G_M48470_IG04: ; bbWeight=1, epilog, nogc, extend + ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=0.25 PerfScore 0.75
+ ;; size=8 bbWeight=1 PerfScore 2.00 +G_M48470_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0006 {x1 x2}, byrefRegs=0001 {x0}, gcvars, byref, isz + ; gcrRegs +[x1-x2] + ; byrRegs +[x0] + ldr x2, [x2] + ; gcrRegs -[x2] + movz x3, #0xD1FFAB1E + movk x3, #0xD1FFAB1E LSL #16 + movk x3, #0xD1FFAB1E LSL #32 + cmp x2, x3 + bne G_M48470_IG03 + ;; size=24 bbWeight=0.50 PerfScore 3.00 +G_M48470_IG06: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0001 {x0}, byref + ldr x0, [x0] + ; byrRegs -[x0] + ldr x1, [x1, #0x08] + ; gcrRegs -[x1] + cmp x0, x1 + cset x0, eq + ;; size=16 bbWeight=1 PerfScore 7.00 +G_M48470_IG07: ; bbWeight=1, epilog, nogc, extend + ldp fp, lr, [sp], #0x10 + ret lr + ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 116, prolog size 12, PerfScore 21.38, instruction count 29, allocated bytes for code 116 (MethodHash=a80142a9) for method System.UInt64:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 76, prolog size 8, PerfScore 17.50, instruction count 19, allocated bytes for code 76 (MethodHash=a80142a9) for method System.UInt64:Equals(System.Object):ubyte:this (Tier1)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 1
Epilog Count : 2 E bit : 0 X bit : 0 Vers : 0
- Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
+ Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -96,10 +83,7 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16] - 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! - E4 end - E4 end
+ 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
E4 end E4 end

-40 (-34.48%) : 452679.dasm - System.Int64:Equals(System.Object):ubyte:this (Tier1)

@@ -9,83 +9,70 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 3 ) byref -> x0 this single-def
-; V01 arg1 [V01,T00] ( 5, 4.50) ref -> x19 class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 4, 4 ) ref -> x1 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> x1 class-hnd "spilling QMark2" <System.Int64> -; V04 tmp2 [V04,T03] ( 2, 4 ) long -> x20 "impAppendStmt" -; V05 cse0 [V05,T04] ( 4, 2.50) long -> x2 "CSE - aggressive" -; V06 cse1 [V06,T05] ( 3, 2 ) long -> x1 "CSE - aggressive"
+; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> x2 class-hnd "spilling QMark2" <System.Int64> +; V04 tmp2 [V04,T03] ( 2, 4 ) long -> x0 "impAppendStmt" +; V05 cse0 [V05,T04] ( 2, 1 ) long -> x3 "CSE - moderate"
; ; Lcl frame size = 0 G_M22531_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]! - stp x19, x20, [sp, #0x10]
+ stp fp, lr, [sp, #-0x10]!
mov fp, sp
- mov x19, x1 - ; gcrRegs +[x19] - ;; size=16 bbWeight=1 PerfScore 3.00 -G_M22531_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref, isz - ; byrRegs +[x0] - mov x1, x19 - ; gcrRegs +[x1] - cbz x1, G_M22531_IG08
;; size=8 bbWeight=1 PerfScore 1.50
-G_M22531_IG03: ; bbWeight=0.50, gcrefRegs=80002 {x1 x19}, byrefRegs=0001 {x0}, byref, isz - ldr x1, [x1] - ; gcrRegs -[x1] - movz x2, #0xD1FFAB1E - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - cmp x1, x2 - bne G_M22531_IG08 - ;; size=24 bbWeight=0.50 PerfScore 3.00 -G_M22531_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref, isz - ldr x20, [x0] - cmp x1, x2 - bne G_M22531_IG07 - ;; size=12 bbWeight=1 PerfScore 4.50 -G_M22531_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ; byrRegs -[x0] - ldr x0, [x19, #0x08] - cmp x20, x0 - cset x0, eq - ;; size=12 bbWeight=1 PerfScore 4.00 -G_M22531_IG06: ; bbWeight=1, epilog, nogc, extend - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20 - ret lr - ;; size=12 bbWeight=1 PerfScore 3.00 -G_M22531_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref - mov x1, x19
+G_M22531_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0001 {x0}, byref, isz
; gcrRegs +[x1]
- mov x0, x2 - bl CORINFO_HELP_UNBOX - ; gcrRegs -[x1] - b G_M22531_IG05 - ;; size=16 bbWeight=0.50 PerfScore 1.50 -G_M22531_IG08: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x19]
+ ; byrRegs +[x0] + mov x2, x1 + ; gcrRegs +[x2] + cbnz x2, G_M22531_IG05 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M22531_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x1-x2] + ; byrRegs -[x0]
mov w0, wzr
- ;; size=4 bbWeight=0.25 PerfScore 0.12 -G_M22531_IG09: ; bbWeight=0.25, epilog, nogc, extend - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20
+ ;; size=4 bbWeight=1 PerfScore 0.50 +G_M22531_IG04: ; bbWeight=1, epilog, nogc, extend + ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=0.25 PerfScore 0.75
+ ;; size=8 bbWeight=1 PerfScore 2.00 +G_M22531_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0006 {x1 x2}, byrefRegs=0001 {x0}, gcvars, byref, isz + ; gcrRegs +[x1-x2] + ; byrRegs +[x0] + ldr x2, [x2] + ; gcrRegs -[x2] + movz x3, #0xD1FFAB1E + movk x3, #0xD1FFAB1E LSL #16 + movk x3, #0xD1FFAB1E LSL #32 + cmp x2, x3 + bne G_M22531_IG03 + ;; size=24 bbWeight=0.50 PerfScore 3.00 +G_M22531_IG06: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0001 {x0}, byref + ldr x0, [x0] + ; byrRegs -[x0] + ldr x1, [x1, #0x08] + ; gcrRegs -[x1] + cmp x0, x1 + cset x0, eq + ;; size=16 bbWeight=1 PerfScore 7.00 +G_M22531_IG07: ; bbWeight=1, epilog, nogc, extend + ldp fp, lr, [sp], #0x10 + ret lr + ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 116, prolog size 12, PerfScore 21.38, instruction count 29, allocated bytes for code 116 (MethodHash=0a0ca7fc) for method System.Int64:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 76, prolog size 8, PerfScore 17.50, instruction count 19, allocated bytes for code 76 (MethodHash=0a0ca7fc) for method System.Int64:Equals(System.Object):ubyte:this (Tier1)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 1
Epilog Count : 2 E bit : 0 X bit : 0 Vers : 0
- Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
+ Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -96,10 +83,7 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16] - 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! - E4 end - E4 end
+ 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
E4 end E4 end

-36 (-32.14%) : 452677.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)

@@ -9,82 +9,66 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 3 ) byref -> x0 this single-def
-; V01 arg1 [V01,T00] ( 5, 4.50) ref -> x19 class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 4, 4 ) ref -> x1 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> x1 class-hnd "spilling QMark2" <System.Int32> -; V04 tmp2 [V04,T03] ( 2, 4 ) int -> x20 "impAppendStmt" -; V05 cse0 [V05,T04] ( 4, 2.50) long -> x2 "CSE - aggressive" -; V06 cse1 [V06,T05] ( 3, 2 ) long -> x1 "CSE - aggressive"
+; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> x2 class-hnd "spilling QMark2" <System.Int32> +; V04 tmp2 [V04,T03] ( 2, 4 ) int -> x0 "impAppendStmt" +; V05 cse0 [V05,T04] ( 2, 1 ) long -> x3 "CSE - moderate"
; ; Lcl frame size = 0 G_M40448_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]! - stp x19, x20, [sp, #0x10]
+ stp fp, lr, [sp, #-0x10]!
mov fp, sp
- mov x19, x1 - ; gcrRegs +[x19] - ;; size=16 bbWeight=1 PerfScore 3.00 -G_M40448_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref, isz - ; byrRegs +[x0] - mov x1, x19 - ; gcrRegs +[x1] - cbz x1, G_M40448_IG08
;; size=8 bbWeight=1 PerfScore 1.50
-G_M40448_IG03: ; bbWeight=0.50, gcrefRegs=80002 {x1 x19}, byrefRegs=0001 {x0}, byref, isz - ldr x1, [x1] - ; gcrRegs -[x1] - movz x2, #0xD1FFAB1E - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - cmp x1, x2 - bne G_M40448_IG08 - ;; size=24 bbWeight=0.50 PerfScore 3.00 -G_M40448_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref, isz - ldr w20, [x0] - cmp x1, x2 - beq G_M40448_IG06 - ;; size=12 bbWeight=1 PerfScore 4.50 -G_M40448_IG05: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ; byrRegs -[x0] - mov x1, x19
+G_M40448_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0001 {x0}, byref, isz
; gcrRegs +[x1]
- mov x0, x2 - bl CORINFO_HELP_UNBOX
+ ; byrRegs +[x0] + mov x2, x1 + ; gcrRegs +[x2] + cbz x2, G_M40448_IG06 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M40448_IG03: ; bbWeight=0.50, gcrefRegs=0006 {x1 x2}, byrefRegs=0001 {x0}, byref, isz + ldr x2, [x2] + ; gcrRegs -[x2] + movz x3, #0xD1FFAB1E + movk x3, #0xD1FFAB1E LSL #16 + movk x3, #0xD1FFAB1E LSL #32 + cmp x2, x3 + bne G_M40448_IG06 + ;; size=24 bbWeight=0.50 PerfScore 3.00 +G_M40448_IG04: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0001 {x0}, byref + ldr w0, [x0] + ; byrRegs -[x0] + ldr w1, [x1, #0x08]
; gcrRegs -[x1]
- ;; size=12 bbWeight=0.50 PerfScore 1.00 -G_M40448_IG06: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ldr w0, [x19, #0x08] - cmp w20, w0
+ cmp w0, w1
cset x0, eq
- ;; size=12 bbWeight=1 PerfScore 4.00 -G_M40448_IG07: ; bbWeight=1, epilog, nogc, extend - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20
+ ;; size=16 bbWeight=1 PerfScore 7.00 +G_M40448_IG05: ; bbWeight=1, epilog, nogc, extend + ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=1 PerfScore 3.00 -G_M40448_IG08: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x19]
+ ;; size=8 bbWeight=1 PerfScore 2.00 +G_M40448_IG06: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, wzr
- ;; size=4 bbWeight=0.25 PerfScore 0.12 -G_M40448_IG09: ; bbWeight=0.25, epilog, nogc, extend - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20
+ ;; size=4 bbWeight=1 PerfScore 0.50 +G_M40448_IG07: ; bbWeight=1, epilog, nogc, extend + ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=0.25 PerfScore 0.75
+ ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 112, prolog size 12, PerfScore 20.88, instruction count 28, allocated bytes for code 112 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 76, prolog size 8, PerfScore 17.50, instruction count 19, allocated bytes for code 76 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (Tier1)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 1
Epilog Count : 2 E bit : 0 X bit : 0 Vers : 0
- Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
+ Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -95,10 +79,7 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16] - 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! - E4 end - E4 end
+ 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
E4 end E4 end

+8 (+3.85%) : 488301.dasm - System.Reflection.RuntimeParameterInfo:GetParameters(System.IRuntimeMethodInfo,System.Reflection.MemberInfo,System.Signature):System.Reflection.ParameterInfo

@@ -9,17 +9,17 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 6, 5 ) ref -> x19 class-hnd single-def <System.IRuntimeMethodInfo>
+; V00 arg0 [V00,T00] ( 6, 5.50) ref -> x19 class-hnd single-def <System.IRuntimeMethodInfo>
; V01 arg1 [V01,T02] ( 3, 3 ) ref -> x20 class-hnd single-def <System.Reflection.MemberInfo> ; V02 arg2 [V02,T03] ( 3, 3 ) ref -> x21 class-hnd single-def <System.Signature> ; V03 loc0 [V03 ] ( 1, 1 ) ref -> [fp+0x10] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.Reflection.ParameterInfo> ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V05 tmp1 [V05,T01] ( 3, 5 ) ref -> x0 class-hnd "spilling QMark2" <<unknown class>> ; V06 tmp2 [V06,T06] ( 2, 1 ) int -> x0
-; V07 tmp3 [V07,T05] ( 3, 2.50) ref -> x0 class-hnd "spilling QMark2" <<unknown class>>
+; V07 tmp3 [V07,T04] ( 3, 4.50) ref -> x0 class-hnd "spilling QMark2" <<unknown class>>
;* V08 tmp4 [V08 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V09 tmp5 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V10 cse0 [V10,T04] ( 3, 3 ) ref -> x1 "CSE - aggressive"
+; V10 cse0 [V10,T05] ( 3, 3 ) ref -> x1 "CSE - aggressive"
; ; Lcl frame size = 8 @@ -39,30 +39,51 @@ G_M25265_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M25265_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz mov x0, x19 ; gcrRegs +[x0]
- cbz x0, G_M25265_IG04
+ cbnz x0, G_M25265_IG08
;; size=8 bbWeight=1 PerfScore 1.50
-G_M25265_IG03: ; bbWeight=0.50, gcrefRegs=380001 {x0 x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M25265_IG03: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x0] + mov x0, x19 + ; gcrRegs +[x0] + cbnz x0, G_M25265_IG06 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M25265_IG04: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x0] + cmp x19, #0 + cset x0, ne + tst w0, #255 + bne G_M25265_IG11 + ;; size=16 bbWeight=0.50 PerfScore 1.25 +G_M25265_IG05: ; bbWeight=0.44, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref + b G_M25265_IG10 + ;; size=4 bbWeight=0.44 PerfScore 0.44 +G_M25265_IG06: ; bbWeight=0.25, gcrefRegs=380001 {x0 x19 x20 x21}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[x0]
ldr x0, [x0] ; gcrRegs -[x0] movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 cmp x0, x1
- beq G_M25265_IG07 - ;; size=24 bbWeight=0.50 PerfScore 3.00 -G_M25265_IG04: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz - mov x0, x19
+ beq G_M25265_IG04 + ;; size=24 bbWeight=0.25 PerfScore 1.50 +G_M25265_IG07: ; bbWeight=0.12, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref + b G_M25265_IG10 + ;; size=4 bbWeight=0.12 PerfScore 0.12 +G_M25265_IG08: ; bbWeight=0.50, gcrefRegs=380001 {x0 x19 x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
- cbnz x0, G_M25265_IG09 - ;; size=8 bbWeight=0.50 PerfScore 0.75 -G_M25265_IG05: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+ ldr x0, [x0]
; gcrRegs -[x0]
- cmp x19, #0 - cset x0, ne - tst w0, #255 - bne G_M25265_IG07 - ;; size=16 bbWeight=0.50 PerfScore 1.25 -G_M25265_IG06: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
+ movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + cmp x0, x1 + bne G_M25265_IG03 + ;; size=24 bbWeight=0.50 PerfScore 3.00 +G_M25265_IG09: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref + b G_M25265_IG11 + ;; size=4 bbWeight=1 PerfScore 1.00 +G_M25265_IG10: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
movz x1, #8 movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 @@ -75,7 +96,7 @@ G_M25265_IG06: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00 blr x2 ; gcrRegs -[x0] ;; size=36 bbWeight=1 PerfScore 7.50
-G_M25265_IG07: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
+G_M25265_IG11: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
add x3, fp, #16 // [V03 loc0] mov x0, x19 ; gcrRegs +[x0] @@ -91,27 +112,14 @@ G_M25265_IG07: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00 blr x5 ; gcrRegs -[x1-x2 x19-x21] ;; size=40 bbWeight=1 PerfScore 8.00
-G_M25265_IG08: ; bbWeight=1, epilog, nogc, extend
+G_M25265_IG12: ; bbWeight=1, epilog, nogc, extend
ldr x21, [sp, #0x28] ldp x19, x20, [sp, #0x18] ldp fp, lr, [sp], #0x30 ret lr ;; size=16 bbWeight=1 PerfScore 5.00
-G_M25265_IG09: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=380001 {x0 x19 x20 x21}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[x19-x21] - ldr x0, [x0] - ; gcrRegs -[x0] - movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - cmp x0, x1 - beq G_M25265_IG05 - ;; size=24 bbWeight=0.25 PerfScore 1.50 -G_M25265_IG10: ; bbWeight=0.12, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref - b G_M25265_IG06 - ;; size=4 bbWeight=0.12 PerfScore 0.12
-; Total bytes of code 208, prolog size 20, PerfScore 34.62, instruction count 52, allocated bytes for code 208 (MethodHash=500f9d4e) for method System.Reflection.RuntimeParameterInfo:GetParameters(System.IRuntimeMethodInfo,System.Reflection.MemberInfo,System.Signature):System.Reflection.ParameterInfo[] (Tier1)
+; Total bytes of code 216, prolog size 20, PerfScore 36.81, instruction count 54, allocated bytes for code 216 (MethodHash=500f9d4e) for method System.Reflection.RuntimeParameterInfo:GetParameters(System.IRuntimeMethodInfo,System.Reflection.MemberInfo,System.Signature):System.Reflection.ParameterInfo[] (Tier1)
; ============================================================ Unwind Info: @@ -122,7 +130,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 52 (0x00034) Actual length = 208 (0x0000d0)
+ Function Length : 54 (0x00036) Actual length = 216 (0x0000d8)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+8 (+3.85%) : 505998.dasm - System.Reflection.RuntimeParameterInfo:GetParameters(System.IRuntimeMethodInfo,System.Reflection.MemberInfo,System.Signature):System.Reflection.ParameterInfo

@@ -9,17 +9,17 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 6, 4.67) ref -> x19 class-hnd single-def <System.IRuntimeMethodInfo>
+; V00 arg0 [V00,T00] ( 6, 5.33) ref -> x19 class-hnd single-def <System.IRuntimeMethodInfo>
; V01 arg1 [V01,T02] ( 3, 3 ) ref -> x20 class-hnd single-def <System.Reflection.MemberInfo> ; V02 arg2 [V02,T03] ( 3, 3 ) ref -> x21 class-hnd single-def <System.Signature> ; V03 loc0 [V03 ] ( 1, 1 ) ref -> [fp+0x10] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.Reflection.ParameterInfo> ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V05 tmp1 [V05,T01] ( 3, 5 ) ref -> x0 class-hnd "spilling QMark2" <<unknown class>> ; V06 tmp2 [V06,T06] ( 2, 0.67) int -> x0
-; V07 tmp3 [V07,T05] ( 3, 1.67) ref -> x0 class-hnd "spilling QMark2" <<unknown class>>
+; V07 tmp3 [V07,T04] ( 3, 4.33) ref -> x0 class-hnd "spilling QMark2" <<unknown class>>
;* V08 tmp4 [V08 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V09 tmp5 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V10 cse0 [V10,T04] ( 3, 3 ) ref -> x1 "CSE - aggressive"
+; V10 cse0 [V10,T05] ( 3, 3 ) ref -> x1 "CSE - aggressive"
; ; Lcl frame size = 8 @@ -39,30 +39,51 @@ G_M25265_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M25265_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz mov x0, x19 ; gcrRegs +[x0]
- cbz x0, G_M25265_IG04
+ cbnz x0, G_M25265_IG08
;; size=8 bbWeight=1 PerfScore 1.50
-G_M25265_IG03: ; bbWeight=0.50, gcrefRegs=380001 {x0 x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M25265_IG03: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x0] + mov x0, x19 + ; gcrRegs +[x0] + cbnz x0, G_M25265_IG06 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M25265_IG04: ; bbWeight=0.33, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x0] + cmp x19, #0 + cset x0, ne + tst w0, #255 + bne G_M25265_IG11 + ;; size=16 bbWeight=0.33 PerfScore 0.83 +G_M25265_IG05: ; bbWeight=0.29, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref + b G_M25265_IG10 + ;; size=4 bbWeight=0.29 PerfScore 0.29 +G_M25265_IG06: ; bbWeight=0.17, gcrefRegs=380001 {x0 x19 x20 x21}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[x0]
ldr x0, [x0] ; gcrRegs -[x0] movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 cmp x0, x1
- beq G_M25265_IG07 - ;; size=24 bbWeight=0.50 PerfScore 3.00 -G_M25265_IG04: ; bbWeight=0.33, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz - mov x0, x19
+ beq G_M25265_IG04 + ;; size=24 bbWeight=0.17 PerfScore 1.00 +G_M25265_IG07: ; bbWeight=0.08, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref + b G_M25265_IG10 + ;; size=4 bbWeight=0.08 PerfScore 0.08 +G_M25265_IG08: ; bbWeight=0.50, gcrefRegs=380001 {x0 x19 x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
- cbnz x0, G_M25265_IG09 - ;; size=8 bbWeight=0.33 PerfScore 0.50 -G_M25265_IG05: ; bbWeight=0.33, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+ ldr x0, [x0]
; gcrRegs -[x0]
- cmp x19, #0 - cset x0, ne - tst w0, #255 - bne G_M25265_IG07 - ;; size=16 bbWeight=0.33 PerfScore 0.83 -G_M25265_IG06: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
+ movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + cmp x0, x1 + bne G_M25265_IG03 + ;; size=24 bbWeight=0.50 PerfScore 3.00 +G_M25265_IG09: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref + b G_M25265_IG11 + ;; size=4 bbWeight=1 PerfScore 1.00 +G_M25265_IG10: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
movz x1, #8 movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 @@ -75,7 +96,7 @@ G_M25265_IG06: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00 blr x2 ; gcrRegs -[x0] ;; size=36 bbWeight=1 PerfScore 7.50
-G_M25265_IG07: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
+G_M25265_IG11: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
add x3, fp, #16 // [V03 loc0] mov x0, x19 ; gcrRegs +[x0] @@ -91,27 +112,14 @@ G_M25265_IG07: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00 blr x5 ; gcrRegs -[x1-x2 x19-x21] ;; size=40 bbWeight=1 PerfScore 8.00
-G_M25265_IG08: ; bbWeight=1, epilog, nogc, extend
+G_M25265_IG12: ; bbWeight=1, epilog, nogc, extend
ldr x21, [sp, #0x28] ldp x19, x20, [sp, #0x18] ldp fp, lr, [sp], #0x30 ret lr ;; size=16 bbWeight=1 PerfScore 5.00
-G_M25265_IG09: ; bbWeight=0.17, gcVars=0000000000000000 {}, gcrefRegs=380001 {x0 x19 x20 x21}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[x19-x21] - ldr x0, [x0] - ; gcrRegs -[x0] - movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - cmp x0, x1 - beq G_M25265_IG05 - ;; size=24 bbWeight=0.17 PerfScore 1.00 -G_M25265_IG10: ; bbWeight=0.08, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref - b G_M25265_IG06 - ;; size=4 bbWeight=0.08 PerfScore 0.08
-; Total bytes of code 208, prolog size 20, PerfScore 33.42, instruction count 52, allocated bytes for code 208 (MethodHash=500f9d4e) for method System.Reflection.RuntimeParameterInfo:GetParameters(System.IRuntimeMethodInfo,System.Reflection.MemberInfo,System.Signature):System.Reflection.ParameterInfo[] (Tier1)
+; Total bytes of code 216, prolog size 20, PerfScore 35.71, instruction count 54, allocated bytes for code 216 (MethodHash=500f9d4e) for method System.Reflection.RuntimeParameterInfo:GetParameters(System.IRuntimeMethodInfo,System.Reflection.MemberInfo,System.Signature):System.Reflection.ParameterInfo[] (Tier1)
; ============================================================ Unwind Info: @@ -122,7 +130,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 52 (0x00034) Actual length = 208 (0x0000d0)
+ Function Length : 54 (0x00036) Actual length = 216 (0x0000d8)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+4 (+3.85%) : 251164.dasm - Runtime_49101:Test(int,int,int,int,int,int,int,int,int,float,float,float,float,float,float,float,float,float,System.Numerics.Vector3):int (FullOpts)

@@ -26,12 +26,13 @@ ;* V15 arg15 [V15 ] ( 0, 0 ) float -> zero-ref single-def ;* V16 arg16 [V16 ] ( 0, 0 ) float -> zero-ref single-def ;* V17 arg17 [V17 ] ( 0, 0 ) float -> zero-ref single-def
-; V18 arg18 [V18,T02] ( 1, 1 ) simd12 -> [fp+0x20] HFA(float) single-def <System.Numerics.Vector3>
+; V18 arg18 [V18,T03] ( 1, 1 ) simd12 -> [fp+0x20] HFA(float) single-def <System.Numerics.Vector3>
;# V19 OutArgs [V19 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V20 tmp1 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V21 tmp2 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V22 cse0 [V22,T00] ( 3, 3 ) ref -> x1 "CSE - moderate" -; V23 rat0 [V23,T01] ( 3, 6 ) simd16 -> d16 "ReplaceWithLclVar is creating a new local variable"
+; V22 cse0 [V22,T00] ( 2, 2 ) int -> x0 "CSE - aggressive" +; V23 cse1 [V23,T01] ( 3, 1.50) ref -> x1 "CSE - moderate" +; V24 rat0 [V24,T02] ( 3, 6 ) simd16 -> d16 "ReplaceWithLclVar is creating a new local variable"
; ; Lcl frame size = 0 @@ -48,7 +49,10 @@ G_M16340_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, uminp v16.4s, v16.4s, v16.4s umov x0, v16.d[0] cmn x0, #1
- beq G_M16340_IG04
+ cset x0, eq + cbnz w0, G_M16340_IG05 + ;; size=40 bbWeight=1 PerfScore 10.50 +G_M16340_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x1, #8 movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 @@ -61,22 +65,22 @@ G_M16340_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, blr x2 ; gcrRegs -[x0] mov w0, #101
- ;; size=76 bbWeight=1 PerfScore 18.00 -G_M16340_IG03: ; bbWeight=1, epilog, nogc, extend
+ ;; size=40 bbWeight=0.50 PerfScore 4.00 +G_M16340_IG04: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr
- ;; size=8 bbWeight=1 PerfScore 2.00 -G_M16340_IG04: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=8 bbWeight=0.50 PerfScore 1.00 +G_M16340_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, #100 ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M16340_IG05: ; bbWeight=0.50, epilog, nogc, extend
+G_M16340_IG06: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00 RWD00 dq 3F8000003F800000h, 000000003F800000h
-; Total bytes of code 104, prolog size 8, PerfScore 22.75, instruction count 26, allocated bytes for code 104 (MethodHash=48a0c02b) for method Runtime_49101:Test(int,int,int,int,int,int,int,int,int,float,float,float,float,float,float,float,float,float,System.Numerics.Vector3):int (FullOpts)
+; Total bytes of code 108, prolog size 8, PerfScore 18.25, instruction count 27, allocated bytes for code 108 (MethodHash=48a0c02b) for method Runtime_49101:Test(int,int,int,int,int,int,int,int,int,float,float,float,float,float,float,float,float,float,System.Numerics.Vector3):int (FullOpts)
; ============================================================ Unwind Info: @@ -87,7 +91,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 26 (0x0001a) Actual length = 104 (0x000068)
+ 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)

libraries.crossgen2.windows.arm64.checked.mch

-48 (-26.09%) : 120262.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)

@@ -8,15 +8,17 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T04] ( 5, 7.50) ref -> x0 class-hnd single-def <System.String> -; V01 arg1 [V01,T02] ( 6, 11 ) ref -> x1 class-hnd single-def <System.String> -; V02 arg2 [V02,T05] ( 4, 6.50) int -> x2 single-def -; V03 arg3 [V03,T07] ( 5, 4.50) int -> x3 single-def -; V04 loc0 [V04,T03] ( 6, 13 ) int -> x5 -; V05 loc1 [V05,T00] ( 11, 27.50) int -> x6
+; V00 arg0 [V00,T04] ( 4, 7 ) ref -> x0 class-hnd single-def <System.String> +; V01 arg1 [V01,T02] ( 4, 10 ) ref -> x1 class-hnd single-def <System.String> +; V02 arg2 [V02,T07] ( 3, 6 ) int -> x2 single-def +; V03 arg3 [V03,T08] ( 5, 4.50) int -> x3 single-def +; V04 loc0 [V04,T01] ( 5, 12 ) int -> x5 +; V05 loc1 [V05,T00] ( 7, 25 ) int -> x6
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 cse0 [V07,T06] ( 5, 7 ) int -> x4 "CSE - aggressive" -; V08 cse1 [V08,T01] ( 6, 13.50) int -> x8 multi-def "CSE - aggressive"
+; V07 cse0 [V07,T05] ( 3, 8.50) int -> x8 "CSE - aggressive" +; V08 cse1 [V08,T06] ( 3, 8.50) int -> x7 "CSE - aggressive" +; V09 cse2 [V09,T09] ( 4, 6.50) int -> x4 "CSE - aggressive" +; V10 cse3 [V10,T03] ( 3, 12 ) int -> x8 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -38,11 +40,11 @@ G_M6389_IG03: ; bbWeight=2, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, by ;; size=4 bbWeight=2 PerfScore 1.00 G_M6389_IG04: ; bbWeight=8, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz cmp w6, w5
- bge G_M6389_IG06
+ bge G_M6389_IG08
;; size=8 bbWeight=8 PerfScore 12.00 G_M6389_IG05: ; bbWeight=4, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz cmp w6, w4
- bhs G_M6389_IG11
+ bhs G_M6389_IG10
add x7, x0, #12 ; byrRegs +[x7] ldrh w7, [x7, w6, UXTW #2] @@ -50,49 +52,30 @@ G_M6389_IG05: ; bbWeight=4, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, by add w8, w2, w6 ldr w9, [x1, #0x08] cmp w8, w9
- bhs G_M6389_IG11
+ bhs G_M6389_IG10
add x9, x1, #12 ; byrRegs +[x9] ldrh w8, [x9, w8, UXTW #2] cmp w7, w8 beq G_M6389_IG03 ;; size=48 bbWeight=4 PerfScore 60.00
-G_M6389_IG06: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
+G_M6389_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0-x1]
; byrRegs -[x9]
- cmp w6, w5 - bge G_M6389_IG09 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M6389_IG07: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz - cmp w6, w4 - bhs G_M6389_IG11 - add x0, x0, #12 - ; gcrRegs -[x0] - ; byrRegs +[x0] - ldrh w0, [x0, w6, UXTW #2] - ; byrRegs -[x0] - add w8, w2, w6 - ldr w3, [x1, #0x08] - cmp w8, w3 - bhs G_M6389_IG11 - add x4, x1, #12 - ; byrRegs +[x4] - ldrh w1, [x4, w8, UXTW #2] - ; gcrRegs -[x1] - sub w0, w0, w1 - ;; size=44 bbWeight=0.50 PerfScore 7.00 -G_M6389_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ sub w0, w7, w8 + ;; size=4 bbWeight=0.50 PerfScore 0.25 +G_M6389_IG07: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M6389_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; byrRegs -[x4]
+G_M6389_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
sub w0, w4, w3 ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M6389_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M6389_IG09: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M6389_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M6389_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
adrp x0, [HIGH RELOC #0xD1FFAB1E] // function address add x0, x0, [LOW RELOC #0xD1FFAB1E] ldr x0, [x0] @@ -101,7 +84,7 @@ G_M6389_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {} brk_windows #0 ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 184, prolog size 8, PerfScore 91.25, instruction count 46, allocated bytes for code 184 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
+; Total bytes of code 136, prolog size 8, PerfScore 83.00, instruction count 34, allocated bytes for code 136 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
; ============================================================ Unwind Info: @@ -112,7 +95,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 46 (0x0002e) Actual length = 184 (0x0000b8)
+ 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)

-36 (-20.45%) : 225638.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan1[uint]):int (FullOpts)

@@ -12,12 +12,14 @@ ;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]> ; V02 loc0 [V02,T00] ( 7, 24.50) int -> x4 ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T01] ( 6, 20 ) int -> x5 "dup spill" -; V05 tmp2 [V05,T05] ( 3, 5.50) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP -; V06 tmp3 [V06,T04] ( 5, 7 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP -; V07 tmp4 [V07,T06] ( 3, 5.50) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP -; V08 tmp5 [V08,T03] ( 6, 7.50) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP -; V09 cse0 [V09,T02] ( 6, 13.50) long -> x6 multi-def "CSE - aggressive"
+; V04 tmp1 [V04,T01] ( 2, 16 ) int -> x4 "dup spill" +; V05 tmp2 [V05,T07] ( 2, 5 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP +; V06 tmp3 [V06,T04] ( 4, 6.50) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP +; V07 tmp4 [V07,T08] ( 2, 5 ) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP +; V08 tmp5 [V08,T03] ( 5, 7 ) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP +; V09 cse0 [V09,T05] ( 3, 8.50) int -> x6 "CSE - aggressive" +; V10 cse1 [V10,T06] ( 3, 8.50) int -> x5 "CSE - aggressive" +; V11 cse2 [V11,T02] ( 3, 12 ) long -> x5 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -34,51 +36,39 @@ G_M264_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs -[x0 x2] cmp w1, w3 blt G_M264_IG11
- b G_M264_IG09
+ b G_M264_IG07
;; size=12 bbWeight=0.50 PerfScore 1.25 G_M264_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref ; byrRegs +[x0 x2] sxtw w4, w3 ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M264_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
- sub w5, w4, #1 - sxtw w4, w5 - tbnz w4, #31, G_M264_IG06
+ sub w4, w4, #1 + tbnz w4, #31, G_M264_IG09
cmp w4, w1 bhs G_M264_IG13
- ubfiz x6, x4, #2, #32 - ldr w7, [x0, x6]
+ ubfiz x5, x4, #2, #32 + ldr w6, [x0, x5]
cmp w4, w3 bhs G_M264_IG13
- ldr w6, [x2, x6] - cmp w7, w6
+ ldr w5, [x2, x5] + cmp w6, w5
beq G_M264_IG05
- ;; size=48 bbWeight=4 PerfScore 54.00 -G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz - tbz w5, #31, G_M264_IG08 - mov w0, wzr - ; byrRegs -[x0]
+ ;; size=44 bbWeight=4 PerfScore 52.00 +G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ; byrRegs -[x0 x2] + cmp w5, w6 + bhi G_M264_IG11
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M264_IG07: ; bbWeight=0.50, epilog, nogc, extend
+G_M264_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov w0, #1 + ;; size=4 bbWeight=0.50 PerfScore 0.25 +G_M264_IG08: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M264_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, gcvars, byref, isz - ; byrRegs +[x0] - cmp w5, w1 - bhs G_M264_IG13 - ubfiz x6, x5, #2, #32 - ldr w0, [x0, x6] - ; byrRegs -[x0] - cmp w5, w3 - bhs G_M264_IG13 - ldr w1, [x2, x6] - cmp w0, w1 - blo G_M264_IG11 - ;; size=36 bbWeight=0.50 PerfScore 5.75 -G_M264_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; byrRegs -[x2] - mov w0, #1
+G_M264_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + mov w0, wzr
;; size=4 bbWeight=0.50 PerfScore 0.25 G_M264_IG10: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x10 @@ -100,7 +90,7 @@ G_M264_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, brk_windows #0 ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 176, prolog size 8, PerfScore 68.50, instruction count 44, allocated bytes for code 176 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
+; Total bytes of code 140, prolog size 8, PerfScore 61.00, instruction count 35, allocated bytes for code 140 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
; ============================================================ Unwind Info: @@ -111,7 +101,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 44 (0x0002c) Actual length = 176 (0x0000b0)
+ 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)

-28 (-9.86%) : 124871.dasm - System.Data.ExpressionParser:ScanDate():this (FullOpts)

@@ -9,14 +9,15 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 11, 21 ) ref -> x0 this class-hnd single-def <System.Data.ExpressionParser>
-; V01 loc0 [V01,T04] ( 6, 14 ) ref -> x3 class-hnd single-def <<unknown class>>
+; V01 loc0 [V01,T04] ( 5, 13 ) ref -> x3 class-hnd single-def <<unknown class>>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T01] ( 3, 24 ) int -> x1 "index expr"
-; V04 tmp2 [V04,T05] ( 3, 6 ) int -> x1 "index expr" -; V05 tmp3 [V05,T06] ( 2, 0 ) ref -> x0 single-def "argument with side effect" -; V06 tmp4 [V06,T07] ( 2, 0 ) ref -> x0 single-def "argument with side effect" -; V07 cse0 [V07,T00] ( 9, 31 ) int -> x19 "CSE - aggressive" -; V08 cse1 [V08,T03] ( 5, 22 ) int -> x2 "CSE - aggressive"
+;* V04 tmp2 [V04,T06] ( 0, 0 ) int -> zero-ref "index expr" +; V05 tmp3 [V05,T07] ( 2, 0 ) ref -> x0 single-def "argument with side effect" +; V06 tmp4 [V06,T08] ( 2, 0 ) ref -> x0 single-def "argument with side effect" +; V07 cse0 [V07,T05] ( 3, 9 ) int -> x2 "CSE - aggressive" +; V08 cse1 [V08,T00] ( 7, 29 ) int -> x19 "CSE - aggressive" +; V09 cse2 [V09,T03] ( 3, 20 ) int -> x2 "CSE - aggressive"
; ; Lcl frame size = 8 @@ -36,22 +37,9 @@ G_M44374_IG03: ; bbWeight=8, gcrefRegs=0009 {x0 x3}, byrefRegs=0000 {}, b str w19, [x0, #0x30] ldr w2, [x3, #0x08] cmp w2, w19
- ble G_M44374_IG05
+ ble G_M44374_IG08
;; size=24 bbWeight=8 PerfScore 72.00 G_M44374_IG04: ; bbWeight=4, gcrefRegs=0009 {x0 x3}, byrefRegs=0000 {}, byref, isz
- sxtw w1, w19 - cmp w1, w2 - bhs G_M44374_IG07 - add x11, x3, #16 - ; byrRegs +[x11] - ldrh w1, [x11, w1, UXTW #2] - cmp w1, #35 - bne G_M44374_IG03 - ;; size=28 bbWeight=4 PerfScore 28.00 -G_M44374_IG05: ; bbWeight=1, gcrefRegs=0009 {x0 x3}, byrefRegs=0000 {}, byref, isz - ; byrRegs -[x11] - cmp w2, w19 - ble G_M44374_IG08
sxtw w1, w19 cmp w1, w2 bhs G_M44374_IG07 @@ -59,13 +47,17 @@ G_M44374_IG05: ; bbWeight=1, gcrefRegs=0009 {x0 x3}, byrefRegs=0000 {}, b ; byrRegs +[x2] ldrh w2, [x2, w1, UXTW #2] ; byrRegs -[x2]
+ cmp w2, #35 + bne G_M44374_IG03 + ;; size=28 bbWeight=4 PerfScore 28.00 +G_M44374_IG05: ; bbWeight=1, gcrefRegs=0009 {x0 x3}, byrefRegs=0000 {}, byref, isz
cmp w2, #35 bne G_M44374_IG09 mov w2, #7 str w2, [x0, #0x38] add w2, w19, #1 str w2, [x0, #0x30]
- ;; size=52 bbWeight=1 PerfScore 11.50
+ ;; size=24 bbWeight=1 PerfScore 4.50
G_M44374_IG06: ; bbWeight=1, epilog, nogc, extend ldr x19, [sp, #0x18] ldp fp, lr, [sp], #0x20 @@ -130,7 +122,7 @@ G_M44374_IG09: ; bbWeight=0, gcrefRegs=0009 {x0 x3}, byrefRegs=0000 {}, b brk_windows #0 ;; size=68 bbWeight=0 PerfScore 0.00
-; Total bytes of code 284, prolog size 12, PerfScore 121.00, instruction count 71, allocated bytes for code 284 (MethodHash=962252a9) for method System.Data.ExpressionParser:ScanDate():this (FullOpts)
+; Total bytes of code 256, prolog size 12, PerfScore 114.00, instruction count 64, allocated bytes for code 256 (MethodHash=962252a9) for method System.Data.ExpressionParser:ScanDate():this (FullOpts)
; ============================================================ Unwind Info: @@ -141,7 +133,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 71 (0x00047) Actual length = 284 (0x00011c)
+ Function Length : 64 (0x00040) Actual length = 256 (0x000100)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+32 (+8.25%) : 29860.dasm - Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)

@@ -8,7 +8,7 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 7, 4.50) ref -> x20 this class-hnd single-def <Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]>
+; V00 this [V00,T01] ( 6, 4 ) ref -> x20 this class-hnd single-def <Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]>
; V01 arg1 [V01,T00] ( 7, 4.75) ref -> x19 class-hnd single-def <System.Object> ; V02 arg2 [V02,T03] ( 3, 2.50) ref -> x21 class-hnd single-def <System.Collections.IComparer> ; V03 loc0 [V03,T04] ( 5, 2.38) ref -> x22 class-hnd exact single-def <Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]> @@ -16,35 +16,37 @@ ;* V05 loc2 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]> ;* V06 loc3 [V06 ] ( 0, 0 ) int -> zero-ref single-def ;* V07 loc4 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]>
-; V08 loc5 [V08,T13] ( 2, 1 ) ref -> x19 class-hnd single-def <System.__Canon> -; V09 loc6 [V09,T14] ( 2, 1 ) ref -> x22 class-hnd single-def <System.__Canon>
+; V08 loc5 [V08,T14] ( 2, 1 ) ref -> x19 class-hnd single-def <System.__Canon> +; V09 loc6 [V09,T15] ( 2, 1 ) ref -> x22 class-hnd single-def <System.__Canon>
;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V11 tmp1 [V11,T09] ( 3, 1.25) long -> x0 "fgMakeTemp is creating a new local variable"
+; V11 tmp1 [V11,T10] ( 3, 1.25) long -> x0 "fgMakeTemp is creating a new local variable"
; V12 tmp2 [V12,T02] ( 3, 4.50) ref -> x0 class-hnd "spilling QMark2" <Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]>
-; V13 tmp3 [V13,T10] ( 3, 1.25) long -> x0 "fgMakeTemp is creating a new local variable"
+; V13 tmp3 [V13,T11] ( 3, 1.25) long -> x0 "fgMakeTemp is creating a new local variable"
; V14 tmp4 [V14,T05] ( 3, 2.50) ref -> x0 class-hnd "spilling QMark2" <Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]>
-; V15 tmp5 [V15,T11] ( 3, 1.25) long -> x0 "fgMakeTemp is creating a new local variable" -;* V16 tmp6 [V16,T12] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]> -;* V17 tmp7 [V17,T15] ( 0, 0 ) int -> zero-ref single-def -; V18 tmp8 [V18,T08] ( 3, 1.50) int -> x19
+; V15 tmp5 [V15,T12] ( 3, 1.25) long -> x0 "fgMakeTemp is creating a new local variable" +;* V16 tmp6 [V16,T13] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]> +;* V17 tmp7 [V17,T16] ( 0, 0 ) int -> zero-ref single-def +; V18 tmp8 [V18,T09] ( 3, 1.50) int -> x19
; V19 tmp9 [V19,T06] ( 2, 2 ) int -> x0 "Single return block return value" ; V20 tmp10 [V20,T07] ( 2, 2 ) long -> x0 "argument with side effect"
+; V21 cse0 [V21,T08] ( 5, 1.50) long -> x23 multi-def "CSE - moderate"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M56277_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x40]!
- stp x19, x20, [sp, #0x20] - stp x21, x22, [sp, #0x30]
+ stp x19, x20, [sp, #0x18] + stp x21, x22, [sp, #0x28] + str x23, [sp, #0x38]
mov fp, sp
- str x0, [fp, #0x18]
+ str x0, [fp, #0x10]
mov x20, x0 ; gcrRegs +[x20] mov x19, x1 ; gcrRegs +[x19] mov x21, x2 ; gcrRegs +[x21]
- ;; size=32 bbWeight=1 PerfScore 6.00
+ ;; size=36 bbWeight=1 PerfScore 7.00
G_M56277_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz mov x0, x19 ; gcrRegs +[x0] @@ -52,7 +54,8 @@ G_M56277_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00 ;; size=8 bbWeight=1 PerfScore 1.50 G_M56277_IG03: ; bbWeight=0.25, gcrefRegs=380001 {x0 x19 x20 x21}, byrefRegs=0000 {}, byref, isz ldr x22, [x0]
- ldr x0, [x20]
+ ldr x23, [x20] + mov x0, x23
; gcrRegs -[x0] adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] @@ -61,7 +64,7 @@ G_M56277_IG03: ; bbWeight=0.25, gcrefRegs=380001 {x0 x19 x20 x21}, byrefR ; gcr arg pop 0 cmp x22, x0 beq G_M56277_IG05
- ;; size=32 bbWeight=0.25 PerfScore 3.12
+ ;; size=36 bbWeight=0.25 PerfScore 3.25
G_M56277_IG04: ; bbWeight=0.12, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref mov x1, x19 ; gcrRegs +[x1] @@ -84,7 +87,8 @@ G_M56277_IG06: ; bbWeight=0.50, gcrefRegs=700000 {x20 x21 x22}, byrefRegs ;; size=4 bbWeight=0.50 PerfScore 0.50 G_M56277_IG07: ; bbWeight=0.25, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref, isz ldr x19, [x22]
- ldr x0, [x20]
+ ldr x23, [x20] + mov x0, x23
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x1, [x11] @@ -92,7 +96,7 @@ G_M56277_IG07: ; bbWeight=0.25, gcrefRegs=700000 {x20 x21 x22}, byrefRegs ; gcr arg pop 0 cmp x19, x0 beq G_M56277_IG09
- ;; size=32 bbWeight=0.25 PerfScore 3.12
+ ;; size=36 bbWeight=0.25 PerfScore 3.25
G_M56277_IG08: ; bbWeight=0.12, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref mov x1, x22 ; gcrRegs +[x1] @@ -111,7 +115,7 @@ G_M56277_IG09: ; bbWeight=0.50, gcrefRegs=700000 {x20 x21 x22}, byrefRegs ldr x19, [x20, #0x08] ; gcrRegs +[x19] ldr x22, [x22, #0x08]
- ldr x0, [x20]
+ mov x0, x23
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x1, [x11] @@ -126,14 +130,15 @@ G_M56277_IG09: ; bbWeight=0.50, gcrefRegs=700000 {x20 x21 x22}, byrefRegs adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x4, [x11]
- ;; size=64 bbWeight=0.50 PerfScore 10.75
+ ;; size=64 bbWeight=0.50 PerfScore 9.50
G_M56277_IG10: ; bbWeight=0.50, epilog, nogc, extend
- ldp x21, x22, [sp, #0x30] - ldp x19, x20, [sp, #0x20]
+ ldr x23, [sp, #0x38] + ldp x21, x22, [sp, #0x28] + ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x40 br x4 ; gcr arg pop 0
- ;; size=16 bbWeight=0.50 PerfScore 2.00
+ ;; size=20 bbWeight=0.50 PerfScore 3.00
G_M56277_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[x1-x3 x19 x21-x22] mov w0, #1 @@ -144,11 +149,12 @@ G_M56277_IG12: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {} mov w0, #1 ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M56277_IG13: ; bbWeight=0.50, epilog, nogc, extend
- ldp x21, x22, [sp, #0x30] - ldp x19, x20, [sp, #0x20]
+ ldr x23, [sp, #0x38] + ldp x21, x22, [sp, #0x28] + ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x40 ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.00
+ ;; size=20 bbWeight=0.50 PerfScore 3.00
G_M56277_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs +[x19] mov x0, x19 @@ -183,28 +189,31 @@ G_M56277_IG17: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {} movn w0, #0 ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M56277_IG18: ; bbWeight=0.50, epilog, nogc, extend
- ldp x21, x22, [sp, #0x30] - ldp x19, x20, [sp, #0x20]
+ ldr x23, [sp, #0x38] + ldp x21, x22, [sp, #0x28] + ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x40 ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.00
+ ;; size=20 bbWeight=0.50 PerfScore 3.00
G_M56277_IG19: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref mov w0, wzr ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M56277_IG20: ; bbWeight=0.50, epilog, nogc, extend
- ldp x21, x22, [sp, #0x30] - ldp x19, x20, [sp, #0x20]
+ ldr x23, [sp, #0x38] + ldp x21, x22, [sp, #0x28] + ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x40 ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.00
+ ;; size=20 bbWeight=0.50 PerfScore 3.00
G_M56277_IG21: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, epilog, nogc
- ldp x21, x22, [sp, #0x30] - ldp x19, x20, [sp, #0x20]
+ ldr x23, [sp, #0x38] + ldp x21, x22, [sp, #0x28] + ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x40 ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.00
+ ;; size=20 bbWeight=0.50 PerfScore 3.00
-; Total bytes of code 388, prolog size 32, PerfScore 44.31, instruction count 97, allocated bytes for code 388 (MethodHash=ba80242a) for method Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
+; Total bytes of code 420, prolog size 36, PerfScore 49.31, instruction count 105, allocated bytes for code 420 (MethodHash=ba80242a) for method Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
; ============================================================ Unwind Info: @@ -215,7 +224,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 97 (0x00061) Actual length = 388 (0x000184)
+ Function Length : 105 (0x00069) Actual length = 420 (0x0001a4)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -235,10 +244,9 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
+ D1 07 save_reg X#4 Z#7 (0x07); str x23, [sp, #56]
E6 save_next
- C8 04 save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
+ C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]! E4 end
- E4 end - E4 end

+20 (+11.90%) : 205127.dasm - System.Security.AccessControl.CommonAcl:GetAccessMaskForRemoval(System.Security.AccessControl.QualifiedAce,int,System.Guid,byref):ubyte (FullOpts)

@@ -11,24 +11,26 @@ ; ; V00 arg0 [V00,T02] ( 4, 3.50) ref -> x0 class-hnd single-def <System.Security.AccessControl.QualifiedAce> ; V01 arg1 [V01,T01] ( 5, 3.50) int -> x20 single-def
-; V02 arg2 [V02,T03] ( 4, 3 ) struct (16) [fp+0x10] do-not-enreg[SA] multireg-arg single-def <System.Guid>
+; V02 arg2 [V02,T03] ( 4, 3 ) struct (16) [fp+0x18] do-not-enreg[SA] multireg-arg single-def <System.Guid>
; V03 arg3 [V03,T00] ( 5, 4 ) byref -> x19 single-def ; V04 loc0 [V04,T04] ( 4, 2 ) ref -> x0 class-hnd single-def <System.Security.AccessControl.ObjectAce> ;* V05 loc1 [V05 ] ( 0, 0 ) ubyte -> zero-ref ;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T05] ( 2, 1 ) int -> x0
+; V07 tmp1 [V07,T06] ( 2, 1 ) int -> x0 +; V08 cse0 [V08,T05] ( 4, 2 ) int -> x21 multi-def "CSE - aggressive"
;
-; Lcl frame size = 16
+; Lcl frame size = 24
G_M3580_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]! - stp x19, x20, [sp, #0x20]
+ stp fp, lr, [sp, #-0x40]! + stp x19, x20, [sp, #0x28] + str x21, [sp, #0x38]
mov fp, sp
- stp x2, x3, [fp, #0x10] // [V02 arg2], [V02 arg2+0x08]
+ stp x2, x3, [fp, #0x18] // [V02 arg2], [V02 arg2+0x08]
mov w20, w1 mov x19, x4 ; byrRegs +[x19]
- ;; size=24 bbWeight=1 PerfScore 4.50
+ ;; size=28 bbWeight=1 PerfScore 5.50
G_M3580_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=80000 {x19}, byref, isz ; gcrRegs +[x0] ldr w11, [x0, #0x0C] @@ -44,24 +46,26 @@ G_M3580_IG03: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=80000 {x19} ldr x1, [x11] blr x1 cbz x0, G_M3580_IG07
- tbz w20, #0, G_M3580_IG08
+ and w21, w20, #1 + cbz w21, G_M3580_IG08
ldr w2, [x0, #0x28] tbnz w2, #0, G_M3580_IG06
- ;; size=32 bbWeight=0.50 PerfScore 5.50
+ ;; size=36 bbWeight=0.50 PerfScore 5.75
G_M3580_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x0] ; byrRegs -[x19] mov w0, wzr ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M3580_IG05: ; bbWeight=0.50, epilog, nogc, extend
- ldp x19, x20, [sp, #0x20] - ldp fp, lr, [sp], #0x30
+ ldr x21, [sp, #0x38] + ldp x19, x20, [sp, #0x28] + ldp fp, lr, [sp], #0x40
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 1.50
+ ;; size=16 bbWeight=0.50 PerfScore 2.50
G_M3580_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=80000 {x19}, gcvars, byref, isz ; gcrRegs +[x0] ; byrRegs +[x19]
- ldp x2, x3, [fp, #0x10] // [V02 arg2], [V02 arg2+0x08]
+ ldp x2, x3, [fp, #0x18] // [V02 arg2], [V02 arg2+0x08]
mov w1, w20 adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] @@ -78,18 +82,20 @@ G_M3580_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 ;; size=52 bbWeight=0.50 PerfScore 8.00 G_M3580_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; byrRegs -[x19]
- tbnz w20, #0, G_M3580_IG04 - ;; size=4 bbWeight=0.50 PerfScore 0.50
+ and w21, w20, #1 + cbnz w21, G_M3580_IG04 + ;; size=8 bbWeight=0.50 PerfScore 0.75
G_M3580_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov w0, #1 ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M3580_IG09: ; bbWeight=0.50, epilog, nogc, extend
- ldp x19, x20, [sp, #0x20] - ldp fp, lr, [sp], #0x30
+ ldr x21, [sp, #0x38] + ldp x19, x20, [sp, #0x28] + ldp fp, lr, [sp], #0x40
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 1.50
+ ;; size=16 bbWeight=0.50 PerfScore 2.50
-; Total bytes of code 168, prolog size 12, PerfScore 30.50, instruction count 42, allocated bytes for code 168 (MethodHash=4a1ef203) for method System.Security.AccessControl.CommonAcl:GetAccessMaskForRemoval(System.Security.AccessControl.QualifiedAce,int,System.Guid,byref):ubyte (FullOpts)
+; Total bytes of code 188, prolog size 16, PerfScore 34.00, instruction count 47, allocated bytes for code 188 (MethodHash=4a1ef203) for method System.Security.AccessControl.CommonAcl:GetAccessMaskForRemoval(System.Security.AccessControl.QualifiedAce,int,System.Guid,byref):ubyte (FullOpts)
; ============================================================ Unwind Info: @@ -100,7 +106,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 42 (0x0002a) Actual length = 168 (0x0000a8)
+ Function Length : 47 (0x0002f) Actual length = 188 (0x0000bc)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -111,10 +117,9 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- C8 04 save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32] - 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]! - E4 end - E4 end
+ D0 87 save_reg X#2 Z#7 (0x07); str x21, [sp, #56] + C8 05 save_regp X#0 Z#5 (0x05); stp x19, x20, [sp, #40] + 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
E4 end E4 end

+20 (+12.82%) : 205128.dasm - System.Security.AccessControl.CommonAcl:GetInheritanceFlagsForRemoval(System.Security.AccessControl.QualifiedAce,int,System.Guid,byref):ubyte (FullOpts)

@@ -11,24 +11,26 @@ ; ; V00 arg0 [V00,T02] ( 4, 3.50) ref -> x0 class-hnd single-def <System.Security.AccessControl.QualifiedAce> ; V01 arg1 [V01,T01] ( 5, 3.50) int -> x20 single-def
-; V02 arg2 [V02,T03] ( 4, 3 ) struct (16) [fp+0x10] do-not-enreg[SA] multireg-arg single-def <System.Guid>
+; V02 arg2 [V02,T03] ( 4, 3 ) struct (16) [fp+0x18] do-not-enreg[SA] multireg-arg single-def <System.Guid>
; V03 arg3 [V03,T00] ( 5, 3.50) byref -> x19 single-def ; V04 loc0 [V04,T04] ( 4, 2 ) ref -> x0 class-hnd single-def <System.Security.AccessControl.ObjectAce> ;* V05 loc1 [V05 ] ( 0, 0 ) ubyte -> zero-ref ;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T05] ( 2, 1 ) int -> x0
+; V07 tmp1 [V07,T06] ( 2, 1 ) int -> x0 +; V08 cse0 [V08,T05] ( 4, 2 ) int -> x21 multi-def "CSE - aggressive"
;
-; Lcl frame size = 16
+; Lcl frame size = 24
G_M58815_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]! - stp x19, x20, [sp, #0x20]
+ stp fp, lr, [sp, #-0x40]! + stp x19, x20, [sp, #0x28] + str x21, [sp, #0x38]
mov fp, sp
- stp x2, x3, [fp, #0x10] // [V02 arg2], [V02 arg2+0x08]
+ stp x2, x3, [fp, #0x18] // [V02 arg2], [V02 arg2+0x08]
mov w20, w1 mov x19, x4 ; byrRegs +[x19]
- ;; size=24 bbWeight=1 PerfScore 4.50
+ ;; size=28 bbWeight=1 PerfScore 5.50
G_M58815_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=80000 {x19}, byref, isz ; gcrRegs +[x0] ldrb w11, [x0, #0x0B] @@ -42,24 +44,26 @@ G_M58815_IG03: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=80000 {x19 ldr x1, [x11] blr x1 cbz x0, G_M58815_IG07
- tbz w20, #1, G_M58815_IG08
+ and w21, w20, #2 + cbz w21, G_M58815_IG08
ldr w2, [x0, #0x28] tbnz w2, #1, G_M58815_IG06
- ;; size=40 bbWeight=0.50 PerfScore 7.50
+ ;; size=44 bbWeight=0.50 PerfScore 7.75
G_M58815_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x0] ; byrRegs -[x19] mov w0, wzr ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M58815_IG05: ; bbWeight=0.50, epilog, nogc, extend
- ldp x19, x20, [sp, #0x20] - ldp fp, lr, [sp], #0x30
+ ldr x21, [sp, #0x38] + ldp x19, x20, [sp, #0x28] + ldp fp, lr, [sp], #0x40
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 1.50
+ ;; size=16 bbWeight=0.50 PerfScore 2.50
G_M58815_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=80000 {x19}, gcvars, byref, isz ; gcrRegs +[x0] ; byrRegs +[x19]
- ldp x2, x3, [fp, #0x10] // [V02 arg2], [V02 arg2+0x08]
+ ldp x2, x3, [fp, #0x18] // [V02 arg2], [V02 arg2+0x08]
mov w1, w20 adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] @@ -75,18 +79,20 @@ G_M58815_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000 ;; size=48 bbWeight=0.50 PerfScore 7.75 G_M58815_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; byrRegs -[x19]
- tbnz w20, #1, G_M58815_IG04 - ;; size=4 bbWeight=0.50 PerfScore 0.50
+ and w21, w20, #2 + cbnz w21, G_M58815_IG04 + ;; size=8 bbWeight=0.50 PerfScore 0.75
G_M58815_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov w0, #1 ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M58815_IG09: ; bbWeight=0.50, epilog, nogc, extend
- ldp x19, x20, [sp, #0x20] - ldp fp, lr, [sp], #0x30
+ ldr x21, [sp, #0x38] + ldp x19, x20, [sp, #0x28] + ldp fp, lr, [sp], #0x40
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 1.50
+ ;; size=16 bbWeight=0.50 PerfScore 2.50
-; Total bytes of code 156, prolog size 12, PerfScore 27.75, instruction count 39, allocated bytes for code 156 (MethodHash=da2a1a40) for method System.Security.AccessControl.CommonAcl:GetInheritanceFlagsForRemoval(System.Security.AccessControl.QualifiedAce,int,System.Guid,byref):ubyte (FullOpts)
+; Total bytes of code 176, prolog size 16, PerfScore 31.25, instruction count 44, allocated bytes for code 176 (MethodHash=da2a1a40) for method System.Security.AccessControl.CommonAcl:GetInheritanceFlagsForRemoval(System.Security.AccessControl.QualifiedAce,int,System.Guid,byref):ubyte (FullOpts)
; ============================================================ Unwind Info: @@ -97,7 +103,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 39 (0x00027) Actual length = 156 (0x00009c)
+ Function Length : 44 (0x0002c) Actual length = 176 (0x0000b0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -108,10 +114,9 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- C8 04 save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32] - 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]! - E4 end - E4 end
+ D0 87 save_reg X#2 Z#7 (0x07); str x21, [sp, #56] + C8 05 save_regp X#0 Z#5 (0x05); stp x19, x20, [sp, #40] + 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
E4 end E4 end

libraries.pmi.windows.arm64.checked.mch

-48 (-35.29%) : 89446.dasm - System.Speech.Synthesis.TtsEngine.SpeechEventInfo:Equals(System.Object):ubyte:this (FullOpts)

@@ -8,93 +8,74 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 4, 3 ) byref -> x20 this single-def -; V01 arg1 [V01,T00] ( 6, 4.25) ref -> x19 class-hnd single-def <System.Object>
+; V00 this [V00,T01] ( 4, 3 ) byref -> x4 this single-def +; V01 arg1 [V01,T00] ( 5, 4 ) ref -> x1 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 3, 4.50) ref -> x0 class-hnd "spilling QMark2" <System.Speech.Synthesis.TtsEngine.SpeechEventInfo> ;* V04 tmp2 [V04 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Speech.Synthesis.TtsEngine.SpeechEventInfo>
-; V05 cse0 [V05,T03] ( 4, 1.25) long -> x0 "CSE - moderate" -; V06 cse1 [V06,T04] ( 3, 1 ) long -> x1 "CSE - moderate"
; ; Lcl frame size = 0
-G_M46071_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG - stp fp, lr, [sp, #-0x20]! - stp x19, x20, [sp, #0x10]
+G_M46071_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG + stp fp, lr, [sp, #-0x10]!
mov fp, sp
- mov x20, x0 - ; byrRegs +[x20] - mov x19, x1 - ; gcrRegs +[x19] - ;; size=20 bbWeight=1 PerfScore 3.50 -G_M46071_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz - mov x0, x19
+ mov x4, x0 + ; byrRegs +[x4] + ;; size=12 bbWeight=1 PerfScore 2.00 +G_M46071_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0010 {x4}, byref, isz + ; gcrRegs +[x1] + mov x0, x1
; gcrRegs +[x0] cbz x0, G_M46071_IG04 ;; size=8 bbWeight=1 PerfScore 1.50
-G_M46071_IG03: ; bbWeight=0.25, gcrefRegs=80001 {x0 x19}, byrefRegs=100000 {x20}, byref, isz - ldr x1, [x0] - movz x0, #0xD1FFAB1E
+G_M46071_IG03: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0010 {x4}, byref, isz + ldr x0, [x0]
; gcrRegs -[x0]
- movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - cmp x1, x0
+ movz x2, #0xD1FFAB1E + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + cmp x0, x2
beq G_M46071_IG06 ;; size=24 bbWeight=0.25 PerfScore 1.50 G_M46071_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19] - ; byrRegs -[x20]
+ ; gcrRegs -[x1] + ; byrRegs -[x4]
mov w0, wzr ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M46071_IG05: ; bbWeight=0.50, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20
+ ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 1.50 -G_M46071_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, gcvars, byref, isz - ; gcrRegs +[x19] - ; byrRegs +[x20] - cmp x1, x0 - beq G_M46071_IG08 - ;; size=8 bbWeight=0.50 PerfScore 0.75 -G_M46071_IG07: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref - mov x1, x19
+ ;; size=8 bbWeight=0.50 PerfScore 1.00 +G_M46071_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0010 {x4}, gcvars, byref
; gcrRegs +[x1]
- movz x2, #0xD1FFAB1E // code for CORINFO_HELP_UNBOX - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - ldr x2, [x2] - blr x2
+ ; byrRegs +[x4] + ldp x2, x3, [x1, #0x08] + ldp x0, x1, [x4]
; gcrRegs -[x1]
- ; gcr arg pop 0 - ;; size=24 bbWeight=0.25 PerfScore 1.50 -G_M46071_IG08: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref - ldp x2, x3, [x19, #0x08] - ldp x0, x1, [x20]
movz x4, #0xD1FFAB1E // code for System.Speech.Synthesis.TtsEngine.SpeechEventInfo:op_Equality(System.Speech.Synthesis.TtsEngine.SpeechEventInfo,System.Speech.Synthesis.TtsEngine.SpeechEventInfo):ubyte
+ ; byrRegs -[x4]
movk x4, #0xD1FFAB1E LSL #16 movk x4, #0xD1FFAB1E LSL #32 ldr x4, [x4] ;; size=24 bbWeight=0.50 PerfScore 6.25
-G_M46071_IG09: ; bbWeight=0.50, epilog, nogc, extend - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20
+G_M46071_IG07: ; bbWeight=0.50, epilog, nogc, extend + ldp fp, lr, [sp], #0x10
br x4 ; gcr arg pop 0
- ;; size=12 bbWeight=0.50 PerfScore 1.50
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 136, prolog size 20, PerfScore 18.25, instruction count 34, allocated bytes for code 136 (MethodHash=c43e4c08) for method System.Speech.Synthesis.TtsEngine.SpeechEventInfo:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 88, prolog size 12, PerfScore 13.50, instruction count 22, allocated bytes for code 88 (MethodHash=c43e4c08) for method System.Speech.Synthesis.TtsEngine.SpeechEventInfo:Equals(System.Object):ubyte:this (FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 1
Epilog Count : 2 E bit : 0 X bit : 0 Vers : 0
- Function Length : 34 (0x00022) Actual length = 136 (0x000088)
+ 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) @@ -105,10 +86,7 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16] - 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! - E4 end - E4 end
+ 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
E4 end E4 end

-48 (-35.29%) : 89516.dasm - System.Speech.Synthesis.TtsEngine.ProsodyNumber:Equals(System.Object):ubyte:this (FullOpts)

@@ -8,93 +8,74 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 4, 3 ) byref -> x20 this single-def -; V01 arg1 [V01,T00] ( 6, 4.25) ref -> x19 class-hnd single-def <System.Object>
+; V00 this [V00,T01] ( 4, 3 ) byref -> x4 this single-def +; V01 arg1 [V01,T00] ( 5, 4 ) ref -> x1 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 3, 4.50) ref -> x0 class-hnd "spilling QMark2" <System.Speech.Synthesis.TtsEngine.ProsodyNumber> ;* V04 tmp2 [V04 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Speech.Synthesis.TtsEngine.ProsodyNumber>
-; V05 cse0 [V05,T03] ( 4, 1.25) long -> x0 "CSE - moderate" -; V06 cse1 [V06,T04] ( 3, 1 ) long -> x1 "CSE - moderate"
; ; Lcl frame size = 0
-G_M55762_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG - stp fp, lr, [sp, #-0x20]! - stp x19, x20, [sp, #0x10]
+G_M55762_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG + stp fp, lr, [sp, #-0x10]!
mov fp, sp
- mov x20, x0 - ; byrRegs +[x20] - mov x19, x1 - ; gcrRegs +[x19] - ;; size=20 bbWeight=1 PerfScore 3.50 -G_M55762_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz - mov x0, x19
+ mov x4, x0 + ; byrRegs +[x4] + ;; size=12 bbWeight=1 PerfScore 2.00 +G_M55762_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0010 {x4}, byref, isz + ; gcrRegs +[x1] + mov x0, x1
; gcrRegs +[x0] cbz x0, G_M55762_IG04 ;; size=8 bbWeight=1 PerfScore 1.50
-G_M55762_IG03: ; bbWeight=0.25, gcrefRegs=80001 {x0 x19}, byrefRegs=100000 {x20}, byref, isz - ldr x1, [x0] - movz x0, #0xD1FFAB1E
+G_M55762_IG03: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0010 {x4}, byref, isz + ldr x0, [x0]
; gcrRegs -[x0]
- movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - cmp x1, x0
+ movz x2, #0xD1FFAB1E + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + cmp x0, x2
beq G_M55762_IG06 ;; size=24 bbWeight=0.25 PerfScore 1.50 G_M55762_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19] - ; byrRegs -[x20]
+ ; gcrRegs -[x1] + ; byrRegs -[x4]
mov w0, wzr ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M55762_IG05: ; bbWeight=0.50, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20
+ ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 1.50 -G_M55762_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, gcvars, byref, isz - ; gcrRegs +[x19] - ; byrRegs +[x20] - cmp x1, x0 - beq G_M55762_IG08 - ;; size=8 bbWeight=0.50 PerfScore 0.75 -G_M55762_IG07: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref - mov x1, x19
+ ;; size=8 bbWeight=0.50 PerfScore 1.00 +G_M55762_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0010 {x4}, gcvars, byref
; gcrRegs +[x1]
- movz x2, #0xD1FFAB1E // code for CORINFO_HELP_UNBOX - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - ldr x2, [x2] - blr x2
+ ; byrRegs +[x4] + ldp x2, x3, [x1, #0x08] + ldp x0, x1, [x4]
; gcrRegs -[x1]
- ; gcr arg pop 0 - ;; size=24 bbWeight=0.25 PerfScore 1.50 -G_M55762_IG08: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref - ldp x2, x3, [x19, #0x08] - ldp x0, x1, [x20]
movz x4, #0xD1FFAB1E // code for System.Speech.Synthesis.TtsEngine.ProsodyNumber:op_Equality(System.Speech.Synthesis.TtsEngine.ProsodyNumber,System.Speech.Synthesis.TtsEngine.ProsodyNumber):ubyte
+ ; byrRegs -[x4]
movk x4, #0xD1FFAB1E LSL #16 movk x4, #0xD1FFAB1E LSL #32 ldr x4, [x4] ;; size=24 bbWeight=0.50 PerfScore 6.25
-G_M55762_IG09: ; bbWeight=0.50, epilog, nogc, extend - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20
+G_M55762_IG07: ; bbWeight=0.50, epilog, nogc, extend + ldp fp, lr, [sp], #0x10
br x4 ; gcr arg pop 0
- ;; size=12 bbWeight=0.50 PerfScore 1.50
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 136, prolog size 20, PerfScore 18.25, instruction count 34, allocated bytes for code 136 (MethodHash=756b262d) for method System.Speech.Synthesis.TtsEngine.ProsodyNumber:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 88, prolog size 12, PerfScore 13.50, instruction count 22, allocated bytes for code 88 (MethodHash=756b262d) for method System.Speech.Synthesis.TtsEngine.ProsodyNumber:Equals(System.Object):ubyte:this (FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 1
Epilog Count : 2 E bit : 0 X bit : 0 Vers : 0
- Function Length : 34 (0x00022) Actual length = 136 (0x000088)
+ 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) @@ -105,10 +86,7 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16] - 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! - E4 end - E4 end
+ 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
E4 end E4 end

-48 (-33.33%) : 89502.dasm - System.Speech.Synthesis.TtsEngine.ContourPoint:Equals(System.Object):ubyte:this (FullOpts)

@@ -8,98 +8,79 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 4, 3 ) byref -> x20 this single-def -; V01 arg1 [V01,T00] ( 6, 4.25) ref -> x19 class-hnd single-def <System.Object>
+; V00 this [V00,T01] ( 4, 3 ) byref -> x4 this single-def +; V01 arg1 [V01,T00] ( 5, 4 ) ref -> x1 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 3, 4.50) ref -> x0 class-hnd "spilling QMark2" <System.Speech.Synthesis.TtsEngine.ContourPoint> ;* V04 tmp2 [V04 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Speech.Synthesis.TtsEngine.ContourPoint> ;* V05 tmp3 [V05 ] ( 0, 0 ) float -> zero-ref "field V04._start (fldOffset=0x0)" P-INDEP ;* V06 tmp4 [V06 ] ( 0, 0 ) float -> zero-ref "field V04._change (fldOffset=0x4)" P-INDEP ;* V07 tmp5 [V07 ] ( 0, 0 ) int -> zero-ref "field V04._changeType (fldOffset=0x8)" P-INDEP
-; V08 cse0 [V08,T03] ( 4, 1.25) long -> x0 "CSE - moderate" -; V09 cse1 [V09,T04] ( 3, 1 ) long -> x1 "CSE - moderate"
; ; Lcl frame size = 0
-G_M17647_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG - stp fp, lr, [sp, #-0x20]! - stp x19, x20, [sp, #0x10]
+G_M17647_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG + stp fp, lr, [sp, #-0x10]!
mov fp, sp
- mov x20, x0 - ; byrRegs +[x20] - mov x19, x1 - ; gcrRegs +[x19] - ;; size=20 bbWeight=1 PerfScore 3.50 -G_M17647_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz - mov x0, x19
+ mov x4, x0 + ; byrRegs +[x4] + ;; size=12 bbWeight=1 PerfScore 2.00 +G_M17647_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0010 {x4}, byref, isz + ; gcrRegs +[x1] + mov x0, x1
; gcrRegs +[x0] cbz x0, G_M17647_IG04 ;; size=8 bbWeight=1 PerfScore 1.50
-G_M17647_IG03: ; bbWeight=0.25, gcrefRegs=80001 {x0 x19}, byrefRegs=100000 {x20}, byref, isz - ldr x1, [x0] - movz x0, #0xD1FFAB1E
+G_M17647_IG03: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0010 {x4}, byref, isz + ldr x0, [x0]
; gcrRegs -[x0]
- movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - cmp x1, x0
+ movz x2, #0xD1FFAB1E + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + cmp x0, x2
beq G_M17647_IG06 ;; size=24 bbWeight=0.25 PerfScore 1.50 G_M17647_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19] - ; byrRegs -[x20]
+ ; gcrRegs -[x1] + ; byrRegs -[x4]
mov w0, wzr ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M17647_IG05: ; bbWeight=0.50, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20
+ ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 1.50 -G_M17647_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, gcvars, byref, isz - ; gcrRegs +[x19] - ; byrRegs +[x20] - cmp x1, x0 - beq G_M17647_IG08 - ;; size=8 bbWeight=0.50 PerfScore 0.75 -G_M17647_IG07: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref - mov x1, x19
+ ;; size=8 bbWeight=0.50 PerfScore 1.00 +G_M17647_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0010 {x4}, gcvars, byref
; gcrRegs +[x1]
- movz x2, #0xD1FFAB1E // code for CORINFO_HELP_UNBOX - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - ldr x2, [x2] - blr x2
+ ; byrRegs +[x4] + ldr x2, [x1, #0x08] + ldr w3, [x1, #0x10] + ldr x0, [x4] + ldr w1, [x4, #0x08]
; gcrRegs -[x1]
- ; gcr arg pop 0 - ;; size=24 bbWeight=0.25 PerfScore 1.50 -G_M17647_IG08: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref - ldr x2, [x19, #0x08] - ldr w3, [x19, #0x10] - ldr x0, [x20] - ldr w1, [x20, #0x08]
movz x4, #0xD1FFAB1E // code for System.Speech.Synthesis.TtsEngine.ContourPoint:op_Equality(System.Speech.Synthesis.TtsEngine.ContourPoint,System.Speech.Synthesis.TtsEngine.ContourPoint):ubyte
+ ; byrRegs -[x4]
movk x4, #0xD1FFAB1E LSL #16 movk x4, #0xD1FFAB1E LSL #32 ldr x4, [x4] ;; size=32 bbWeight=0.50 PerfScore 8.25
-G_M17647_IG09: ; bbWeight=0.50, epilog, nogc, extend - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20
+G_M17647_IG07: ; bbWeight=0.50, epilog, nogc, extend + ldp fp, lr, [sp], #0x10
br x4 ; gcr arg pop 0
- ;; size=12 bbWeight=0.50 PerfScore 1.50
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 144, prolog size 20, PerfScore 20.25, instruction count 36, allocated bytes for code 144 (MethodHash=2f77bb10) for method System.Speech.Synthesis.TtsEngine.ContourPoint:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 96, prolog size 12, PerfScore 15.50, instruction count 24, allocated bytes for code 96 (MethodHash=2f77bb10) for method System.Speech.Synthesis.TtsEngine.ContourPoint:Equals(System.Object):ubyte:this (FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 1
Epilog Count : 2 E bit : 0 X bit : 0 Vers : 0
- Function Length : 36 (0x00024) Actual length = 144 (0x000090)
+ 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) @@ -110,10 +91,7 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16] - 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! - E4 end - E4 end
+ 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
E4 end E4 end

+8 (+4.65%) : 254077.dasm - System.ComponentModel.TypeConverter+SimplePropertyDescriptor:ResetValue(System.Object):this (FullOpts)

@@ -7,27 +7,29 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 6, 6 ) ref -> x19 this class-hnd single-def <System.ComponentModel.TypeConverter+SimplePropertyDescriptor> -; V01 arg1 [V01,T03] ( 3, 3 ) ref -> x20 class-hnd single-def <System.Object>
+; V00 this [V00,T00] ( 6, 5 ) ref -> x19 this class-hnd single-def <System.ComponentModel.TypeConverter+SimplePropertyDescriptor> +; V01 arg1 [V01,T03] ( 3, 2.50) ref -> x20 class-hnd single-def <System.Object>
;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <<unknown class>> ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V04 tmp1 [V04,T04] ( 3, 4.25) ref -> x1 single-def "CASTCLASS eval op1"
-; V05 tmp2 [V05,T06] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable" -; V06 tmp3 [V06,T00] ( 6, 8.75) ref -> x0 class-hnd "spilling QMark2" <<unknown class>> -; V07 tmp4 [V07,T02] ( 3, 6 ) ref -> x0 single-def "argument with side effect" -; V08 tmp5 [V08,T05] ( 2, 4 ) ref -> x2 single-def "argument with side effect"
+; V05 tmp2 [V05,T06] ( 3, 1.25) long -> x2 "fgMakeTemp is creating a new local variable" +; V06 tmp3 [V06,T02] ( 5, 5.75) ref -> x0 class-hnd "spilling QMark2" <<unknown class>> +; V07 tmp4 [V07,T01] ( 3, 6 ) ref -> x0 single-def "argument with side effect" +; V08 tmp5 [V08,T05] ( 2, 2 ) ref -> x2 single-def "argument with side effect" +; V09 cse0 [V09,T07] ( 3, 1 ) long -> x21 "CSE - moderate"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M9521_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]! - stp x19, x20, [sp, #0x10]
+ stp fp, lr, [sp, #-0x30]! + stp x19, x20, [sp, #0x18] + str x21, [sp, #0x28]
mov fp, sp mov x19, x0 ; gcrRegs +[x19] mov x20, x1 ; gcrRegs +[x20]
- ;; size=20 bbWeight=1 PerfScore 3.50
+ ;; size=24 bbWeight=1 PerfScore 4.50
G_M9521_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz mov x0, x19 ; gcrRegs +[x0] @@ -47,22 +49,21 @@ G_M9521_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {} cbz x0, G_M9521_IG07 ;; size=56 bbWeight=1 PerfScore 23.50 G_M9521_IG03: ; bbWeight=0.25, gcrefRegs=180003 {x0 x1 x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr x2, [x0] - movz x3, #0xD1FFAB1E - movk x3, #0xD1FFAB1E LSL #16 - movk x3, #0xD1FFAB1E LSL #32 - cmp x2, x3
+ ldr x21, [x0] + movz x2, #0xD1FFAB1E + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + cmp x21, x2
beq G_M9521_IG05 ;; size=24 bbWeight=0.25 PerfScore 1.50 G_M9521_IG04: ; bbWeight=0.12, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=0000 {}, byref ; gcrRegs -[x0]
- mov x0, x3
+ mov x0, x2
bl CORINFO_HELP_CHKCASTCLASS_SPECIAL ; gcrRegs -[x1] +[x0] ;; size=8 bbWeight=0.12 PerfScore 0.19
-G_M9521_IG05: ; bbWeight=1, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref - ldr x1, [x0] - ldr x1, [x1, #0x48]
+G_M9521_IG05: ; bbWeight=0.50, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref + ldr x1, [x21, #0x48]
ldr x1, [x1, #0x38] blr x1 mov x2, x0 @@ -73,20 +74,22 @@ G_M9521_IG05: ; bbWeight=1, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 ldr x3, [x19] ldr x3, [x3, #0x60] ldr x3, [x3, #0x30]
- ;; size=40 bbWeight=1 PerfScore 20.50 -G_M9521_IG06: ; bbWeight=1, epilog, nogc, extend - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20
+ ;; size=36 bbWeight=0.50 PerfScore 8.75 +G_M9521_IG06: ; bbWeight=0.50, epilog, nogc, extend + ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x30
br x3
- ;; size=12 bbWeight=1 PerfScore 3.00
+ ;; size=16 bbWeight=0.50 PerfScore 2.50
G_M9521_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; gcrRegs -[x0-x2 x19-x20]
- ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20
+ ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 1.50
+ ;; size=16 bbWeight=0.50 PerfScore 2.50
-; Total bytes of code 172, prolog size 12, PerfScore 53.69, instruction count 43, allocated bytes for code 172 (MethodHash=ff5fdace) for method System.ComponentModel.TypeConverter+SimplePropertyDescriptor:ResetValue(System.Object):this (FullOpts)
+; Total bytes of code 180, prolog size 16, PerfScore 43.44, instruction count 45, allocated bytes for code 180 (MethodHash=ff5fdace) for method System.ComponentModel.TypeConverter+SimplePropertyDescriptor:ResetValue(System.Object):this (FullOpts)
; ============================================================ Unwind Info: @@ -97,7 +100,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 43 (0x0002b) Actual length = 172 (0x0000ac)
+ Function Length : 45 (0x0002d) Actual length = 180 (0x0000b4)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -108,10 +111,9 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16] - 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! - E4 end - E4 end
+ D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40] + C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24] + 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
E4 end E4 end

+8 (+7.14%) : 196914.dasm - System.Xml.DocumentXPathNavigator:get_ValueDocument():System.String:this (FullOpts)

@@ -13,16 +13,18 @@ ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Xml.XmlDocument> ; V04 tmp2 [V04,T03] ( 3, 4.25) ref -> x1 single-def "CASTCLASS eval op1"
-; V05 tmp3 [V05,T04] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable" -; V06 tmp4 [V06,T00] ( 6, 8.75) ref -> x0 class-hnd "spilling QMark2" <System.Xml.XmlElement> -; V07 tmp5 [V07,T01] ( 3, 6 ) ref -> x0 single-def "argument with side effect"
+; V05 tmp3 [V05,T04] ( 3, 1.25) long -> x2 "fgMakeTemp is creating a new local variable" +; V06 tmp4 [V06,T01] ( 5, 5.75) ref -> x0 class-hnd "spilling QMark2" <System.Xml.XmlElement> +; V07 tmp5 [V07,T00] ( 3, 6 ) ref -> x0 single-def "argument with side effect" +; V08 cse0 [V08,T05] ( 3, 1 ) long -> x19 "CSE - moderate"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M56653_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x10]!
+ stp fp, lr, [sp, #-0x20]! + str x19, [sp, #0x18]
mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50
+ ;; size=12 bbWeight=1 PerfScore 2.50
G_M56653_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x0] ldr x0, [x0, #0x08] @@ -36,28 +38,28 @@ G_M56653_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre cbz x0, G_M56653_IG07 ;; size=32 bbWeight=1 PerfScore 15.00 G_M56653_IG03: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
- ldr x2, [x0] - movz x3, #0xD1FFAB1E - movk x3, #0xD1FFAB1E LSL #16 - movk x3, #0xD1FFAB1E LSL #32 - cmp x2, x3
+ ldr x19, [x0] + movz x2, #0xD1FFAB1E + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + cmp x19, x2
beq G_M56653_IG05 ;; size=24 bbWeight=0.25 PerfScore 1.50 G_M56653_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref ; gcrRegs -[x0]
- mov x0, x3
+ mov x0, x2
bl CORINFO_HELP_CHKCASTCLASS_SPECIAL ; gcrRegs -[x1] +[x0] ;; size=8 bbWeight=0.12 PerfScore 0.19
-G_M56653_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref - ldr x1, [x0] - ldr x1, [x1, #0x70]
+G_M56653_IG05: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref + ldr x1, [x19, #0x70]
ldr x1, [x1, #0x18]
- ;; size=12 bbWeight=1 PerfScore 9.00 -G_M56653_IG06: ; bbWeight=1, epilog, nogc, extend - ldp fp, lr, [sp], #0x10
+ ;; size=8 bbWeight=0.50 PerfScore 3.00 +G_M56653_IG06: ; bbWeight=0.50, epilog, nogc, extend + ldr x19, [sp, #0x18] + ldp fp, lr, [sp], #0x20
br x1
- ;; size=8 bbWeight=1 PerfScore 2.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
G_M56653_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[x0] movz x0, #8 @@ -65,22 +67,23 @@ G_M56653_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000 movk x0, #0xD1FFAB1E LSL #32 ;; size=12 bbWeight=0.50 PerfScore 0.75 G_M56653_IG08: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
+ ldr x19, [sp, #0x18] + ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
-; Total bytes of code 112, prolog size 8, PerfScore 30.94, instruction count 28, allocated bytes for code 112 (MethodHash=6dd022b2) for method System.Xml.DocumentXPathNavigator:get_ValueDocument():System.String:this (FullOpts)
+; Total bytes of code 120, prolog size 12, PerfScore 26.94, instruction count 30, allocated bytes for code 120 (MethodHash=6dd022b2) for method System.Xml.DocumentXPathNavigator:get_ValueDocument():System.String:this (FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 1
+ Code Words : 2
Epilog Count : 2 E bit : 0 X bit : 0 Vers : 0
- Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
+ Function Length : 30 (0x0001e) Actual length = 120 (0x000078)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -91,7 +94,10 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
+ D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24] + 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! + E4 end + E4 end
E4 end E4 end

+8 (+7.69%) : 147779.dasm - Microsoft.Build.Internal.ProjectXmlUtilities:GetAttributeValue(Microsoft.Build.Construction.XmlElementWithLocation,System.String):System.String (FullOpts)

@@ -8,20 +8,22 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T01] ( 4, 4 ) ref -> x0 class-hnd single-def <Microsoft.Build.Construction.XmlElementWithLocation> -; V01 arg1 [V01,T03] ( 3, 3 ) ref -> x1 class-hnd single-def <System.String>
+; V00 arg0 [V00,T00] ( 4, 4 ) ref -> x0 class-hnd single-def <Microsoft.Build.Construction.XmlElementWithLocation> +; V01 arg1 [V01,T02] ( 3, 3 ) ref -> x1 class-hnd single-def <System.String>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T02] ( 3, 6 ) ref -> x1 single-def "CASTCLASS eval op1" -; V04 tmp2 [V04,T04] ( 3, 3 ) long -> x3 "fgMakeTemp is creating a new local variable" -; V05 tmp3 [V05,T00] ( 6, 8.50) ref -> x0 class-hnd "spilling QMark2" <Microsoft.Build.Construction.XmlAttributeWithLocation>
+; V03 tmp1 [V03,T03] ( 3, 4.25) ref -> x1 single-def "CASTCLASS eval op1" +; V04 tmp2 [V04,T04] ( 3, 1.25) long -> x2 "fgMakeTemp is creating a new local variable" +; V05 tmp3 [V05,T01] ( 5, 5.75) ref -> x0 class-hnd "spilling QMark2" <Microsoft.Build.Construction.XmlAttributeWithLocation>
;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline return value spill temp" <System.String>
+; V07 cse0 [V07,T05] ( 3, 1 ) long -> x19 "CSE - moderate"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M36414_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x10]!
+ stp fp, lr, [sp, #-0x20]! + str x19, [sp, #0x18]
mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50
+ ;; size=12 bbWeight=1 PerfScore 2.50
G_M36414_IG02: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x0-x1] ldr x2, [x0] @@ -34,28 +36,28 @@ G_M36414_IG02: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, b cbz x0, G_M36414_IG07 ;; size=24 bbWeight=1 PerfScore 11.50 G_M36414_IG03: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
- ldr x2, [x0] - movz x3, #0xD1FFAB1E - movk x3, #0xD1FFAB1E LSL #16 - movk x3, #0xD1FFAB1E LSL #32 - cmp x2, x3
+ ldr x19, [x0] + movz x2, #0xD1FFAB1E + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + cmp x19, x2
beq G_M36414_IG05 ;; size=24 bbWeight=0.25 PerfScore 1.50
-G_M36414_IG04: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+G_M36414_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
- mov x0, x3
+ mov x0, x2
bl CORINFO_HELP_CHKCASTCLASS_SPECIAL ; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=1 PerfScore 1.50
+ ;; size=8 bbWeight=0.12 PerfScore 0.19
G_M36414_IG05: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
- ldr x1, [x0] - ldr x1, [x1, #0x48]
+ ldr x1, [x19, #0x48]
ldr x1, [x1, #0x30]
- ;; size=12 bbWeight=0.50 PerfScore 4.50
+ ;; size=8 bbWeight=0.50 PerfScore 3.00
G_M36414_IG06: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
+ ldr x19, [sp, #0x18] + ldp fp, lr, [sp], #0x20
br x1
- ;; size=8 bbWeight=0.50 PerfScore 1.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
G_M36414_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[x0] movz x0, #8 @@ -63,22 +65,23 @@ G_M36414_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000 movk x0, #0xD1FFAB1E LSL #32 ;; size=12 bbWeight=0.50 PerfScore 0.75 G_M36414_IG08: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
+ ldr x19, [sp, #0x18] + ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
-; Total bytes of code 104, prolog size 8, PerfScore 23.25, instruction count 26, allocated bytes for code 104 (MethodHash=f66a71c1) for method Microsoft.Build.Internal.ProjectXmlUtilities:GetAttributeValue(Microsoft.Build.Construction.XmlElementWithLocation,System.String):System.String (FullOpts)
+; Total bytes of code 112, prolog size 12, PerfScore 23.44, instruction count 28, allocated bytes for code 112 (MethodHash=f66a71c1) for method Microsoft.Build.Internal.ProjectXmlUtilities:GetAttributeValue(Microsoft.Build.Construction.XmlElementWithLocation,System.String):System.String (FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 1
+ Code Words : 2
Epilog Count : 2 E bit : 0 X bit : 0 Vers : 0
- Function Length : 26 (0x0001a) Actual length = 104 (0x000068)
+ Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -89,7 +92,10 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
+ D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24] + 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! + E4 end + E4 end
E4 end E4 end

libraries_tests.run.windows.arm64.Release.mch

-36 (-32.14%) : 83769.dasm - System.Boolean:Equals(System.Object):ubyte:this (Tier1)

@@ -9,82 +9,70 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 3 ) byref -> x0 this single-def
-; V01 arg1 [V01,T00] ( 5, 4.50) ref -> x19 class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 4, 4 ) ref -> x1 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> x1 class-hnd "spilling QMark2" <System.Boolean> -; V04 tmp2 [V04,T03] ( 2, 4 ) int -> x20 "impAppendStmt" -; V05 cse0 [V05,T04] ( 4, 2.50) long -> x2 "CSE - aggressive" -; V06 cse1 [V06,T05] ( 3, 2 ) long -> x1 "CSE - aggressive"
+; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> x2 class-hnd "spilling QMark2" <System.Boolean> +; V04 tmp2 [V04,T03] ( 2, 4 ) int -> x0 "impAppendStmt" +; V05 cse0 [V05,T04] ( 2, 1 ) long -> x3 "CSE - moderate"
; ; Lcl frame size = 0 G_M31030_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]! - stp x19, x20, [sp, #0x10]
+ stp fp, lr, [sp, #-0x10]!
mov fp, sp
- mov x19, x1 - ; gcrRegs +[x19] - ;; size=16 bbWeight=1 PerfScore 3.00 -G_M31030_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref, isz - ; byrRegs +[x0] - mov x1, x19 - ; gcrRegs +[x1] - cbz x1, G_M31030_IG08
;; size=8 bbWeight=1 PerfScore 1.50
-G_M31030_IG03: ; bbWeight=0.50, gcrefRegs=80002 {x1 x19}, byrefRegs=0001 {x0}, byref, isz - ldr x1, [x1] - ; gcrRegs -[x1] - movz x2, #0xD1FFAB1E - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - cmp x1, x2 - bne G_M31030_IG08 - ;; size=24 bbWeight=0.50 PerfScore 3.00 -G_M31030_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref, isz - ldrb w20, [x0] - cmp x1, x2 - beq G_M31030_IG06 - ;; size=12 bbWeight=1 PerfScore 4.50 -G_M31030_IG05: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ; byrRegs -[x0] - mov x1, x19
+G_M31030_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0001 {x0}, byref, isz
; gcrRegs +[x1]
- mov x0, x2 - bl CORINFO_HELP_UNBOX
+ ; byrRegs +[x0] + mov x2, x1 + ; gcrRegs +[x2] + cbz x2, G_M31030_IG04 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M31030_IG03: ; bbWeight=0.50, gcrefRegs=0006 {x1 x2}, byrefRegs=0001 {x0}, byref, isz + ldr x2, [x2] + ; gcrRegs -[x2] + movz x3, #0xD1FFAB1E + movk x3, #0xD1FFAB1E LSL #16 + movk x3, #0xD1FFAB1E LSL #32 + cmp x2, x3 + beq G_M31030_IG06 + ;; size=24 bbWeight=0.50 PerfScore 3.00 +G_M31030_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x1]
- ;; size=12 bbWeight=0.50 PerfScore 1.00 -G_M31030_IG06: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ldrb w0, [x19, #0x08] - cmp w20, w0 - cset x0, eq - ;; size=12 bbWeight=1 PerfScore 4.00 -G_M31030_IG07: ; bbWeight=1, epilog, nogc, extend - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20 - ret lr - ;; size=12 bbWeight=1 PerfScore 3.00 -G_M31030_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x19]
+ ; byrRegs -[x0]
mov w0, wzr
- ;; size=4 bbWeight=0 PerfScore 0.00 -G_M31030_IG09: ; bbWeight=0, epilog, nogc, extend - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20
+ ;; size=4 bbWeight=1 PerfScore 0.50 +G_M31030_IG05: ; bbWeight=1, epilog, nogc, extend + ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=8 bbWeight=1 PerfScore 2.00 +G_M31030_IG06: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0001 {x0}, gcvars, byref + ; gcrRegs +[x1] + ; byrRegs +[x0] + ldrb w0, [x0] + ; byrRegs -[x0] + ldrb w1, [x1, #0x08] + ; gcrRegs -[x1] + cmp w0, w1 + cset x0, eq + ;; size=16 bbWeight=1 PerfScore 7.00 +G_M31030_IG07: ; bbWeight=1, epilog, nogc, extend + ldp fp, lr, [sp], #0x10 + ret lr + ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 112, prolog size 12, PerfScore 20.00, instruction count 28, allocated bytes for code 112 (MethodHash=c96e86c9) for method System.Boolean:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 76, prolog size 8, PerfScore 17.50, instruction count 19, allocated bytes for code 76 (MethodHash=c96e86c9) for method System.Boolean:Equals(System.Object):ubyte:this (Tier1)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 1
Epilog Count : 2 E bit : 0 X bit : 0 Vers : 0
- Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
+ Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -95,10 +83,7 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16] - 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! - E4 end - E4 end
+ 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
E4 end E4 end

-36 (-32.14%) : 183913.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)

@@ -9,82 +9,70 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 3 ) byref -> x0 this single-def
-; V01 arg1 [V01,T00] ( 5, 4.50) ref -> x19 class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 4, 4 ) ref -> x1 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> x1 class-hnd "spilling QMark2" <System.Int32> -; V04 tmp2 [V04,T03] ( 2, 4 ) int -> x20 "impAppendStmt" -; V05 cse0 [V05,T04] ( 4, 2.50) long -> x2 "CSE - aggressive" -; V06 cse1 [V06,T05] ( 3, 2 ) long -> x1 "CSE - aggressive"
+; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> x2 class-hnd "spilling QMark2" <System.Int32> +; V04 tmp2 [V04,T03] ( 2, 4 ) int -> x0 "impAppendStmt" +; V05 cse0 [V05,T04] ( 2, 1 ) long -> x3 "CSE - moderate"
; ; Lcl frame size = 0 G_M40448_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]! - stp x19, x20, [sp, #0x10]
+ stp fp, lr, [sp, #-0x10]!
mov fp, sp
- mov x19, x1 - ; gcrRegs +[x19] - ;; size=16 bbWeight=1 PerfScore 3.00 -G_M40448_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref, isz - ; byrRegs +[x0] - mov x1, x19 - ; gcrRegs +[x1] - cbz x1, G_M40448_IG08
;; size=8 bbWeight=1 PerfScore 1.50
-G_M40448_IG03: ; bbWeight=0.50, gcrefRegs=80002 {x1 x19}, byrefRegs=0001 {x0}, byref, isz - ldr x1, [x1] - ; gcrRegs -[x1] - movz x2, #0xD1FFAB1E - movk x2, #229 LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - cmp x1, x2 - bne G_M40448_IG08 - ;; size=24 bbWeight=0.50 PerfScore 3.00 -G_M40448_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref, isz - ldr w20, [x0] - cmp x1, x2 - beq G_M40448_IG06 - ;; size=12 bbWeight=1 PerfScore 4.50 -G_M40448_IG05: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ; byrRegs -[x0] - mov x1, x19
+G_M40448_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0001 {x0}, byref, isz
; gcrRegs +[x1]
- mov x0, x2 - bl CORINFO_HELP_UNBOX
+ ; byrRegs +[x0] + mov x2, x1 + ; gcrRegs +[x2] + cbz x2, G_M40448_IG04 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M40448_IG03: ; bbWeight=0.50, gcrefRegs=0006 {x1 x2}, byrefRegs=0001 {x0}, byref, isz + ldr x2, [x2] + ; gcrRegs -[x2] + movz x3, #0xD1FFAB1E + movk x3, #229 LSL #16 + movk x3, #0xD1FFAB1E LSL #32 + cmp x2, x3 + beq G_M40448_IG06 + ;; size=24 bbWeight=0.50 PerfScore 3.00 +G_M40448_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x1]
- ;; size=12 bbWeight=0.50 PerfScore 1.00 -G_M40448_IG06: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ldr w0, [x19, #0x08] - cmp w20, w0 - cset x0, eq - ;; size=12 bbWeight=1 PerfScore 4.00 -G_M40448_IG07: ; bbWeight=1, epilog, nogc, extend - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20 - ret lr - ;; size=12 bbWeight=1 PerfScore 3.00 -G_M40448_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x19]
+ ; byrRegs -[x0]
mov w0, wzr
- ;; size=4 bbWeight=0 PerfScore 0.00 -G_M40448_IG09: ; bbWeight=0, epilog, nogc, extend - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20
+ ;; size=4 bbWeight=1 PerfScore 0.50 +G_M40448_IG05: ; bbWeight=1, epilog, nogc, extend + ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=8 bbWeight=1 PerfScore 2.00 +G_M40448_IG06: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0001 {x0}, gcvars, byref + ; gcrRegs +[x1] + ; byrRegs +[x0] + ldr w0, [x0] + ; byrRegs -[x0] + ldr w1, [x1, #0x08] + ; gcrRegs -[x1] + cmp w0, w1 + cset x0, eq + ;; size=16 bbWeight=1 PerfScore 7.00 +G_M40448_IG07: ; bbWeight=1, epilog, nogc, extend + ldp fp, lr, [sp], #0x10 + ret lr + ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 112, prolog size 12, PerfScore 20.00, instruction count 28, allocated bytes for code 112 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 76, prolog size 8, PerfScore 17.50, instruction count 19, allocated bytes for code 76 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (Tier1)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 1
Epilog Count : 2 E bit : 0 X bit : 0 Vers : 0
- Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
+ Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -95,10 +83,7 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16] - 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! - E4 end - E4 end
+ 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
E4 end E4 end

-36 (-32.14%) : 220145.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)

@@ -9,82 +9,66 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 3 ) byref -> x0 this single-def
-; V01 arg1 [V01,T00] ( 5, 4.50) ref -> x19 class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 4, 4 ) ref -> x1 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> x1 class-hnd "spilling QMark2" <System.Int32> -; V04 tmp2 [V04,T03] ( 2, 4 ) int -> x20 "impAppendStmt" -; V05 cse0 [V05,T04] ( 4, 2.50) long -> x2 "CSE - aggressive" -; V06 cse1 [V06,T05] ( 3, 2 ) long -> x1 "CSE - aggressive"
+; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> x2 class-hnd "spilling QMark2" <System.Int32> +; V04 tmp2 [V04,T03] ( 2, 4 ) int -> x0 "impAppendStmt" +; V05 cse0 [V05,T04] ( 2, 1 ) long -> x3 "CSE - moderate"
; ; Lcl frame size = 0 G_M40448_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]! - stp x19, x20, [sp, #0x10]
+ stp fp, lr, [sp, #-0x10]!
mov fp, sp
- mov x19, x1 - ; gcrRegs +[x19] - ;; size=16 bbWeight=1 PerfScore 3.00 -G_M40448_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref, isz - ; byrRegs +[x0] - mov x1, x19 - ; gcrRegs +[x1] - cbz x1, G_M40448_IG08
;; size=8 bbWeight=1 PerfScore 1.50
-G_M40448_IG03: ; bbWeight=0.50, gcrefRegs=80002 {x1 x19}, byrefRegs=0001 {x0}, byref, isz - ldr x1, [x1] - ; gcrRegs -[x1] - movz x2, #0xD1FFAB1E - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - cmp x1, x2 - bne G_M40448_IG08 - ;; size=24 bbWeight=0.50 PerfScore 3.00 -G_M40448_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref, isz - ldr w20, [x0] - cmp x1, x2 - beq G_M40448_IG06 - ;; size=12 bbWeight=1 PerfScore 4.50 -G_M40448_IG05: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ; byrRegs -[x0] - mov x1, x19
+G_M40448_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0001 {x0}, byref, isz
; gcrRegs +[x1]
- mov x0, x2 - bl CORINFO_HELP_UNBOX
+ ; byrRegs +[x0] + mov x2, x1 + ; gcrRegs +[x2] + cbz x2, G_M40448_IG06 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M40448_IG03: ; bbWeight=0.50, gcrefRegs=0006 {x1 x2}, byrefRegs=0001 {x0}, byref, isz + ldr x2, [x2] + ; gcrRegs -[x2] + movz x3, #0xD1FFAB1E + movk x3, #0xD1FFAB1E LSL #16 + movk x3, #0xD1FFAB1E LSL #32 + cmp x2, x3 + bne G_M40448_IG06 + ;; size=24 bbWeight=0.50 PerfScore 3.00 +G_M40448_IG04: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0001 {x0}, byref + ldr w0, [x0] + ; byrRegs -[x0] + ldr w1, [x1, #0x08]
; gcrRegs -[x1]
- ;; size=12 bbWeight=0.50 PerfScore 1.00 -G_M40448_IG06: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ldr w0, [x19, #0x08] - cmp w20, w0
+ cmp w0, w1
cset x0, eq
- ;; size=12 bbWeight=1 PerfScore 4.00 -G_M40448_IG07: ; bbWeight=1, epilog, nogc, extend - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20
+ ;; size=16 bbWeight=1 PerfScore 7.00 +G_M40448_IG05: ; bbWeight=1, epilog, nogc, extend + ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=1 PerfScore 3.00 -G_M40448_IG08: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x19]
+ ;; size=8 bbWeight=1 PerfScore 2.00 +G_M40448_IG06: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, wzr
- ;; size=4 bbWeight=0.25 PerfScore 0.12 -G_M40448_IG09: ; bbWeight=0.25, epilog, nogc, extend - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20
+ ;; size=4 bbWeight=1 PerfScore 0.50 +G_M40448_IG07: ; bbWeight=1, epilog, nogc, extend + ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=0.25 PerfScore 0.75
+ ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 112, prolog size 12, PerfScore 20.88, instruction count 28, allocated bytes for code 112 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 76, prolog size 8, PerfScore 17.50, instruction count 19, allocated bytes for code 76 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (Tier1)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 1
Epilog Count : 2 E bit : 0 X bit : 0 Vers : 0
- Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
+ Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -95,10 +79,7 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16] - 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! - E4 end - E4 end
+ 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
E4 end E4 end

+16 (+6.78%) : 233359.dasm - System.Diagnostics.Activity:set_Current(System.Diagnostics.Activity) (Tier1)

@@ -5,38 +5,86 @@ ; optimized using Dynamic PGO ; fp based frame ; fully interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 2
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 2
; 1 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 6, 4 ) ref -> x19 class-hnd single-def <System.Diagnostics.Activity> ;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T03] ( 4, 2 ) int -> x20 -; V03 tmp2 [V03,T04] ( 2, 2 ) ubyte -> x0 "Inline stloc first use temp" -; V04 tmp3 [V04,T01] ( 3, 6 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V05 tmp4 [V05,T02] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
+; V02 tmp1 [V02,T01] ( 5, 2 ) int -> x20 +; V03 tmp2 [V03,T02] ( 4, 2 ) ubyte -> x21 "Inline stloc first use temp" +; V04 tmp3 [V04,T03] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V05 tmp4 [V05,T04] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M63445_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]! - stp x19, x20, [sp, #0x10]
+ stp fp, lr, [sp, #-0x30]! + stp x19, x20, [sp, #0x18] + str x21, [sp, #0x28]
mov fp, sp mov x19, x0 ; gcrRegs +[x19]
- ;; size=16 bbWeight=1 PerfScore 3.00
+ ;; size=20 bbWeight=1 PerfScore 4.00
G_M63445_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz cbnz x19, G_M63445_IG07 mov w20, #1 ;; size=8 bbWeight=1 PerfScore 1.50 G_M63445_IG03: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- uxtb w0, w20 - cbnz w0, G_M63445_IG04
+ uxtb w21, w20 + cbz w21, G_M63445_IG09 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M63445_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + mov x0, x19 + ; gcrRegs +[x0] + movz x1, #0xD1FFAB1E // code for System.Diagnostics.Activity:SetCurrent(System.Diagnostics.Activity) + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + ldr x1, [x1] + ;; size=20 bbWeight=1 PerfScore 5.00 +G_M63445_IG05: ; bbWeight=1, epilog, nogc, extend + ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x30 + br x1 + ; gcr arg pop 0 + ;; size=16 bbWeight=1 PerfScore 5.00 +G_M63445_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + ; gcrRegs -[x0 x19] + ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x30 + ret lr + ;; size=16 bbWeight=0 PerfScore 0.00 +G_M63445_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs +[x19] + mov x0, x19 + ; gcrRegs +[x0] + movz x1, #0xD1FFAB1E // code for System.Diagnostics.Activity:get_Id():System.String:this + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + ldr x1, [x1] + blr x1 + ; gcr arg pop 0 + cbz x0, G_M63445_IG08 + ldrb w0, [x19, #0xA4] + ; gcrRegs -[x0] + tst w0, #128 + cset x20, eq + b G_M63445_IG03 + ;; size=44 bbWeight=0 PerfScore 0.00 +G_M63445_IG08: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + mov w20, wzr + uxtb w21, w20 + cbnz w21, G_M63445_IG04 + ;; size=12 bbWeight=0 PerfScore 0.00 +G_M63445_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x19]
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 bl CORINFO_HELP_NEWSFAST
- ; gcrRegs -[x19] +[x0]
+ ; gcrRegs +[x0]
; gcr arg pop 0 mov x19, x0 ; gcrRegs +[x19] @@ -71,51 +119,9 @@ G_M63445_IG03: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; gcrRegs -[x0 x19] ; gcr arg pop 0 b G_M63445_IG06
- ;; size=116 bbWeight=1 PerfScore 25.00 -G_M63445_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ; gcrRegs +[x19] - mov x0, x19 - ; gcrRegs +[x0] - movz x1, #0xD1FFAB1E // code for System.Diagnostics.Activity:SetCurrent(System.Diagnostics.Activity) - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - ldr x1, [x1] - ;; size=20 bbWeight=1 PerfScore 5.00 -G_M63445_IG05: ; bbWeight=1, epilog, nogc, extend - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20 - br x1 - ; gcr arg pop 0 - ;; size=12 bbWeight=1 PerfScore 3.00 -G_M63445_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[x0 x19] - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20 - ret lr - ;; size=12 bbWeight=0 PerfScore 0.00 -G_M63445_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[x19] - mov x0, x19 - ; gcrRegs +[x0] - movz x1, #0xD1FFAB1E // code for System.Diagnostics.Activity:get_Id():System.String:this - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - ldr x1, [x1] - blr x1 - ; gcr arg pop 0 - cbz x0, G_M63445_IG08 - ldrb w0, [x19, #0xA4] - ; gcrRegs -[x0] - tst w0, #128 - cset x20, eq - b G_M63445_IG03 - ;; size=44 bbWeight=0 PerfScore 0.00 -G_M63445_IG08: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - mov w20, wzr - b G_M63445_IG03 - ;; size=8 bbWeight=0 PerfScore 0.00
+ ;; size=108 bbWeight=0 PerfScore 0.00
-; Total bytes of code 236, prolog size 16, PerfScore 37.50, instruction count 59, allocated bytes for code 236 (MethodHash=ccea082a) for method System.Diagnostics.Activity:set_Current(System.Diagnostics.Activity) (Tier1)
+; Total bytes of code 252, prolog size 20, PerfScore 17.00, instruction count 63, allocated bytes for code 252 (MethodHash=ccea082a) for method System.Diagnostics.Activity:set_Current(System.Diagnostics.Activity) (Tier1)
; ============================================================ Unwind Info: @@ -126,7 +132,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 59 (0x0003b) Actual length = 236 (0x0000ec)
+ Function Length : 63 (0x0003f) Actual length = 252 (0x0000fc)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -137,10 +143,9 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16] - 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! - E4 end - E4 end
+ D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40] + C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24] + 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
E4 end E4 end

+20 (+7.69%) : 164250.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:get_IsExternal():ubyte:this (Tier1)

@@ -9,45 +9,59 @@ ; 0 inlinees with PGO data; 6 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 9, 6.70) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol>
+; V00 this [V00,T00] ( 9, 6.35) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V02 tmp1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "spilling ret_expr" <Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol> ; V03 tmp2 [V03,T06] ( 2, 2 ) int -> x0 "guarded devirt return temp" ;* V04 tmp3 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SourcePropertyAccessorSymbol>
-; V05 tmp4 [V05,T04] ( 3, 2.35) ref -> x22 "guarded devirt return temp"
+; V05 tmp4 [V05,T04] ( 3, 2 ) ref -> x22 "guarded devirt return temp"
;* V06 tmp5 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SourcePropertyAccessorSymbol> ; V07 tmp6 [V07,T02] ( 6, 3 ) ref -> x0 "guarded devirt return temp" ;* V08 tmp7 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SourcePropertyAccessorSymbol>
-; V09 tmp8 [V09,T05] ( 3, 2 ) int -> x19 "guarded devirt return temp"
+; V09 tmp8 [V09,T05] ( 3, 2 ) int -> x23 "guarded devirt return temp"
;* V10 tmp9 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol> ;* V11 tmp10 [V11 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V12 cse0 [V12,T01] ( 6, 5.65) long -> x20 "CSE - aggressive"
+; V12 cse0 [V12,T01] ( 6, 5.30) long -> x20 "CSE - aggressive"
; V13 cse1 [V13,T03] ( 3, 3 ) long -> x21 "CSE - aggressive" ;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M64554_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]! - stp x19, x20, [sp, #0x10] - stp x21, x22, [sp, #0x20]
+ stp fp, lr, [sp, #-0x40]! + stp x19, x20, [sp, #0x18] + stp x21, x22, [sp, #0x28] + str x23, [sp, #0x38]
mov fp, sp mov x19, x0 ; gcrRegs +[x19]
- ;; size=20 bbWeight=1 PerfScore 4.00
+ ;; size=24 bbWeight=1 PerfScore 5.00
G_M64554_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldr x20, [x19] movz x21, #0xD1FFAB1E movk x21, #0xD1FFAB1E LSL #16 movk x21, #0xD1FFAB1E LSL #32 cmp x20, x21
- beq G_M64554_IG09
+ beq G_M64554_IG04
mov x0, x19 ; gcrRegs +[x0] ldr x1, [x20, #0x78] ldr x1, [x1, #0x08] blr x1 ; gcrRegs -[x0]
- cbnz w0, G_M64554_IG13
+ cbnz w0, G_M64554_IG15 + ;; size=44 bbWeight=1 PerfScore 14.50 +G_M64554_IG03: ; bbWeight=0.65, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + b G_M64554_IG05 + ;; size=4 bbWeight=0.65 PerfScore 0.65 +G_M64554_IG04: ; bbWeight=0.35, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + ldr w0, [x19, #0x68] + tbnz w0, #13, G_M64554_IG15 + ldr x22, [x19, #0x38] + ; gcrRegs +[x22] + b G_M64554_IG06 + ;; size=16 bbWeight=0.35 PerfScore 2.80 +G_M64554_IG05: ; bbWeight=0.65, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + ; gcrRegs -[x22]
mov x0, x19 ; gcrRegs +[x0] ldr x1, [x20, #0x58] @@ -55,14 +69,14 @@ G_M64554_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by blr x1 mov x22, x0 ; gcrRegs +[x22]
- ;; size=64 bbWeight=1 PerfScore 22.50 -G_M64554_IG03: ; bbWeight=1, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+ ;; size=20 bbWeight=0.65 PerfScore 5.20 +G_M64554_IG06: ; bbWeight=1, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- cbz x22, G_M64554_IG11
+ cbz x22, G_M64554_IG13
cmp x20, x21
- beq G_M64554_IG08
+ beq G_M64554_IG11
;; size=12 bbWeight=1 PerfScore 2.50
-G_M64554_IG04: ; bbWeight=0.65, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M64554_IG07: ; bbWeight=0.65, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x22] mov x0, x19 ; gcrRegs +[x0] @@ -71,72 +85,67 @@ G_M64554_IG04: ; bbWeight=0.65, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, blr x1 ; gcrRegs -[x19] ;; size=16 bbWeight=0.65 PerfScore 4.88
-G_M64554_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+G_M64554_IG08: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
ldr x1, [x0] movz x2, #0xD1FFAB1E movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 cmp x1, x2
- bne G_M64554_IG10
+ bne G_M64554_IG12
ldr w0, [x0, #0x88] ; gcrRegs -[x0] asr w0, w0, #10
- and w19, w0, #15
+ and w23, w0, #15
;; size=36 bbWeight=1 PerfScore 10.50
-G_M64554_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - cmp w19, #3
+G_M64554_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + cmp w23, #3
cset x0, eq ;; size=8 bbWeight=1 PerfScore 1.00
-G_M64554_IG07: ; bbWeight=1, epilog, nogc, extend - ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x30
+G_M64554_IG10: ; bbWeight=1, epilog, nogc, extend + ldr x23, [sp, #0x38] + ldp x21, x22, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x40
ret lr
- ;; size=16 bbWeight=1 PerfScore 4.00 -G_M64554_IG08: ; bbWeight=0.35, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=20 bbWeight=1 PerfScore 6.00 +G_M64554_IG11: ; bbWeight=0.35, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x19] ldr x0, [x19, #0x38] ; gcrRegs +[x0]
- b G_M64554_IG05
+ b G_M64554_IG08
;; size=8 bbWeight=0.35 PerfScore 1.40
-G_M64554_IG09: ; bbWeight=0.35, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x0] - ldr w0, [x19, #0x68] - tbnz w0, #13, G_M64554_IG13 - ldr x22, [x19, #0x38] - ; gcrRegs +[x22] - b G_M64554_IG03 - ;; size=16 bbWeight=0.35 PerfScore 2.80 -G_M64554_IG10: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref - ; gcrRegs -[x19 x22] +[x0]
+G_M64554_IG12: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref + ; gcrRegs -[x19]
ldr x1, [x0] ldr x1, [x1, #0xA8] ldr x1, [x1, #0x28] blr x1 ; gcrRegs -[x0]
- sxtw w19, w0 - b G_M64554_IG06
+ sxtw w23, w0 + b G_M64554_IG09
;; size=24 bbWeight=0 PerfScore 0.00
-G_M64554_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M64554_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, wzr ;; size=4 bbWeight=0 PerfScore 0.00
-G_M64554_IG12: ; bbWeight=0, epilog, nogc, extend - ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x30
+G_M64554_IG14: ; bbWeight=0, epilog, nogc, extend + ldr x23, [sp, #0x38] + ldp x21, x22, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x40
ret lr
- ;; size=16 bbWeight=0 PerfScore 0.00 -G_M64554_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=20 bbWeight=0 PerfScore 0.00 +G_M64554_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, #1 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M64554_IG14: ; bbWeight=0, epilog, nogc, extend - ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x30
+G_M64554_IG16: ; bbWeight=0, epilog, nogc, extend + ldr x23, [sp, #0x38] + ldp x21, x22, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x40
ret lr
- ;; size=16 bbWeight=0 PerfScore 0.00
+ ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 260, prolog size 16, PerfScore 53.57, instruction count 65, allocated bytes for code 260 (MethodHash=2f0703d5) for method Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:get_IsExternal():ubyte:this (Tier1)
+; Total bytes of code 280, prolog size 20, PerfScore 54.42, instruction count 70, allocated bytes for code 280 (MethodHash=2f0703d5) for method Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:get_IsExternal():ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -147,7 +156,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 65 (0x00041) Actual length = 260 (0x000104)
+ Function Length : 70 (0x00046) Actual length = 280 (0x000118)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -161,10 +170,9 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
+ D1 07 save_reg X#4 Z#7 (0x07); str x23, [sp, #56]
E6 save_next
- C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16] - 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]! - E4 end - E4 end
+ C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24] + 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
E4 end

+16 (+8.00%) : 333362.dasm - System.Globalization.Ordinal:CompareStringIgnoreCase(byref,int,byref,int):int (Tier1)

@@ -5,34 +5,35 @@ ; optimized using Dynamic PGO ; fp based frame ; fully interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 1170
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 1170
; 1 inlinees with PGO data; 5 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; ; V00 arg0 [V00,T07] ( 3, 3 ) byref -> x0 single-def
-; V01 arg1 [V01,T05] ( 6, 4.01) int -> x1 single-def
+; V01 arg1 [V01,T05] ( 6, 4.02) int -> x1 single-def
; V02 arg2 [V02,T08] ( 3, 3 ) byref -> x2 single-def
-; V03 arg3 [V03,T06] ( 6, 4.01) int -> x3 single-def -; V04 loc0 [V04,T02] ( 7, 9.82) int -> x4
+; V03 arg3 [V03,T06] ( 6, 4.02) int -> x3 single-def +; V04 loc0 [V04,T02] ( 6, 9.81) int -> x4
; V05 loc1 [V05,T12] ( 5, 1.01) int -> x5 ; V06 loc2 [V06,T03] ( 5, 8.79) byref -> x0 ; V07 loc3 [V07,T04] ( 5, 8.79) byref -> x2 ; V08 loc4 [V08,T09] ( 5, 4.93) int -> x0
-; V09 loc5 [V09,T10] ( 5, 4.93) int -> x4
+; V09 loc5 [V09,T10] ( 5, 4.93) int -> x1
;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V11 tmp1 [V11,T11] ( 2, 2 ) int -> x4 "Inline return value spill temp" ;* V12 tmp2 [V12 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg" ;* V13 tmp3 [V13 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg" ;* V14 tmp4 [V14 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
-; V15 cse0 [V15,T00] ( 7, 18.25) int -> x6 "CSE - aggressive" -; V16 cse1 [V16,T01] ( 6, 14.99) int -> x7 "CSE - aggressive"
+; V15 cse0 [V15,T00] ( 7, 18.25) int -> x19 "CSE - aggressive" +; V16 cse1 [V16,T01] ( 6, 14.99) int -> x20 "CSE - aggressive"
; ; Lcl frame size = 0 G_M49993_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x10]!
+ stp fp, lr, [sp, #-0x20]! + stp x19, x20, [sp, #0x10]
mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50
+ ;; size=12 bbWeight=1 PerfScore 2.50
G_M49993_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref ; byrRegs +[x0 x2] cmp w1, w3 @@ -41,14 +42,14 @@ G_M49993_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, b b G_M49993_IG05 ;; size=16 bbWeight=1 PerfScore 2.50 G_M49993_IG03: ; bbWeight=3.25, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
- orr w8, w6, #32 - orr w9, w7, #32 - orr w10, w6, #32 - sub w10, w10, #97 - cmp w8, w9 - ccmp w10, #25, c, eq - ccmp w6, w7, z, hi - bne G_M49993_IG11
+ orr w6, w19, #32 + orr w7, w20, #32 + orr w8, w19, #32 + sub w8, w8, #97 + cmp w6, w7 + ccmp w8, #25, c, eq + ccmp w19, w20, z, hi + bne G_M49993_IG08
;; size=32 bbWeight=3.25 PerfScore 14.65 G_M49993_IG04: ; bbWeight=2.27, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref sub w4, w4, #1 @@ -56,47 +57,47 @@ G_M49993_IG04: ; bbWeight=2.27, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2} add x2, x2, #2 ;; size=12 bbWeight=2.27 PerfScore 3.40 G_M49993_IG05: ; bbWeight=3.27, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
- cbz w4, G_M49993_IG08
+ cbz w4, G_M49993_IG10
;; size=4 bbWeight=3.27 PerfScore 3.27 G_M49993_IG06: ; bbWeight=3.26, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
- ldrh w6, [x0] - cmp w6, #127 - bgt G_M49993_IG13
+ ldrh w19, [x0] + cmp w19, #127 + bgt G_M49993_IG12
;; size=12 bbWeight=3.26 PerfScore 14.65 G_M49993_IG07: ; bbWeight=3.25, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
- ldrh w7, [x2] - cmp w7, #127 - ble G_M49993_IG03 - ;; size=12 bbWeight=3.25 PerfScore 14.65 -G_M49993_IG08: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz - cbnz w4, G_M49993_IG13 - ;; size=4 bbWeight=0.01 PerfScore 0.01 -G_M49993_IG09: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ldrh w20, [x2] + cmp w20, #127 + bgt G_M49993_IG12 + b G_M49993_IG03 + ;; size=16 bbWeight=3.25 PerfScore 17.90 +G_M49993_IG08: ; bbWeight=0.99, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x0 x2]
+ sxtw w0, w19 + sxtw w1, w20 + sub w2, w19, #97 + sub w3, w0, #32 + cmp w2, #25 + csel w0, w0, w3, hi + sub w2, w20, #97 + sub w3, w1, #32 + cmp w2, #25 + csel w1, w1, w3, hi + sub w0, w0, w1 + ;; size=44 bbWeight=0.99 PerfScore 5.42 +G_M49993_IG09: ; bbWeight=0.99, epilog, nogc, extend + ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x20 + ret lr + ;; size=12 bbWeight=0.99 PerfScore 2.96 +G_M49993_IG10: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
sub w0, w1, w3 ;; size=4 bbWeight=0.01 PerfScore 0.01
-G_M49993_IG10: ; bbWeight=0.01, epilog, nogc, extend - ldp fp, lr, [sp], #0x10
+G_M49993_IG11: ; bbWeight=0.01, epilog, nogc, extend + ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=0.01 PerfScore 0.02 -G_M49993_IG11: ; bbWeight=0.99, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - sxtw w0, w6 - sxtw w4, w7 - sub w5, w6, #97 - sub w3, w0, #32 - cmp w5, #25 - csel w0, w0, w3, hi - sub w3, w7, #97 - sub w1, w4, #32 - cmp w3, #25 - csel w4, w4, w1, hi - sub w0, w0, w4 - ;; size=44 bbWeight=0.99 PerfScore 5.42 -G_M49993_IG12: ; bbWeight=0.99, epilog, nogc, extend - ldp fp, lr, [sp], #0x10 - ret lr - ;; size=8 bbWeight=0.99 PerfScore 1.97 -G_M49993_IG13: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, gcvars, byref
+ ;; size=12 bbWeight=0.01 PerfScore 0.04 +G_M49993_IG12: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, gcvars, byref
; byrRegs +[x0 x2] sub w5, w5, w4 sub w3, w3, w5 @@ -106,24 +107,25 @@ G_M49993_IG13: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=000 movk x4, #0xD1FFAB1E LSL #32 ldr x4, [x4] ;; size=28 bbWeight=0.00 PerfScore 0.01
-G_M49993_IG14: ; bbWeight=0.00, epilog, nogc, extend - ldp fp, lr, [sp], #0x10
+G_M49993_IG13: ; bbWeight=0.00, epilog, nogc, extend + ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x20
br x4 ; gcr arg pop 0
- ;; size=8 bbWeight=0.00 PerfScore 0.00
+ ;; size=12 bbWeight=0.00 PerfScore 0.01
-; Total bytes of code 200, prolog size 8, PerfScore 62.07, instruction count 50, allocated bytes for code 200 (MethodHash=d5cf3cb6) for method System.Globalization.Ordinal:CompareStringIgnoreCase(byref,int,byref,int):int (Tier1)
+; Total bytes of code 216, prolog size 12, PerfScore 67.32, instruction count 54, allocated bytes for code 216 (MethodHash=d5cf3cb6) for method System.Globalization.Ordinal:CompareStringIgnoreCase(byref,int,byref,int):int (Tier1)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 1
+ Code Words : 2
Epilog Count : 3 E bit : 0 X bit : 0 Vers : 0
- Function Length : 50 (0x00032) Actual length = 200 (0x0000c8)
+ Function Length : 54 (0x00036) Actual length = 216 (0x0000d8)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -137,7 +139,10 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
+ C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16] + 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! + E4 end + E4 end
E4 end E4 end

librariestestsnotieredcompilation.run.windows.arm64.Release.mch

-40 (-32.26%) : 203324.dasm - System.Runtime.Serialization.Formatters.Tests.StructContainingArraysOfOtherStructs:Equals(System.Object):ubyte:this (FullOpts)

@@ -8,93 +8,72 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 2.50) byref -> x0 this single-def
-; V01 arg1 [V01,T00] ( 5, 3.75) ref -> x19 class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 4, 3.50) ref -> x1 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 4.50) ref -> x1 class-hnd "spilling QMark2" <System.Runtime.Serialization.Formatters.Tests.StructContainingArraysOfOtherStructs> -; V04 tmp2 [V04,T03] ( 2, 2 ) ref -> x20 class-hnd exact single-def "impAppendStmt" <System.Runtime.Serialization.Formatters.Tests.StructContainingOtherStructs[]> -; V05 cse0 [V05,T04] ( 4, 1.25) long -> x2 "CSE - moderate" -; V06 cse1 [V06,T05] ( 3, 1 ) long -> x1 "CSE - moderate"
+; V03 tmp1 [V03,T01] ( 3, 4.50) ref -> x2 class-hnd "spilling QMark2" <System.Runtime.Serialization.Formatters.Tests.StructContainingArraysOfOtherStructs> +; V04 tmp2 [V04,T03] ( 2, 2 ) ref -> x0 class-hnd exact single-def "impAppendStmt" <System.Runtime.Serialization.Formatters.Tests.StructContainingOtherStructs[]>
; ; Lcl frame size = 0
-G_M20050_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG - stp fp, lr, [sp, #-0x20]! - stp x19, x20, [sp, #0x10]
+G_M20050_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG + stp fp, lr, [sp, #-0x10]!
mov fp, sp
- mov x19, x1 - ; gcrRegs +[x19] - ;; size=16 bbWeight=1 PerfScore 3.00 -G_M20050_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref, isz - ; byrRegs +[x0] - mov x1, x19 - ; gcrRegs +[x1] - cbz x1, G_M20050_IG04
;; size=8 bbWeight=1 PerfScore 1.50
-G_M20050_IG03: ; bbWeight=0.25, gcrefRegs=80002 {x1 x19}, byrefRegs=0001 {x0}, byref, isz - ldr x1, [x1] - ; gcrRegs -[x1] - movz x2, #0xD1FFAB1E - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - cmp x1, x2
+G_M20050_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0001 {x0}, byref, isz + ; gcrRegs +[x1] + ; byrRegs +[x0] + mov x2, x1 + ; gcrRegs +[x2] + cbz x2, G_M20050_IG04 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M20050_IG03: ; bbWeight=0.25, gcrefRegs=0006 {x1 x2}, byrefRegs=0001 {x0}, byref, isz + ldr x2, [x2] + ; gcrRegs -[x2] + movz x3, #0xD1FFAB1E + movk x3, #0xD1FFAB1E LSL #16 + movk x3, #0xD1FFAB1E LSL #32 + cmp x2, x3
beq G_M20050_IG06 ;; size=24 bbWeight=0.25 PerfScore 1.50 G_M20050_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19]
+ ; gcrRegs -[x1]
; byrRegs -[x0] mov w0, wzr ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M20050_IG05: ; bbWeight=0.50, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20
+ ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 1.50 -G_M20050_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, gcvars, byref, isz - ; gcrRegs +[x19]
+ ;; size=8 bbWeight=0.50 PerfScore 1.00 +G_M20050_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0001 {x0}, gcvars, byref + ; gcrRegs +[x1]
; byrRegs +[x0]
- ldr x20, [x0] - ; gcrRegs +[x20] - cmp x1, x2 - beq G_M20050_IG08 - ;; size=12 bbWeight=0.50 PerfScore 2.25 -G_M20050_IG07: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref - ; byrRegs -[x0] - mov x1, x19 - ; gcrRegs +[x1] - mov x0, x2 - bl CORINFO_HELP_UNBOX - ; gcrRegs -[x1] - ; gcr arg pop 0 - ;; size=12 bbWeight=0.25 PerfScore 0.50 -G_M20050_IG08: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref - ldr x1, [x19, #0x08] - ; gcrRegs +[x1] - mov x0, x20
+ ldr x0, [x0]
; gcrRegs +[x0]
+ ; byrRegs -[x0] + ldr x1, [x1, #0x08]
movz x2, #0xD1FFAB1E // code for System.Runtime.Serialization.Formatters.Tests.EqualityHelpers:ArraysAreEqual[System.Runtime.Serialization.Formatters.Tests.StructContainingOtherStructs](System.Runtime.Serialization.Formatters.Tests.StructContainingOtherStructs[],System.Runtime.Serialization.Formatters.Tests.StructContainingOtherStructs[]):ubyte movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2]
- ;; size=24 bbWeight=0.50 PerfScore 4.00 -G_M20050_IG09: ; bbWeight=0.50, epilog, nogc, extend - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20
+ ;; size=24 bbWeight=0.50 PerfScore 5.25 +G_M20050_IG07: ; bbWeight=0.50, epilog, nogc, extend + ldp fp, lr, [sp], #0x10
br x2 ; gcr arg pop 0
- ;; size=12 bbWeight=0.50 PerfScore 1.50
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 124, prolog size 16, PerfScore 16.00, instruction count 31, allocated bytes for code 124 (MethodHash=8ccbb1ad) for method System.Runtime.Serialization.Formatters.Tests.StructContainingArraysOfOtherStructs:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 84, prolog size 8, PerfScore 12.00, instruction count 21, allocated bytes for code 84 (MethodHash=8ccbb1ad) for method System.Runtime.Serialization.Formatters.Tests.StructContainingArraysOfOtherStructs:Equals(System.Object):ubyte:this (FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 1
Epilog Count : 2 E bit : 0 X bit : 0 Vers : 0
- Function Length : 31 (0x0001f) Actual length = 124 (0x00007c)
+ 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) @@ -105,10 +84,7 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16] - 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! - E4 end - E4 end
+ 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
E4 end E4 end

-48 (-27.91%) : 97037.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)

@@ -7,15 +7,17 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T04] ( 5, 7.50) ref -> x0 class-hnd single-def <System.String> -; V01 arg1 [V01,T02] ( 6, 11 ) ref -> x1 class-hnd single-def <System.String> -; V02 arg2 [V02,T05] ( 4, 6.50) int -> x2 single-def -; V03 arg3 [V03,T07] ( 5, 4.50) int -> x3 single-def -; V04 loc0 [V04,T03] ( 6, 13 ) int -> x5 -; V05 loc1 [V05,T00] ( 11, 27.50) int -> x6
+; V00 arg0 [V00,T04] ( 4, 7 ) ref -> x0 class-hnd single-def <System.String> +; V01 arg1 [V01,T02] ( 4, 10 ) ref -> x1 class-hnd single-def <System.String> +; V02 arg2 [V02,T07] ( 3, 6 ) int -> x2 single-def +; V03 arg3 [V03,T08] ( 5, 4.50) int -> x3 single-def +; V04 loc0 [V04,T01] ( 5, 12 ) int -> x5 +; V05 loc1 [V05,T00] ( 7, 25 ) int -> x6
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 cse0 [V07,T06] ( 5, 7 ) int -> x4 "CSE - aggressive" -; V08 cse1 [V08,T01] ( 6, 13.50) int -> x8 multi-def "CSE - aggressive"
+; V07 cse0 [V07,T05] ( 3, 8.50) int -> x8 "CSE - aggressive" +; V08 cse1 [V08,T06] ( 3, 8.50) int -> x7 "CSE - aggressive" +; V09 cse2 [V09,T09] ( 4, 6.50) int -> x4 "CSE - aggressive" +; V10 cse3 [V10,T03] ( 3, 12 ) int -> x8 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -37,11 +39,11 @@ G_M6389_IG03: ; bbWeight=2, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, by ;; size=4 bbWeight=2 PerfScore 1.00 G_M6389_IG04: ; bbWeight=8, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz cmp w6, w5
- bge G_M6389_IG06
+ bge G_M6389_IG08
;; size=8 bbWeight=8 PerfScore 12.00 G_M6389_IG05: ; bbWeight=4, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz cmp w6, w4
- bhs G_M6389_IG11
+ bhs G_M6389_IG10
add x7, x0, #12 ; byrRegs +[x7] ldrh w7, [x7, w6, UXTW #2] @@ -49,55 +51,36 @@ G_M6389_IG05: ; bbWeight=4, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, by add w8, w2, w6 ldr w9, [x1, #0x08] cmp w8, w9
- bhs G_M6389_IG11
+ bhs G_M6389_IG10
add x9, x1, #12 ; byrRegs +[x9] ldrh w8, [x9, w8, UXTW #2] cmp w7, w8 beq G_M6389_IG03 ;; size=48 bbWeight=4 PerfScore 60.00
-G_M6389_IG06: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
+G_M6389_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0-x1]
; byrRegs -[x9]
- cmp w6, w5 - bge G_M6389_IG09 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M6389_IG07: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz - cmp w6, w4 - bhs G_M6389_IG11 - add x0, x0, #12 - ; gcrRegs -[x0] - ; byrRegs +[x0] - ldrh w0, [x0, w6, UXTW #2] - ; byrRegs -[x0] - add w8, w2, w6 - ldr w3, [x1, #0x08] - cmp w8, w3 - bhs G_M6389_IG11 - add x4, x1, #12 - ; byrRegs +[x4] - ldrh w1, [x4, w8, UXTW #2] - ; gcrRegs -[x1] - sub w0, w0, w1 - ;; size=44 bbWeight=0.50 PerfScore 7.00 -G_M6389_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ sub w0, w7, w8 + ;; size=4 bbWeight=0.50 PerfScore 0.25 +G_M6389_IG07: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M6389_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; byrRegs -[x4]
+G_M6389_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
sub w0, w4, w3 ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M6389_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M6389_IG09: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M6389_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M6389_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 brk_windows #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 172, prolog size 8, PerfScore 91.25, instruction count 43, allocated bytes for code 172 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
+; Total bytes of code 124, prolog size 8, PerfScore 83.00, instruction count 31, allocated bytes for code 124 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
; ============================================================ Unwind Info: @@ -108,7 +91,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 43 (0x0002b) Actual length = 172 (0x0000ac)
+ Function Length : 31 (0x0001f) Actual length = 124 (0x00007c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-36 (-21.95%) : 31969.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan1[uint]):int (FullOpts)

@@ -11,12 +11,14 @@ ;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]> ; V02 loc0 [V02,T00] ( 7, 24.50) int -> x4 ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T01] ( 6, 20 ) int -> x5 "dup spill" -; V05 tmp2 [V05,T05] ( 3, 5.50) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP -; V06 tmp3 [V06,T04] ( 5, 7 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP -; V07 tmp4 [V07,T06] ( 3, 5.50) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP -; V08 tmp5 [V08,T03] ( 6, 7.50) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP -; V09 cse0 [V09,T02] ( 6, 13.50) long -> x6 multi-def "CSE - aggressive"
+; V04 tmp1 [V04,T01] ( 2, 16 ) int -> x4 "dup spill" +; V05 tmp2 [V05,T07] ( 2, 5 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP +; V06 tmp3 [V06,T04] ( 4, 6.50) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP +; V07 tmp4 [V07,T08] ( 2, 5 ) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP +; V08 tmp5 [V08,T03] ( 5, 7 ) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP +; V09 cse0 [V09,T05] ( 3, 8.50) int -> x6 "CSE - aggressive" +; V10 cse1 [V10,T06] ( 3, 8.50) int -> x5 "CSE - aggressive" +; V11 cse2 [V11,T02] ( 3, 12 ) long -> x5 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -33,51 +35,39 @@ G_M264_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs -[x0 x2] cmp w1, w3 blt G_M264_IG11
- b G_M264_IG09
+ b G_M264_IG07
;; size=12 bbWeight=0.50 PerfScore 1.25 G_M264_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref ; byrRegs +[x0 x2] sxtw w4, w3 ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M264_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
- sub w5, w4, #1 - sxtw w4, w5 - tbnz w4, #31, G_M264_IG06
+ sub w4, w4, #1 + tbnz w4, #31, G_M264_IG09
cmp w4, w1 bhs G_M264_IG13
- ubfiz x6, x4, #2, #32 - ldr w7, [x0, x6]
+ ubfiz x5, x4, #2, #32 + ldr w6, [x0, x5]
cmp w4, w3 bhs G_M264_IG13
- ldr w6, [x2, x6] - cmp w7, w6
+ ldr w5, [x2, x5] + cmp w6, w5
beq G_M264_IG05
- ;; size=48 bbWeight=4 PerfScore 54.00 -G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz - tbz w5, #31, G_M264_IG08 - mov w0, wzr - ; byrRegs -[x0]
+ ;; size=44 bbWeight=4 PerfScore 52.00 +G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ; byrRegs -[x0 x2] + cmp w5, w6 + bhi G_M264_IG11
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M264_IG07: ; bbWeight=0.50, epilog, nogc, extend
+G_M264_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov w0, #1 + ;; size=4 bbWeight=0.50 PerfScore 0.25 +G_M264_IG08: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M264_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, gcvars, byref, isz - ; byrRegs +[x0] - cmp w5, w1 - bhs G_M264_IG13 - ubfiz x6, x5, #2, #32 - ldr w0, [x0, x6] - ; byrRegs -[x0] - cmp w5, w3 - bhs G_M264_IG13 - ldr w1, [x2, x6] - cmp w0, w1 - blo G_M264_IG11 - ;; size=36 bbWeight=0.50 PerfScore 5.75 -G_M264_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; byrRegs -[x2] - mov w0, #1
+G_M264_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + mov w0, wzr
;; size=4 bbWeight=0.50 PerfScore 0.25 G_M264_IG10: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x10 @@ -96,7 +86,7 @@ G_M264_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, brk_windows #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 164, prolog size 8, PerfScore 68.50, instruction count 41, allocated bytes for code 164 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
+; Total bytes of code 128, prolog size 8, PerfScore 61.00, instruction count 32, allocated bytes for code 128 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
; ============================================================ Unwind Info: @@ -107,7 +97,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
+ Function Length : 32 (0x00020) Actual length = 128 (0x000080)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+20 (+4.42%) : 22318.dasm - System.Formats.Asn1.AsnDecoder:DecodeLength(System.ReadOnlySpan`1[ubyte],int,byref,byref):int (FullOpts)

@@ -13,36 +13,37 @@ ; V02 arg2 [V02,T09] ( 5, 4 ) byref -> x19 single-def ; V03 arg3 [V03,T01] ( 12, 14.50) byref -> x4 single-def ; V04 loc0 [V04,T13] ( 6, 3 ) ubyte -> x5
-; V05 loc1 [V05,T07] ( 6, 8 ) ubyte -> x3 -; V06 loc2 [V06,T11] ( 5, 5.50) ubyte -> x2 -; V07 loc3 [V07,T03] ( 7, 14 ) int -> x5 -; V08 loc4 [V08,T02] ( 5, 14.50) int -> x6 -; V09 loc5 [V09,T04] ( 4, 12 ) ubyte -> x8
+; V05 loc1 [V05,T07] ( 6, 8 ) ubyte -> x20 +; V06 loc2 [V06,T12] ( 4, 3.50) ubyte -> x21 +; V07 loc3 [V07,T03] ( 7, 14 ) int -> x2 +; V08 loc4 [V08,T02] ( 5, 14.50) int -> x3 +; V09 loc5 [V09,T04] ( 4, 12 ) ubyte -> x22
;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V11 tmp1 [V11,T14] ( 3, 3 ) int -> x5 "Span.get_Item index" ; V12 tmp2 [V12,T15] ( 3, 1.50) int -> x2
-; V13 tmp3 [V13,T00] ( 3, 24 ) int -> x8 "Span.get_Item index" -; V14 tmp4 [V14 ] ( 3, 3 ) struct ( 8) [fp+0x20] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]> -; V15 tmp5 [V15 ] ( 3, 3 ) struct ( 8) [fp+0x18] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]> -; V16 tmp6 [V16,T12] ( 4, 4 ) int -> x0 "Single return block return value"
+; V13 tmp3 [V13,T00] ( 3, 24 ) int -> x6 "Span.get_Item index" +; V14 tmp4 [V14 ] ( 3, 3 ) struct ( 8) [fp+0x18] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]> +; V15 tmp5 [V15 ] ( 3, 3 ) struct ( 8) [fp+0x10] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]> +; V16 tmp6 [V16,T11] ( 4, 4 ) int -> x0 "Single return block return value"
; V17 tmp7 [V17,T08] ( 3, 5.50) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP ; V18 tmp8 [V18,T06] ( 5, 7 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V19 tmp9 [V19 ] ( 3, 3 ) ubyte -> [fp+0x20] do-not-enreg[X] addr-exposed "field V14.hasValue (fldOffset=0x0)" P-DEP -; V20 tmp10 [V20 ] ( 3, 3 ) int -> [fp+0x24] do-not-enreg[X] addr-exposed "field V14.value (fldOffset=0x4)" P-DEP -; V21 tmp11 [V21 ] ( 3, 3 ) ubyte -> [fp+0x18] do-not-enreg[X] addr-exposed "field V15.hasValue (fldOffset=0x0)" P-DEP -; V22 tmp12 [V22 ] ( 3, 3 ) int -> [fp+0x1C] do-not-enreg[X] addr-exposed "field V15.value (fldOffset=0x4)" P-DEP -; V23 cse0 [V23,T05] ( 3, 12 ) int -> x7 "CSE - aggressive"
+; V19 tmp9 [V19 ] ( 3, 3 ) ubyte -> [fp+0x18] do-not-enreg[X] addr-exposed "field V14.hasValue (fldOffset=0x0)" P-DEP +; V20 tmp10 [V20 ] ( 3, 3 ) int -> [fp+0x1C] do-not-enreg[X] addr-exposed "field V14.value (fldOffset=0x4)" P-DEP +; V21 tmp11 [V21 ] ( 3, 3 ) ubyte -> [fp+0x10] do-not-enreg[X] addr-exposed "field V15.hasValue (fldOffset=0x0)" P-DEP +; V22 tmp12 [V22 ] ( 3, 3 ) int -> [fp+0x14] do-not-enreg[X] addr-exposed "field V15.value (fldOffset=0x4)" P-DEP +; V23 cse0 [V23,T05] ( 3, 12 ) int -> x5 "CSE - aggressive"
; V24 cse1 [V24,T16] ( 3, 1.50) int -> x3 "CSE - moderate" ;
-; Lcl frame size = 24
+; Lcl frame size = 16
G_M45882_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]! - str x19, [sp, #0x28]
+ stp fp, lr, [sp, #-0x40]! + stp x19, x20, [sp, #0x20] + stp x21, x22, [sp, #0x30]
mov fp, sp mov x19, x3 ; byrRegs +[x19]
- ;; size=16 bbWeight=1 PerfScore 3.00
+ ;; size=20 bbWeight=1 PerfScore 4.00
G_M45882_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80011 {x0 x4 x19}, byref, isz ; byrRegs +[x0 x4] str xzr, [x19] @@ -66,16 +67,17 @@ G_M45882_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80011 {x0 x4 ; byrRegs -[x0] ;; size=52 bbWeight=0.50 PerfScore 7.00 G_M45882_IG04: ; bbWeight=0.50, epilog, nogc, extend
- ldr x19, [sp, #0x28] - ldp fp, lr, [sp], #0x30
+ ldp x21, x22, [sp, #0x30] + ldp x19, x20, [sp, #0x20] + ldp fp, lr, [sp], #0x40
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 2.00
+ ;; size=16 bbWeight=0.50 PerfScore 2.00
G_M45882_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=80011 {x0 x4 x19}, gcvars, byref, isz ; byrRegs +[x0] cmp w5, #128 bge G_M45882_IG06
- str xzr, [fp, #0x18] // [V15 tmp5] - add x0, fp, #24 // [V15 tmp5]
+ str xzr, [fp, #0x10] // [V15 tmp5] + add x0, fp, #16 // [V15 tmp5]
; byrRegs -[x0] mov w1, w5 movz x2, #0xD1FFAB1E // code for <unknown method> @@ -85,7 +87,7 @@ G_M45882_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000 blr x2 ; byrRegs -[x4] ; gcr arg pop 0
- ldr x0, [fp, #0x18] // [V15 tmp5]
+ ldr x0, [fp, #0x10] // [V15 tmp5]
str x0, [x19] b G_M45882_IG22 ;; size=52 bbWeight=0.50 PerfScore 6.50 @@ -101,9 +103,9 @@ G_M45882_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80011 {x0 x4 G_M45882_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80011 {x0 x4 x19}, byref, isz ; byrRegs +[x0] and w3, w5, #0xD1FFAB1E
- uxtb w3, w3 - add w5, w3, #1 - cmp w5, w1
+ uxtb w20, w3 + add w3, w20, #1 + cmp w3, w1
ble G_M45882_IG10 str wzr, [x4] ;; size=24 bbWeight=0.50 PerfScore 2.00 @@ -112,10 +114,11 @@ G_M45882_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr mov w0, wzr ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M45882_IG09: ; bbWeight=0.50, epilog, nogc, extend
- ldr x19, [sp, #0x28] - ldp fp, lr, [sp], #0x30
+ ldp x21, x22, [sp, #0x30] + ldp x19, x20, [sp, #0x20] + ldp fp, lr, [sp], #0x40
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 2.00
+ ;; size=16 bbWeight=0.50 PerfScore 2.00
G_M45882_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=80011 {x0 x4 x19}, gcvars, byref, isz ; byrRegs +[x0 x4 x19] cmp w2, #2 @@ -128,9 +131,9 @@ G_M45882_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80011 {x0 x4 mov w2, #1 ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M45882_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80011 {x0 x4 x19}, byref, isz
- uxtb w2, w2 - cbz w2, G_M45882_IG14 - cmp w3, #4
+ uxtb w21, w2 + cbz w21, G_M45882_IG14 + cmp w20, #4
ble G_M45882_IG14 ;; size=16 bbWeight=0.50 PerfScore 1.50 G_M45882_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {x4}, byref @@ -141,43 +144,43 @@ G_M45882_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {x4}, b ;; size=12 bbWeight=0.50 PerfScore 1.25 G_M45882_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80011 {x0 x4 x19}, byref, isz ; byrRegs +[x0 x19]
- mov w5, wzr - mov w6, wzr - cmp w3, #0
+ mov w2, wzr + mov w3, wzr + cmp w20, #0
ble G_M45882_IG19 ;; size=16 bbWeight=0.50 PerfScore 1.25 G_M45882_IG15: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80011 {x0 x4 x19}, byref, isz
- ldr w7, [x4] - sxtw w8, w7 - cmp w8, w1
+ ldr w5, [x4] + sxtw w6, w5 + cmp w6, w1
bhs G_M45882_IG25
- ldrb w8, [x0, w8, UXTW #2] - add w7, w7, #1 - str w7, [x4] - cbnz w5, G_M45882_IG18
+ ldrb w22, [x0, w6, UXTW #2] + add w5, w5, #1 + str w5, [x4] + cbnz w2, G_M45882_IG18
;; size=32 bbWeight=4 PerfScore 42.00 G_M45882_IG16: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=80011 {x0 x4 x19}, byref, isz
- cbz w2, G_M45882_IG17 - cbz w8, G_M45882_IG20 - ;; size=8 bbWeight=2 PerfScore 4.00
+ cbz w21, G_M45882_IG17 + cbz w22, G_M45882_IG20 + b G_M45882_IG18 + ;; size=12 bbWeight=2 PerfScore 6.00
G_M45882_IG17: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=80011 {x0 x4 x19}, byref, isz
- cbnz w2, G_M45882_IG18 - cbz w8, G_M45882_IG18 - sub w7, w3, w6 - cmp w7, #4
+ cbz w22, G_M45882_IG18 + sub w5, w20, w3 + cmp w5, #4
bgt G_M45882_IG13
- ;; size=20 bbWeight=2 PerfScore 8.00
+ ;; size=16 bbWeight=2 PerfScore 6.00
G_M45882_IG18: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80011 {x0 x4 x19}, byref, isz
- orr w5, w8, w5, LSL #8 - add w6, w6, #1 - cmp w6, w3
+ orr w2, w22, w2, LSL #8 + add w3, w3, #1 + cmp w3, w20
blt G_M45882_IG15 ;; size=16 bbWeight=4 PerfScore 12.00 G_M45882_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80010 {x4 x19}, byref, isz ; byrRegs -[x0]
- tbnz w5, #31, G_M45882_IG13 - cbz w2, G_M45882_IG21 - cmp w5, #128
+ tbnz w2, #31, G_M45882_IG13 + cbz w21, G_M45882_IG21 + cmp w2, #128
bhs G_M45882_IG21 ;; size=16 bbWeight=0.50 PerfScore 1.75 G_M45882_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {x4}, byref @@ -188,16 +191,16 @@ G_M45882_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {x4}, b ;; size=12 bbWeight=0.50 PerfScore 1.25 G_M45882_IG21: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref ; byrRegs -[x4] +[x19]
- str xzr, [fp, #0x20] // [V14 tmp4] - add x0, fp, #32 // [V14 tmp4] - mov w1, w5
+ str xzr, [fp, #0x18] // [V14 tmp4] + add x0, fp, #24 // [V14 tmp4] + mov w1, w2
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2 ; gcr arg pop 0
- ldr x0, [fp, #0x20] // [V14 tmp4]
+ ldr x0, [fp, #0x18] // [V14 tmp4]
str x0, [x19] ;; size=40 bbWeight=0.50 PerfScore 5.25 G_M45882_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref @@ -205,22 +208,24 @@ G_M45882_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr mov w0, #5 ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M45882_IG23: ; bbWeight=0.50, epilog, nogc, extend
- ldr x19, [sp, #0x28] - ldp fp, lr, [sp], #0x30
+ ldp x21, x22, [sp, #0x30] + ldp x19, x20, [sp, #0x20] + ldp fp, lr, [sp], #0x40
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 2.00
+ ;; size=16 bbWeight=0.50 PerfScore 2.00
G_M45882_IG24: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ldr x19, [sp, #0x28] - ldp fp, lr, [sp], #0x30
+ ldp x21, x22, [sp, #0x30] + ldp x19, x20, [sp, #0x20] + ldp fp, lr, [sp], #0x40
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 2.00
+ ;; size=16 bbWeight=0.50 PerfScore 2.00
G_M45882_IG25: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 brk_windows #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 452, prolog size 16, PerfScore 112.25, instruction count 113, allocated bytes for code 452 (MethodHash=0a754cc5) for method System.Formats.Asn1.AsnDecoder:DecodeLength(System.ReadOnlySpan`1[ubyte],int,byref,byref):int (FullOpts)
+; Total bytes of code 472, prolog size 20, PerfScore 113.25, instruction count 118, allocated bytes for code 472 (MethodHash=0a754cc5) for method System.Formats.Asn1.AsnDecoder:DecodeLength(System.ReadOnlySpan`1[ubyte],int,byref,byref):int (FullOpts)
; ============================================================ Unwind Info: ...

+12 (+6.00%) : 178904.dasm - System.Xml.XmlDocument:get_SchemaInfo():System.Xml.Schema.IXmlSchemaInfo:this (FullOpts)

@@ -13,16 +13,18 @@ ; V02 loc1 [V02,T04] ( 3, 1.50) int -> x0 ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V04 tmp1 [V04,T02] ( 3, 2.25) ref -> x1 single-def "CASTCLASS eval op1"
-; V05 tmp2 [V05,T05] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable" -; V06 tmp3 [V06,T01] ( 6, 4.75) ref -> x0 class-hnd "spilling QMark2" <System.Xml.XmlElement>
+; V05 tmp2 [V05,T05] ( 3, 1.25) long -> x2 "fgMakeTemp is creating a new local variable" +; V06 tmp3 [V06,T01] ( 5, 3.75) ref -> x0 class-hnd "spilling QMark2" <System.Xml.XmlElement>
; V07 tmp4 [V07,T03] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
+; V08 cse0 [V08,T06] ( 3, 1 ) long -> x19 "CSE - moderate"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M33783_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x10]!
+ stp fp, lr, [sp, #-0x20]! + str x19, [sp, #0x18]
mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50
+ ;; size=12 bbWeight=1 PerfScore 2.50
G_M33783_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x0] ldrb w1, [x0, #0xD1FFAB1E] @@ -39,22 +41,21 @@ G_M33783_IG03: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b cbz x0, G_M33783_IG10 ;; size=28 bbWeight=0.50 PerfScore 6.00 G_M33783_IG04: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
- ldr x2, [x0] - movz x3, #0xD1FFAB1E - movk x3, #0xD1FFAB1E LSL #16 - movk x3, #0xD1FFAB1E LSL #32 - cmp x2, x3
+ ldr x19, [x0] + movz x2, #0xD1FFAB1E + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + cmp x19, x2
beq G_M33783_IG06 ;; size=24 bbWeight=0.25 PerfScore 1.50 G_M33783_IG05: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref ; gcrRegs -[x0]
- mov x0, x3
+ mov x0, x2
bl CORINFO_HELP_CHKCASTCLASS_SPECIAL ; gcrRegs -[x1] +[x0] ;; size=8 bbWeight=0.12 PerfScore 0.19 G_M33783_IG06: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- ldr x1, [x0] - ldr x1, [x1, #0x78]
+ ldr x1, [x19, #0x78]
ldr x1, [x1] blr x1 movz x11, #0xD1FFAB1E // code for <unknown method> @@ -72,11 +73,12 @@ G_M33783_IG06: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b movk x0, #0xD1FFAB1E LSL #32 ldr x0, [x0] ; gcrRegs +[x0]
- ;; size=68 bbWeight=0.50 PerfScore 11.50
+ ;; size=64 bbWeight=0.50 PerfScore 10.00
G_M33783_IG07: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
+ ldr x19, [sp, #0x18] + ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
G_M33783_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[x0] movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> @@ -86,9 +88,10 @@ G_M33783_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000 ; gcrRegs +[x0] ;; size=16 bbWeight=0.50 PerfScore 2.25 G_M33783_IG09: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
+ ldr x19, [sp, #0x18] + ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
G_M33783_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[x0] movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> @@ -98,22 +101,23 @@ G_M33783_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000 ; gcrRegs +[x0] ;; size=16 bbWeight=0.50 PerfScore 2.25 G_M33783_IG11: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
+ ldr x19, [sp, #0x18] + ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
-; Total bytes of code 200, prolog size 8, PerfScore 32.19, instruction count 50, allocated bytes for code 200 (MethodHash=26627c08) for method System.Xml.XmlDocument:get_SchemaInfo():System.Xml.Schema.IXmlSchemaInfo:this (FullOpts)
+; Total bytes of code 212, prolog size 12, PerfScore 34.69, instruction count 53, allocated bytes for code 212 (MethodHash=26627c08) for method System.Xml.XmlDocument:get_SchemaInfo():System.Xml.Schema.IXmlSchemaInfo:this (FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 1
+ Code Words : 2
Epilog Count : 3 E bit : 0 X bit : 0 Vers : 0
- Function Length : 50 (0x00032) Actual length = 200 (0x0000c8)
+ Function Length : 53 (0x00035) Actual length = 212 (0x0000d4)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -127,7 +131,10 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
+ D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24] + 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! + E4 end + E4 end
E4 end E4 end

+8 (+7.14%) : 174016.dasm - System.Xml.DocumentXPathNavigator:get_ValueDocument():System.String:this (FullOpts)

@@ -13,16 +13,18 @@ ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Xml.XmlDocument> ; V04 tmp2 [V04,T03] ( 3, 4.25) ref -> x1 single-def "CASTCLASS eval op1"
-; V05 tmp3 [V05,T04] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable" -; V06 tmp4 [V06,T00] ( 6, 8.75) ref -> x0 class-hnd "spilling QMark2" <System.Xml.XmlElement> -; V07 tmp5 [V07,T01] ( 3, 6 ) ref -> x0 single-def "argument with side effect"
+; V05 tmp3 [V05,T04] ( 3, 1.25) long -> x2 "fgMakeTemp is creating a new local variable" +; V06 tmp4 [V06,T01] ( 5, 5.75) ref -> x0 class-hnd "spilling QMark2" <System.Xml.XmlElement> +; V07 tmp5 [V07,T00] ( 3, 6 ) ref -> x0 single-def "argument with side effect" +; V08 cse0 [V08,T05] ( 3, 1 ) long -> x19 "CSE - moderate"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M56653_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x10]!
+ stp fp, lr, [sp, #-0x20]! + str x19, [sp, #0x18]
mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50
+ ;; size=12 bbWeight=1 PerfScore 2.50
G_M56653_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x0] ldr x0, [x0, #0x08] @@ -36,28 +38,28 @@ G_M56653_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre cbz x0, G_M56653_IG07 ;; size=32 bbWeight=1 PerfScore 15.00 G_M56653_IG03: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
- ldr x2, [x0] - movz x3, #0xD1FFAB1E - movk x3, #0xD1FFAB1E LSL #16 - movk x3, #0xD1FFAB1E LSL #32 - cmp x2, x3
+ ldr x19, [x0] + movz x2, #0xD1FFAB1E + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + cmp x19, x2
beq G_M56653_IG05 ;; size=24 bbWeight=0.25 PerfScore 1.50 G_M56653_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref ; gcrRegs -[x0]
- mov x0, x3
+ mov x0, x2
bl CORINFO_HELP_CHKCASTCLASS_SPECIAL ; gcrRegs -[x1] +[x0] ;; size=8 bbWeight=0.12 PerfScore 0.19
-G_M56653_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref - ldr x1, [x0] - ldr x1, [x1, #0x70]
+G_M56653_IG05: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref + ldr x1, [x19, #0x70]
ldr x1, [x1, #0x18]
- ;; size=12 bbWeight=1 PerfScore 9.00 -G_M56653_IG06: ; bbWeight=1, epilog, nogc, extend - ldp fp, lr, [sp], #0x10
+ ;; size=8 bbWeight=0.50 PerfScore 3.00 +G_M56653_IG06: ; bbWeight=0.50, epilog, nogc, extend + ldr x19, [sp, #0x18] + ldp fp, lr, [sp], #0x20
br x1
- ;; size=8 bbWeight=1 PerfScore 2.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
G_M56653_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[x0] movz x0, #8 @@ -65,22 +67,23 @@ G_M56653_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000 movk x0, #0xD1FFAB1E LSL #32 ;; size=12 bbWeight=0.50 PerfScore 0.75 G_M56653_IG08: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
+ ldr x19, [sp, #0x18] + ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
-; Total bytes of code 112, prolog size 8, PerfScore 30.94, instruction count 28, allocated bytes for code 112 (MethodHash=6dd022b2) for method System.Xml.DocumentXPathNavigator:get_ValueDocument():System.String:this (FullOpts)
+; Total bytes of code 120, prolog size 12, PerfScore 26.94, instruction count 30, allocated bytes for code 120 (MethodHash=6dd022b2) for method System.Xml.DocumentXPathNavigator:get_ValueDocument():System.String:this (FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 1
+ Code Words : 2
Epilog Count : 2 E bit : 0 X bit : 0 Vers : 0
- Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
+ Function Length : 30 (0x0001e) Actual length = 120 (0x000078)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -91,7 +94,10 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
+ D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24] + 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! + E4 end + E4 end
E4 end E4 end

realworld.run.windows.arm64.checked.mch

-16 (-5.56%) : 20822.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckConstantBounds(byte,Microsoft.CodeAnalysis.ConstantValue,byref):ubyte (FullOpts)

@@ -11,18 +11,16 @@ ; V00 arg0 [V00,T02] ( 4, 3 ) byte -> x21 single-def ; V01 arg1 [V01,T00] ( 5, 4.50) ref -> x19 class-hnd single-def <Microsoft.CodeAnalysis.ConstantValue> ; V02 arg2 [V02,T01] ( 5, 3.50) byref -> x20 single-def
-; V03 loc0 [V03,T03] ( 8, 3.50) ref -> x19 class-hnd single-def <<unknown class>>
+; V03 loc0 [V03,T03] ( 7, 3.25) ref -> x19 class-hnd single-def <<unknown class>>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V05 tmp1 [V05,T04] ( 3, 2.50) ref -> x1 class-hnd "spilling QMark2" <System.Decimal>
-; V06 cse0 [V06,T06] ( 4, 1.25) long -> x0 "CSE - moderate" -; V07 cse1 [V07,T05] ( 5, 2 ) long -> x22 multi-def "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
-G_M8747_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M8747_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x10] - stp x21, x22, [sp, #0x20]
+ stp x19, x20, [sp, #0x18] + str x21, [sp, #0x28]
mov fp, sp mov w21, w0 mov x19, x1 @@ -47,11 +45,11 @@ G_M8747_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, mov w0, #1 ;; size=8 bbWeight=0.50 PerfScore 0.75 G_M8747_IG04: ; bbWeight=0.50, epilog, nogc, extend
- ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10]
+ ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30 ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.00
+ ;; size=16 bbWeight=0.50 PerfScore 2.50
G_M8747_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, gcvars, byref, isz ; gcrRegs +[x19] mov x0, x19 @@ -70,20 +68,20 @@ G_M8747_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=8000 ;; size=36 bbWeight=0.50 PerfScore 4.00 G_M8747_IG06: ; bbWeight=0.25, gcrefRegs=80002 {x1 x19}, byrefRegs=100000 {x20}, byref, isz ; gcrRegs -[x0]
- ldr x22, [x1]
+ ldr x1, [x1] + ; gcrRegs -[x1]
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- cmp x22, x0
+ cmp x1, x0
beq G_M8747_IG11 ;; size=24 bbWeight=0.25 PerfScore 1.50 G_M8747_IG07: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
- ; gcrRegs -[x1] - ldr x22, [x19] - movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - cmp x22, x1
+ ldr x1, [x19] + movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32 + cmp x1, x0
beq G_M8747_IG09 ;; size=24 bbWeight=0.50 PerfScore 3.00 G_M8747_IG08: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref @@ -106,23 +104,13 @@ G_M8747_IG09: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=100000 {x ldr x2, [x2] ;; size=28 bbWeight=0.50 PerfScore 4.25 G_M8747_IG10: ; bbWeight=0.50, epilog, nogc, extend
- ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10]
+ ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30 br x2
- ;; size=16 bbWeight=0.50 PerfScore 2.00 -G_M8747_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, gcvars, byref, isz
+ ;; size=16 bbWeight=0.50 PerfScore 2.50 +G_M8747_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, gcvars, byref
; byrRegs -[x1]
- cmp x22, x0 - beq G_M8747_IG13 - ;; size=8 bbWeight=0.50 PerfScore 0.75 -G_M8747_IG12: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref - mov x1, x19 - ; gcrRegs +[x1] - bl CORINFO_HELP_UNBOX - ; gcrRegs -[x1] - ;; size=8 bbWeight=0.25 PerfScore 0.38 -G_M8747_IG13: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
ldp x1, x2, [x19, #0x08] sxtb w0, w21 mov x3, x20 @@ -132,14 +120,14 @@ G_M8747_IG13: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=100000 {x movk x4, #0xD1FFAB1E LSL #32 ldr x4, [x4] ;; size=28 bbWeight=0.50 PerfScore 4.75
-G_M8747_IG14: ; bbWeight=0.50, epilog, nogc, extend - ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10]
+G_M8747_IG12: ; bbWeight=0.50, epilog, nogc, extend + ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30 br x4
- ;; size=16 bbWeight=0.50 PerfScore 2.00
+ ;; size=16 bbWeight=0.50 PerfScore 2.50
-; Total bytes of code 288, prolog size 16, PerfScore 43.12, instruction count 72, allocated bytes for code 288 (MethodHash=9544ddd4) for method Microsoft.CodeAnalysis.CSharp.Binder:CheckConstantBounds(byte,Microsoft.CodeAnalysis.ConstantValue,byref):ubyte (FullOpts)
+; Total bytes of code 272, prolog size 16, PerfScore 43.50, instruction count 68, allocated bytes for code 272 (MethodHash=9544ddd4) for method Microsoft.CodeAnalysis.CSharp.Binder:CheckConstantBounds(byte,Microsoft.CodeAnalysis.ConstantValue,byref):ubyte (FullOpts)
; ============================================================ Unwind Info: @@ -150,7 +138,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 72 (0x00048) Actual length = 288 (0x000120)
+ Function Length : 68 (0x00044) Actual length = 272 (0x000110)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -164,10 +152,9 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- E6 save_next - C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
+ D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40] + C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]! E4 end E4 end
- E4 end

-16 (-5.41%) : 667.dasm - System.Number:RoundNumber(byref,int,ubyte) (FullOpts)

@@ -8,19 +8,21 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T04] ( 10, 7.50) byref -> x19 single-def
+; V00 arg0 [V00,T05] ( 10, 7.50) byref -> x19 single-def
; V01 arg1 [V01,T02] ( 5, 11.50) int -> x1 single-def
-; V02 arg2 [V02,T05] ( 3, 2.50) ubyte -> x3 single-def
+; V02 arg2 [V02,T07] ( 3, 2.50) ubyte -> x3 single-def
; V03 loc0 [V03,T01] ( 8, 15.50) long -> x20
-; V04 loc1 [V04,T00] ( 19, 44 ) int -> x21
+; V04 loc1 [V04,T00] ( 16, 41 ) int -> x21
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T07] ( 3, 3 ) byref -> x0 single-def "dup spill" -; V07 tmp2 [V07,T08] ( 3, 3 ) long -> x0 "dup spill"
+; V06 tmp1 [V06,T09] ( 3, 3 ) byref -> x0 single-def "dup spill" +; V07 tmp2 [V07,T11] ( 2, 2 ) long -> x0 "dup spill"
;* V08 tmp3 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-; V09 tmp4 [V09,T09] ( 2, 2 ) byref -> x20 single-def "field V08._reference (fldOffset=0x0)" P-INDEP
+; V09 tmp4 [V09,T10] ( 2, 2 ) byref -> x20 single-def "field V08._reference (fldOffset=0x0)" P-INDEP
;* V10 tmp5 [V10 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP
-; V11 tmp6 [V11,T06] ( 2, 4 ) long -> x20 "Cast away GC" -; V12 cse0 [V12,T03] ( 3, 10 ) int -> x0 "CSE - aggressive"
+; V11 tmp6 [V11,T08] ( 2, 4 ) long -> x20 "Cast away GC" +; V12 cse0 [V12,T06] ( 3, 8.50) int -> x1 "CSE - aggressive" +; V13 cse1 [V13,T03] ( 4, 10.50) int -> x0 "CSE - aggressive" +; V14 cse2 [V14,T04] ( 3, 10 ) int -> x0 "CSE - aggressive"
; ; Lcl frame size = 8 @@ -69,26 +71,22 @@ G_M4398_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, b G_M4398_IG09 ;; size=40 bbWeight=0.50 PerfScore 5.75 G_M4398_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
- sub w21, w21, #1
+ sxtw w21, w0
;; size=4 bbWeight=2 PerfScore 1.00 G_M4398_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
- cmp w21, #0 - ble G_M4398_IG10 - sub w0, w21, #1 - ldrb w0, [x20, w0, SXTW #2] - cmp w0, #57 - beq G_M4398_IG08 - ;; size=24 bbWeight=4 PerfScore 26.00 -G_M4398_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
cmp w21, #0 ble G_M4398_IG11 sub w0, w21, #1
+ ldrb w1, [x20, w0, SXTW #2] + cmp w1, #57 + beq G_M4398_IG08 + ;; size=24 bbWeight=4 PerfScore 26.00 +G_M4398_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
add x0, x20, w0, SXTW
- ldrb w1, [x0]
add w1, w1, #1 strb w1, [x0] b G_M4398_IG14
- ;; size=32 bbWeight=0.50 PerfScore 4.25
+ ;; size=16 bbWeight=0.50 PerfScore 1.75
G_M4398_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref add x0, x19, #4 ; byrRegs +[x0] @@ -142,7 +140,7 @@ G_M4398_IG17: ; bbWeight=1, epilog, nogc, extend ret lr ;; size=16 bbWeight=1 PerfScore 5.00
-; Total bytes of code 296, prolog size 24, PerfScore 124.25, instruction count 74, allocated bytes for code 296 (MethodHash=4357eed1) for method System.Number:RoundNumber(byref,int,ubyte) (FullOpts)
+; Total bytes of code 280, prolog size 24, PerfScore 121.75, instruction count 70, allocated bytes for code 280 (MethodHash=4357eed1) for method System.Number:RoundNumber(byref,int,ubyte) (FullOpts)
; ============================================================ Unwind Info: @@ -153,7 +151,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 74 (0x0004a) Actual length = 296 (0x000128)
+ Function Length : 70 (0x00046) Actual length = 280 (0x000118)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-12 (-4.35%) : 17893.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)

@@ -15,8 +15,8 @@ ; V04 loc3 [V04,T01] ( 8, 25 ) int -> x1 ;* V05 loc4 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ubyte]> ;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T04] ( 2, 16 ) int -> x1 "dup spill" -; V08 tmp2 [V08,T03] ( 3, 17 ) int -> x0 "dup spill"
+; V07 tmp1 [V07,T03] ( 2, 16 ) int -> x1 "dup spill" +; V08 tmp2 [V08,T04] ( 2, 16 ) int -> x1 "dup spill"
; V09 tmp3 [V09,T05] ( 2, 16 ) int -> x7 "dup spill" ; V10 tmp4 [V10,T06] ( 2, 16 ) int -> x6 "dup spill" ; V11 tmp5 [V11,T07] ( 2, 16 ) int -> x7 "dup spill" @@ -109,26 +109,23 @@ G_M61853_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000 bne G_M61853_IG13 ;; size=8 bbWeight=0.50 PerfScore 0.75 G_M61853_IG09: ; bbWeight=4, gcrefRegs=0008 {x3}, byrefRegs=0020 {x5}, byref, isz
- sub w0, w1, #1 - sxtw w1, w0
+ sub w1, w1, #1
cmp w1, #0
- ble G_M61853_IG10
+ ble G_M61853_IG13
add w7, w7, #1 cmp w7, w4 bhs G_M61853_IG15 ldrh w6, [x5, w7, UXTW #2]
- sub w2, w6, #48 - cmp w2, #9
+ sub w0, w6, #48 + cmp w0, #9
bls G_M61853_IG09
- ;; size=44 bbWeight=4 PerfScore 38.00 -G_M61853_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ;; size=40 bbWeight=4 PerfScore 36.00 +G_M61853_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x3] ; byrRegs -[x5]
- cmp w0, #0 - ble G_M61853_IG13
cmp w6, #125 cset x2, eq
- ;; size=16 bbWeight=0.50 PerfScore 1.25
+ ;; size=8 bbWeight=0.50 PerfScore 0.50
G_M61853_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref uxtb w0, w2 ;; size=4 bbWeight=0.50 PerfScore 0.25 @@ -149,7 +146,7 @@ G_M61853_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_windows #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 276, prolog size 8, PerfScore 106.00, instruction count 69, allocated bytes for code 276 (MethodHash=38980e62) for method System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
+; Total bytes of code 264, prolog size 8, PerfScore 103.25, instruction count 66, allocated bytes for code 264 (MethodHash=38980e62) for method System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -160,7 +157,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 69 (0x00045) Actual length = 276 (0x000114)
+ Function Length : 66 (0x00042) Actual length = 264 (0x000108)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+4 (+0.89%) : 27943.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol+d__118:MoveNext():ubyte:this (FullOpts)

@@ -8,29 +8,30 @@ ; 0 inlinees with PGO data; 6 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 17, 9.50) ref -> [fp+0x18] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol+<GetSecurityAttributes>d__118> -; V01 loc0 [V01,T04] ( 4, 2.50) ubyte -> registers
+; V00 this [V00,T00] ( 16, 9 ) ref -> [fp+0x18] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol+<GetSecurityAttributes>d__118> +; V01 loc0 [V01,T04] ( 4, 2.50) ubyte -> x2
; V02 loc1 [V02,T05] ( 3, 2.50) int -> x1 single-def ;* V03 loc2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <<unknown class>>
-; V04 loc3 [V04,T08] ( 3, 1.50) ref -> x19 class-hnd exact single-def <Microsoft.CodeAnalysis.SecurityWellKnownAttributeData>
+; V04 loc3 [V04,T08] ( 3, 1.50) ref -> x20 class-hnd exact single-def <Microsoft.CodeAnalysis.SecurityWellKnownAttributeData>
;* V05 loc4 [V05 ] ( 0, 0 ) struct (16) zero-ref multireg-ret <Microsoft.Cci.SecurityAttribute> ;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V07 tmp1 [V07,T06] ( 3, 2.25) ref -> x1 single-def "CASTCLASS eval op1"
-; V08 tmp2 [V08,T09] ( 3, 1.25) long -> x4 "fgMakeTemp is creating a new local variable"
+; V08 tmp2 [V08,T10] ( 3, 1.25) long -> x4 "fgMakeTemp is creating a new local variable"
; V09 tmp3 [V09,T02] ( 5, 3.75) ref -> x2 class-hnd "spilling QMark2" <<unknown class>> ;* V10 tmp4 [V10 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]> ;* V11 tmp5 [V11 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <Microsoft.Cci.SecurityAttribute> ;* V12 tmp6 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>> ;* V13 tmp7 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>> ; V14 tmp8 [V14,T01] ( 6, 6 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V15 tmp9 [V15,T10] ( 2, 1 ) ref -> x15 "field V05.<Attribute>k__BackingField (fldOffset=0x0)" P-INDEP -; V16 tmp10 [V16,T12] ( 2, 1 ) short -> x1 "field V05.<Action>k__BackingField (fldOffset=0x8)" P-INDEP -; V17 tmp11 [V17,T11] ( 2, 1 ) ref -> x20 single-def "field V10.array (fldOffset=0x0)" P-INDEP
+; V15 tmp9 [V15,T11] ( 2, 1 ) ref -> x15 "field V05.<Attribute>k__BackingField (fldOffset=0x0)" P-INDEP +; V16 tmp10 [V16,T13] ( 2, 1 ) short -> x1 "field V05.<Action>k__BackingField (fldOffset=0x8)" P-INDEP +; V17 tmp11 [V17,T12] ( 2, 1 ) ref -> x19 single-def "field V10.array (fldOffset=0x0)" P-INDEP
;* V18 tmp12 [V18 ] ( 0, 0 ) ref -> zero-ref "field V11.<Attribute>k__BackingField (fldOffset=0x0)" P-DEP ;* V19 tmp13 [V19 ] ( 0, 0 ) short -> zero-ref "field V11.<Action>k__BackingField (fldOffset=0x8)" P-DEP
-; V20 PSPSym [V20,T13] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[V] "PSPSym" -; V21 cse0 [V21,T03] ( 5, 2.50) ref -> x0 multi-def "CSE - aggressive" -; V22 cse1 [V22,T07] ( 4, 2 ) long -> x19 "CSE - aggressive"
+; V20 PSPSym [V20,T14] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[V] "PSPSym" +; V21 cse0 [V21,T09] ( 3, 1.50) ref -> x19 "CSE - moderate" +; V22 cse1 [V22,T03] ( 5, 2.50) ref -> x1 multi-def "CSE - aggressive" +; V23 cse2 [V23,T07] ( 4, 2 ) long -> x19 "CSE - aggressive"
; ; Lcl frame size = 24 @@ -57,14 +58,15 @@ G_M21908_IG03: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b G_M21908_IG04: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz movn w1, #0 str w1, [x0, #0x20]
- ldr x1, [x0, #0x08]
+ ldr x19, [x0, #0x08] + ; gcrRegs +[x19] + ldr x1, [x19, #0x08]
; gcrRegs +[x1]
- ldr x1, [x1, #0x08]
mov x2, x1 ; gcrRegs +[x2] cbz x2, G_M21908_IG11 ;; size=24 bbWeight=0.50 PerfScore 4.50
-G_M21908_IG05: ; bbWeight=0.25, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz
+G_M21908_IG05: ; bbWeight=0.25, gcrefRegs=80006 {x1 x2 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] ldr x3, [x2] movz x4, #0xD1FFAB1E @@ -73,7 +75,7 @@ G_M21908_IG05: ; bbWeight=0.25, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {} cmp x3, x4 beq G_M21908_IG07 ;; size=24 bbWeight=0.25 PerfScore 1.50
-G_M21908_IG06: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+G_M21908_IG06: ; bbWeight=0.12, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x2] mov x0, x4 bl CORINFO_HELP_CHKCASTCLASS_SPECIAL @@ -82,23 +84,17 @@ G_M21908_IG06: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, b mov x2, x0 ; gcrRegs +[x2] ;; size=12 bbWeight=0.12 PerfScore 0.25
-G_M21908_IG07: ; bbWeight=0.50, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref, isz
+G_M21908_IG07: ; bbWeight=0.50, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- ldr x19, [x2, #0x70] - ; gcrRegs +[x19] - cbz x19, G_M21908_IG11 - ldr x0, [fp, #0x18] // [V00 this] - ; gcrRegs +[x0] - ldr x1, [x0, #0x08] - ; gcrRegs +[x1] - ldr x20, [x1, #0x20]
+ ldr x20, [x2, #0x70]
; gcrRegs +[x20]
+ cbz x20, G_M21908_IG11 + ldr x19, [x19, #0x20]
movz x0, #0xD1FFAB1E
- ; gcrRegs -[x0]
movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 bl CORINFO_HELP_NEWSFAST
- ; gcrRegs -[x1-x2] +[x0]
+ ; gcrRegs -[x2] +[x0]
; gcr arg pop 0 mov x21, x0 ; gcrRegs +[x21] @@ -110,18 +106,18 @@ G_M21908_IG07: ; bbWeight=0.50, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, b str w0, [x21, #0x14] add x14, x21, #8 ; byrRegs +[x14]
- mov x15, x19 - ; gcrRegs +[x15] - bl CORINFO_HELP_ASSIGN_REF - ; gcrRegs -[x15 x19] - ; byrRegs -[x14] - add x14, x21, #56 - ; byrRegs +[x14]
mov x15, x20 ; gcrRegs +[x15] bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x15 x20] ; byrRegs -[x14]
+ add x14, x21, #56 + ; byrRegs +[x14] + mov x15, x19 + ; gcrRegs +[x15] + bl CORINFO_HELP_ASSIGN_REF + ; gcrRegs -[x15 x19] + ; byrRegs -[x14]
mov x0, x21 ; gcrRegs +[x0] movz x1, #0xD1FFAB1E // code for <unknown method> @@ -131,20 +127,20 @@ G_M21908_IG07: ; bbWeight=0.50, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, b blr x1 ; gcrRegs -[x21] ; gcr arg pop 0
- ldr x19, [fp, #0x18] // [V00 this] - ; gcrRegs +[x19] - add x14, x19, #24
+ ldr x1, [fp, #0x18] // [V00 this] + ; gcrRegs +[x1] + add x14, x1, #24
; byrRegs +[x14] mov x15, x0 ; gcrRegs +[x15] bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x0 x15] ; byrRegs -[x14]
- mov x0, x19
+ mov x0, x1
; gcrRegs +[x0]
- ;; size=124 bbWeight=0.50 PerfScore 16.50
+ ;; size=116 bbWeight=0.50 PerfScore 14.00
G_M21908_IG08: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x19]
+ ; gcrRegs -[x1]
movn w11, #2 str w11, [x0, #0x20] ldr x0, [x0, #0x18] @@ -157,50 +153,56 @@ G_M21908_IG08: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b ; gcrRegs -[x0] ; gcr arg pop 0 cbz w0, G_M21908_IG09
- ldr x20, [fp, #0x18] // [V00 this] - ; gcrRegs +[x20] - ldr x0, [x20, #0x18]
+ ldr x0, [fp, #0x18] // [V00 this]
; gcrRegs +[x0]
+ ldr x1, [x0, #0x18] + ; gcrRegs +[x1] + mov x0, x1
add x11, x19, #8 ldr x1, [x11]
+ ; gcrRegs -[x1]
blr x1 ; gcr arg pop 0 mov x15, x0 ; gcrRegs +[x15]
- add x14, x20, #40
+ ldr x0, [fp, #0x18] // [V00 this] + add x14, x0, #40
; byrRegs +[x14] bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x0 x15]
+ ; gcrRegs -[x15]
; byrRegs -[x14]
- strh w1, [x20, #0x30] - mov w0, #1 - str w0, [x20, #0x20] - mov w2, w0
+ strh w1, [x0, #0x30] + mov w11, #1 + str w11, [x0, #0x20] + sxtw w2, w11
b G_M21908_IG12
- ;; size=92 bbWeight=0.50 PerfScore 13.50
+ ;; size=100 bbWeight=0.50 PerfScore 14.75
G_M21908_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x20] - movn w0, #0 - ldr x20, [fp, #0x18] // [V00 this] - ; gcrRegs +[x20] - str w0, [x20, #0x20] - ldr x0, [x20, #0x18]
+ ; gcrRegs -[x0] + movn w11, #0 + ldr x0, [fp, #0x18] // [V00 this]
; gcrRegs +[x0]
- cbz x0, G_M21908_IG10
+ str w11, [x0, #0x20] + ldr x1, [x0, #0x18] + ; gcrRegs +[x1] + cbz x1, G_M21908_IG10 + mov x0, x1
add x11, x19, #16 ldr x1, [x11]
+ ; gcrRegs -[x1]
blr x1 ; gcrRegs -[x0] ; gcr arg pop 0
- ;; size=32 bbWeight=0.50 PerfScore 6.00 -G_M21908_IG10: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref - str xzr, [x20, #0x18] - ;; size=4 bbWeight=0.50 PerfScore 0.50
+ ;; size=36 bbWeight=0.50 PerfScore 6.25 +G_M21908_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ldr x0, [fp, #0x18] // [V00 this] + ; gcrRegs +[x0] + str xzr, [x0, #0x18] + ;; size=8 bbWeight=0.50 PerfScore 1.50
G_M21908_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x20] - mov w1, wzr - mov w2, w1 - ;; size=8 bbWeight=0.50 PerfScore 0.50
+ ; gcrRegs -[x0] + mov w2, wzr + ;; size=4 bbWeight=0.50 PerfScore 0.25
G_M21908_IG12: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; GC ptr vars -{V00} mov w0, w2 @@ -238,7 +240,7 @@ G_M21908_IG16: ; bbWeight=0, funclet epilog, nogc, extend ret lr ;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 448, prolog size 24, PerfScore 59.25, instruction count 112, allocated bytes for code 448 (MethodHash=1a3daa6b) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol+<GetSecurityAttributes>d__118:MoveNext():ubyte:this (FullOpts)
+; Total bytes of code 452, prolog size 24, PerfScore 59.00, instruction count 113, allocated bytes for code 452 (MethodHash=1a3daa6b) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol+<GetSecurityAttributes>d__118:MoveNext():ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -249,7 +251,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 97 (0x00061) Actual length = 388 (0x000184)
+ Function Length : 98 (0x00062) Actual length = 392 (0x000188)
---- Epilog scopes ---- ---- Scope 0 ...

+16 (+1.32%) : 29810.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)

@@ -11,16 +11,16 @@ ; V00 arg0 [V00,T07] ( 22, 23 ) ref -> x19 class-hnd single-def <System.Collections.Generic.List`1[System.String]> ; V01 loc0 [V01,T20] ( 7, 3.50) ref -> x20 class-hnd exact single-def <System.String> ; V02 loc1 [V02 ] ( 20, 54 ) struct (16) [fp-0x48] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Span`1[ushort]>
-; V03 loc2 [V03,T00] ( 39,149.08) int -> x22
+; V03 loc2 [V03,T00] ( 41,183.08) int -> x22
; V04 loc3 [V04,T23] ( 4, 2 ) int -> x0 ;* V05 loc4 [V05 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[ushort]>
-; V06 loc5 [V06,T06] ( 9, 25.50) int -> x21
+; V06 loc5 [V06,T06] ( 9, 25.50) int -> x23
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V08 tmp1 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V09 tmp2 [V09,T04] ( 5, 28 ) ref -> x22 class-hnd exact "impAppendStmt" <System.String>
+; V09 tmp2 [V09,T04] ( 5, 28 ) ref -> x21 class-hnd exact "impAppendStmt" <System.String>
; V10 tmp3 [V10,T26] ( 2, 2 ) long -> x1 "Inlining Arg" ; V11 tmp4 [V11,T25] ( 2, 2 ) ref -> x2 class-hnd exact single-def "Inlining Arg" <System.String>
-; V12 tmp5 [V12,T05] ( 5, 28 ) ref -> x23 class-hnd "Inlining Arg" <System.__Canon>
+; V12 tmp5 [V12,T05] ( 5, 28 ) ref -> x22 class-hnd "Inlining Arg" <System.__Canon>
; V13 tmp6 [V13,T15] ( 2, 4 ) ubyte -> x0 "Inline return value spill temp" ; V14 tmp7 [V14,T17] ( 2, 8 ) byref -> x0 "impAppendStmt" ; V15 tmp8 [V15,T27] ( 3, 1.50) ref -> x14 class-hnd single-def "Inline stloc first use temp" <<unknown class>> @@ -38,12 +38,12 @@ ; V27 cse0 [V27,T14] ( 3, 10 ) int -> x0 "CSE - aggressive" ; V28 cse1 [V28,T28] ( 3, 1.50) long -> x24 "CSE - moderate" ; V29 cse2 [V29,T31] ( 2, 1 ) int -> x12 "CSE - moderate"
-; V30 cse3 [V30,T01] ( 3, 48 ) long -> x1 "CSE - aggressive"
+; V30 cse3 [V30,T02] ( 3, 48 ) long -> x1 "CSE - aggressive"
; V31 cse4 [V31,T11] ( 3, 12 ) long -> x1 "CSE - aggressive" ; V32 cse5 [V32,T12] ( 3, 12 ) int -> x0 "CSE - aggressive" ; V33 cse6 [V33,T10] ( 3, 12 ) ref -> x1 "CSE - aggressive"
-; V34 cse7 [V34,T03] ( 15, 30.54) int -> x21 "CSE - aggressive" -; V35 cse8 [V35,T02] ( 10, 46 ) byref -> x23 hoist multi-def "CSE - aggressive"
+; V34 cse7 [V34,T01] ( 17, 64.54) int -> x21 "CSE - aggressive" +; V35 cse8 [V35,T03] ( 10, 46 ) byref -> x23 hoist multi-def "CSE - aggressive"
; V36 cse9 [V36,T16] ( 4, 8 ) int -> x24 "CSE - aggressive" ; V37 cse10 [V37,T18] ( 2, 8 ) int -> x3 "CSE - aggressive" ; V38 cse11 [V38,T13] ( 3, 11.88) int -> x0 "CSE - aggressive" @@ -71,19 +71,19 @@ G_M28069_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=56 bbWeight=1 PerfScore 10.50 G_M28069_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldr w0, [x19, #0x10]
- cbz w0, G_M28069_IG27
+ cbz w0, G_M28069_IG26
;; size=8 bbWeight=1 PerfScore 4.00 G_M28069_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldr x0, [x19, #0x08] ; gcrRegs +[x0] ldr w1, [x0, #0x08] cmp w1, #0
- bls G_M28069_IG29
+ bls G_M28069_IG28
ldr x20, [x0, #0x10] ; gcrRegs +[x20] ldr w21, [x20, #0x08] cmp w21, #100
- bgt G_M28069_IG27
+ bgt G_M28069_IG26
add w0, w21, #2 ; gcrRegs -[x0] mov w1, #2 @@ -110,105 +110,103 @@ G_M28069_IG05: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000 mov x1, sp ;; size=8 bbWeight=0.50 PerfScore 0.50 G_M28069_IG06: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- tbnz w0, #31, G_M28069_IG30
+ tbnz w0, #31, G_M28069_IG29
str x1, [fp, #-0x48] // [V17 tmp10] str w0, [fp, #-0x40] // [V18 tmp11] mov w22, wzr cmp w21, #0
- ble G_M28069_IG15
+ ble G_M28069_IG14
add x23, x20, #12 ; byrRegs +[x23] ;; size=28 bbWeight=0.50 PerfScore 2.75 G_M28069_IG07: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz ldrh w0, [x23, w22, UXTW #2] cmp w0, #39
- bne G_M28069_IG11
+ bne G_M28069_IG10
;; size=12 bbWeight=4 PerfScore 18.00 G_M28069_IG08: ; bbWeight=16, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz ldr w0, [fp, #-0x40] // [V18 tmp11] cmp w22, w0
- bhs G_M28069_IG29
+ bhs G_M28069_IG28
ldr x0, [fp, #-0x48] // [V17 tmp10] ; byrRegs +[x0] ubfiz x1, x22, #1, #32 add x0, x0, x1
+ cmp w22, w21 + bhs G_M28069_IG28
ldrh w1, [x23, x1] strh w1, [x0] add w22, w22, #1 cmp w21, w22
- ble G_M28069_IG09
+ ble G_M28069_IG26 + cmp w22, w21 + bhs G_M28069_IG28
ldrh w0, [x23, w22, UXTW #2] ; byrRegs -[x0] cmp w0, #39 bne G_M28069_IG08
- ;; size=56 bbWeight=16 PerfScore 280.00 -G_M28069_IG09: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz - cmp w21, w22 - bgt G_M28069_IG12 - ;; size=8 bbWeight=2 PerfScore 3.00 -G_M28069_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x19-x20] - ; byrRegs -[x23] - b G_M28069_IG27 - ;; size=4 bbWeight=0.50 PerfScore 0.50 -G_M28069_IG11: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz - ; gcrRegs +[x19-x20] - ; byrRegs +[x23]
+ ;; size=72 bbWeight=16 PerfScore 328.00 +G_M28069_IG09: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref + b G_M28069_IG11 + ;; size=4 bbWeight=4 PerfScore 4.00 +G_M28069_IG10: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
cmp w0, #121
- beq G_M28069_IG14
+ beq G_M28069_IG13
;; size=8 bbWeight=2 PerfScore 3.00
-G_M28069_IG12: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
+G_M28069_IG11: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
ldr w0, [fp, #-0x40] // [V18 tmp11] cmp w22, w0
- bhs G_M28069_IG29
+ bhs G_M28069_IG28
ldr x0, [fp, #-0x48] // [V17 tmp10] ; byrRegs +[x0] ubfiz x1, x22, #1, #32 add x0, x0, x1
+ cmp w22, w21 + bhs G_M28069_IG28
ldrh w1, [x23, x1] strh w1, [x0] add w22, w22, #1 cmp w21, w22 bgt G_M28069_IG07
- ;; size=44 bbWeight=4 PerfScore 52.00 -G_M28069_IG13: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+ ;; size=52 bbWeight=4 PerfScore 58.00 +G_M28069_IG12: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; byrRegs -[x0 x23]
- b G_M28069_IG15
+ b G_M28069_IG14
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M28069_IG14: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG13: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldr w0, [fp, #-0x40] // [V18 tmp11] cmp w22, w0
- bhs G_M28069_IG29
+ bhs G_M28069_IG28
ldr x0, [fp, #-0x48] // [V17 tmp10] ; byrRegs +[x0] mov w1, #121 strh w1, [x0, w22, UXTW #2] ;; size=24 bbWeight=0.50 PerfScore 3.50
-G_M28069_IG15: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG14: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x0] sub w0, w21, #1 cmp w0, w22
- ble G_M28069_IG27
+ ble G_M28069_IG26
add w0, w22, #1 cmp w0, w21
- bhs G_M28069_IG29
+ bhs G_M28069_IG28
add x23, x20, #12 ; byrRegs +[x23] add w0, w22, #1 ubfiz x24, x0, #1, #32 ldrh w0, [x23, x24] cmp w0, #121
- bne G_M28069_IG27
+ bne G_M28069_IG26
add w25, w22, #2 cmp w21, w25
- ble G_M28069_IG16
+ ble G_M28069_IG15
cmp w25, w21
- bhs G_M28069_IG29
+ bhs G_M28069_IG28
ldrh w0, [x23, w25, UXTW #2] cmp w0, #121
- beq G_M28069_IG27
+ beq G_M28069_IG26
;; size=80 bbWeight=0.50 PerfScore 9.25
-G_M28069_IG16: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
+G_M28069_IG15: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
add w0, w22, #3 ldr w1, [fp, #-0x40] // [V18 tmp11] cmp w0, w1 @@ -222,7 +220,7 @@ G_M28069_IG16: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800 add w0, w22, #1 ldr w1, [fp, #-0x40] // [V18 tmp11] cmp w0, w1
- bhs G_M28069_IG29
+ bhs G_M28069_IG28
ldr x0, [fp, #-0x48] // [V17 tmp10] ; byrRegs +[x0] mov w1, #121 @@ -230,7 +228,7 @@ G_M28069_IG16: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800 ldr w0, [fp, #-0x40] // [V18 tmp11] ; byrRegs -[x0] cmp w25, w0
- bhs G_M28069_IG29
+ bhs G_M28069_IG28
ldr x0, [fp, #-0x48] // [V17 tmp10] ; byrRegs +[x0] strh w1, [x0, w25, UXTW #2] @@ -238,7 +236,7 @@ G_M28069_IG16: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800 ; byrRegs -[x0] ldr w1, [fp, #-0x40] // [V18 tmp11] cmp w0, w1
- bhs G_M28069_IG29
+ bhs G_M28069_IG28
ldr x0, [fp, #-0x48] // [V17 tmp10] ; byrRegs +[x0] add w1, w22, #3 @@ -246,15 +244,15 @@ G_M28069_IG16: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=800 strh w2, [x0, w1, UXTW #2] sxtw w22, w25 cmp w21, w22
- ble G_M28069_IG20 - tbnz w22, #31, G_M28069_IG19
+ ble G_M28069_IG19 + tbnz w22, #31, G_M28069_IG18
;; size=132 bbWeight=0.50 PerfScore 17.00
-G_M28069_IG17: ; bbWeight=3.96, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
+G_M28069_IG16: ; bbWeight=3.96, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
; byrRegs -[x0] add w0, w22, #2 ldr w1, [fp, #-0x40] // [V18 tmp11] cmp w0, w1
- bhs G_M28069_IG29
+ bhs G_M28069_IG28
ldr x1, [fp, #-0x48] // [V17 tmp10] ; byrRegs +[x1] ubfiz x0, x0, #1, #32 @@ -265,32 +263,32 @@ G_M28069_IG17: ; bbWeight=3.96, gcrefRegs=180000 {x19 x20}, byrefRegs=800 strh w1, [x0] add w22, w22, #1 cmp w21, w22
- bgt G_M28069_IG17
...

+24 (+4.14%) : 18892.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:SetUpdatedSymbol(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)

@@ -12,7 +12,7 @@ ; V01 arg1 [V01,T04] ( 6, 4 ) ref -> x21 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundNode> ; V02 arg2 [V02,T02] ( 9, 5.50) ref -> x19 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbol> ; V03 arg3 [V03,T03] ( 8, 5 ) ref -> x20 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbol>
-; V04 loc0 [V04,T14] ( 2, 1 ) ubyte -> x0
+; V04 loc0 [V04,T14] ( 3, 1.50) ubyte -> x23
; V05 loc1 [V05,T15] ( 3, 1.25) ref -> x1 class-hnd exact <Microsoft.CodeAnalysis.CSharp.BoundLambda> ; V06 loc2 [V06,T16] ( 3, 1.25) ref -> x1 class-hnd exact <Microsoft.CodeAnalysis.CSharp.Symbols.LambdaSymbol> ; V07 loc3 [V07,T11] ( 3, 1.50) ref -> x1 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol> @@ -64,12 +64,13 @@ ; V53 tmp45 [V53,T27] ( 2, 1 ) int -> x1 "field V31._countAdjustment (fldOffset=0x8)" P-INDEP ; V54 tmp46 [V54,T10] ( 2, 2 ) ref -> x1 single-def "argument with side effect" ;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M21353_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]! - stp x19, x20, [sp, #0x10] - stp x21, x22, [sp, #0x20]
+ stp fp, lr, [sp, #-0x40]! + stp x19, x20, [sp, #0x18] + stp x21, x22, [sp, #0x28] + str x23, [sp, #0x38]
mov fp, sp mov x22, x0 ; gcrRegs +[x22] @@ -79,7 +80,7 @@ G_M21353_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[x19] mov x20, x3 ; gcrRegs +[x20]
- ;; size=32 bbWeight=1 PerfScore 5.50
+ ;; size=36 bbWeight=1 PerfScore 6.50
G_M21353_IG02: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz ldr x1, [x22, #0xD1FFAB1E] ; gcrRegs +[x1] @@ -87,17 +88,19 @@ G_M21353_IG02: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefReg ;; size=8 bbWeight=1 PerfScore 4.00 G_M21353_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; gcrRegs -[x1 x19-x22]
- ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x30
+ ldr x23, [sp, #0x38] + ldp x21, x22, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x40
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.00
+ ;; size=20 bbWeight=0.50 PerfScore 3.00
G_M21353_IG04: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs +[x19-x22]
+ mov w23, wzr
mov x1, x21 ; gcrRegs +[x1] cbz x1, G_M21353_IG09
- ;; size=8 bbWeight=0.50 PerfScore 0.75
+ ;; size=12 bbWeight=0.50 PerfScore 1.00
G_M21353_IG05: ; bbWeight=0.25, gcrefRegs=780002 {x1 x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz ldr x1, [x1] ; gcrRegs -[x1] @@ -105,7 +108,7 @@ G_M21353_IG05: ; bbWeight=0.25, gcrefRegs=780002 {x1 x19 x20 x21 x22}, by movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 cmp x1, x0
- bne G_M21353_IG09
+ bne G_M21353_IG10
;; size=24 bbWeight=0.25 PerfScore 1.50 G_M21353_IG06: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz mov x1, x19 @@ -119,7 +122,7 @@ G_M21353_IG07: ; bbWeight=0.25, gcrefRegs=780002 {x1 x19 x20 x21 x22}, by movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 cmp x1, x0
- bne G_M21353_IG09
+ bne G_M21353_IG10
;; size=24 bbWeight=0.25 PerfScore 1.50 G_M21353_IG08: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz mov x1, x20 @@ -131,7 +134,7 @@ G_M21353_IG08: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byref ; gcrRegs -[x1] +[x0] mov x1, x0 ; gcrRegs +[x1]
- cbz x1, G_M21353_IG09
+ cbz x1, G_M21353_IG10
mov x0, x19 movz x2, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.CSharp.NullableWalker:AreLambdaAndNewDelegateSimilar(Microsoft.CodeAnalysis.CSharp.Symbols.LambdaSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol):ubyte movk x2, #0xD1FFAB1E LSL #16 @@ -156,14 +159,17 @@ G_M21353_IG08: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byref ldr x3, [x3, #0x20] blr x3 ; gcrRegs -[x0-x1]
- cbnz w0, G_M21353_IG11 - ;; size=112 bbWeight=0.50 PerfScore 16.25
+ sxtw w23, w0 + ;; size=112 bbWeight=0.50 PerfScore 16.00
G_M21353_IG09: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
- cbnz x19, G_M21353_IG10 - cbnz x20, G_M21353_IG14 - b G_M21353_IG11 - ;; size=12 bbWeight=0.50 PerfScore 1.50
+ cbnz w23, G_M21353_IG12 + ;; size=4 bbWeight=0.50 PerfScore 0.50
G_M21353_IG10: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
+ cbnz x19, G_M21353_IG11 + cbnz x20, G_M21353_IG15 + b G_M21353_IG12 + ;; size=12 bbWeight=0.50 PerfScore 1.50 +G_M21353_IG11: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
mov x0, x19 ; gcrRegs +[x0] mov x1, x20 @@ -174,9 +180,9 @@ G_M21353_IG10: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byref ldr x3, [x3, #0x20] blr x3 ; gcrRegs -[x0-x1]
- cbz w0, G_M21353_IG14
+ cbz w0, G_M21353_IG15
;; size=32 bbWeight=0.50 PerfScore 6.25
-G_M21353_IG11: ; bbWeight=0.50, gcrefRegs=680000 {x19 x21 x22}, byrefRegs=0000 {}, byref, isz
+G_M21353_IG12: ; bbWeight=0.50, gcrefRegs=680000 {x19 x21 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x20] ldr x0, [x22, #0xD1FFAB1E] ; gcrRegs +[x0] @@ -211,7 +217,7 @@ G_M21353_IG11: ; bbWeight=0.50, gcrefRegs=680000 {x19 x21 x22}, byrefRegs ldr x14, [x22, #0x08] ; gcrRegs +[x14] cmp x14, x0
- beq G_M21353_IG12
+ beq G_M21353_IG13
add x14, x22, #8 ; gcrRegs -[x14] ; byrRegs +[x14] @@ -222,18 +228,19 @@ G_M21353_IG11: ; bbWeight=0.50, gcrefRegs=680000 {x19 x21 x22}, byrefRegs ; byrRegs -[x14] str xzr, [x22, #0x18] ;; size=120 bbWeight=0.50 PerfScore 18.25
-G_M21353_IG12: ; bbWeight=0.50, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
+G_M21353_IG13: ; bbWeight=0.50, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
ldr w0, [x22, #0x28] add w0, w0, w1 str w0, [x22, #0x28] ;; size=12 bbWeight=0.50 PerfScore 2.25
-G_M21353_IG13: ; bbWeight=0.50, epilog, nogc, extend - ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x30
+G_M21353_IG14: ; bbWeight=0.50, epilog, nogc, extend + ldr x23, [sp, #0x38] + ldp x21, x22, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x40
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.00 -G_M21353_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=20 bbWeight=0.50 PerfScore 3.00 +G_M21353_IG15: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x19-x21] ldr x0, [x22, #0xD1FFAB1E] ; gcrRegs +[x0] @@ -271,7 +278,7 @@ G_M21353_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=780 ldr x14, [x22, #0x08] ; gcrRegs +[x14] cmp x14, x0
- beq G_M21353_IG15
+ beq G_M21353_IG16
add x14, x22, #8 ; gcrRegs -[x14] ; byrRegs +[x14] @@ -282,19 +289,20 @@ G_M21353_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=780 ; byrRegs -[x14] str xzr, [x22, #0x18] ;; size=128 bbWeight=0.50 PerfScore 18.75
-G_M21353_IG15: ; bbWeight=0.50, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
+G_M21353_IG16: ; bbWeight=0.50, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
ldr w0, [x22, #0x28] add w0, w0, w1 str w0, [x22, #0x28] ;; size=12 bbWeight=0.50 PerfScore 2.25
-G_M21353_IG16: ; bbWeight=0.50, epilog, nogc, extend - ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x30
+G_M21353_IG17: ; bbWeight=0.50, epilog, nogc, extend + ldr x23, [sp, #0x38] + ldp x21, x22, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x40
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.00
+ ;; size=20 bbWeight=0.50 PerfScore 3.00
-; Total bytes of code 580, prolog size 16, PerfScore 85.50, instruction count 145, allocated bytes for code 580 (MethodHash=7b46ac96) for method Microsoft.CodeAnalysis.CSharp.NullableWalker:SetUpdatedSymbol(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)
+; Total bytes of code 604, prolog size 20, PerfScore 90.00, instruction count 151, allocated bytes for code 604 (MethodHash=7b46ac96) for method Microsoft.CodeAnalysis.CSharp.NullableWalker:SetUpdatedSymbol(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)
; ============================================================ Unwind Info: @@ -305,7 +313,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 145 (0x00091) Actual length = 580 (0x000244)
+ Function Length : 151 (0x00097) Actual length = 604 (0x00025c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -319,10 +327,9 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
+ D1 07 save_reg X#4 Z#7 (0x07); str x23, [sp, #56]
E6 save_next
- C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16] - 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]! - E4 end - E4 end
+ C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24] + 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
E4 end

smoke_tests.nativeaot.windows.arm64.checked.mch

-40 (-40.00%) : 12841.dasm - System.RuntimeFieldHandle:Equals(System.Object):ubyte:this (FullOpts)

@@ -7,84 +7,65 @@ ; fully interruptible ; Final local variable assignments ;
-; V00 this [V00,T02] ( 3, 2.50) byref -> x20 this single-def -; V01 arg1 [V01,T00] ( 5, 3.75) ref -> x19 class-hnd single-def <System.Object>
+; V00 this [V00,T02] ( 3, 2.50) byref -> x0 this single-def +; V01 arg1 [V01,T00] ( 4, 3.50) ref -> x1 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 4.50) ref -> x0 class-hnd exact "spilling QMark2" <System.RuntimeFieldHandle> -; V04 cse0 [V04,T04] ( 3, 1 ) long -> x1 "CSE - moderate" -; V05 cse1 [V05,T03] ( 4, 1.25) long -> x0 "CSE - moderate"
+; V03 tmp1 [V03,T01] ( 3, 4.50) ref -> x2 class-hnd exact "spilling QMark2" <System.RuntimeFieldHandle>
; ; Lcl frame size = 0
-G_M59238_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG - stp fp, lr, [sp, #-0x20]! - stp x19, x20, [sp, #0x10]
+G_M59238_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG + stp fp, lr, [sp, #-0x10]!
mov fp, sp
- mov x20, x0 - ; byrRegs +[x20] - mov x19, x1 - ; gcrRegs +[x19] - ;; size=20 bbWeight=1 PerfScore 3.50 -G_M59238_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz - mov x0, x19 - ; gcrRegs +[x0] - cbz x0, G_M59238_IG04
;; size=8 bbWeight=1 PerfScore 1.50
-G_M59238_IG03: ; bbWeight=0.25, gcrefRegs=80001 {x0 x19}, byrefRegs=100000 {x20}, byref, isz - ldr x1, [x0] - adrp x0, [HIGH RELOC #0xD1FFAB1E] // System.RuntimeFieldHandle - ; gcrRegs -[x0] - add x0, x0, [LOW RELOC #0xD1FFAB1E] - cmp x1, x0
+G_M59238_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0001 {x0}, byref, isz + ; gcrRegs +[x1] + ; byrRegs +[x0] + mov x2, x1 + ; gcrRegs +[x2] + cbz x2, G_M59238_IG04 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M59238_IG03: ; bbWeight=0.25, gcrefRegs=0006 {x1 x2}, byrefRegs=0001 {x0}, byref, isz + ldr x2, [x2] + ; gcrRegs -[x2] + adrp x3, [HIGH RELOC #0xD1FFAB1E] // System.RuntimeFieldHandle + add x3, x3, [LOW RELOC #0xD1FFAB1E] + cmp x2, x3
beq G_M59238_IG06 ;; size=20 bbWeight=0.25 PerfScore 1.38 G_M59238_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19] - ; byrRegs -[x20]
+ ; gcrRegs -[x1] + ; byrRegs -[x0]
mov w0, wzr ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M59238_IG05: ; bbWeight=0.50, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20
+ ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 1.50 -G_M59238_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, gcvars, byref, isz - ; gcrRegs +[x19] - ; byrRegs +[x20] - cmp x1, x0 - beq G_M59238_IG08 - ;; size=8 bbWeight=0.50 PerfScore 0.75 -G_M59238_IG07: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref - mov x1, x19
+ ;; size=8 bbWeight=0.50 PerfScore 1.00 +G_M59238_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0001 {x0}, gcvars, byref
; gcrRegs +[x1]
- bl CORINFO_HELP_UNBOX - ; gcrRegs -[x1] - ; gcr arg pop 0 - ;; size=8 bbWeight=0.25 PerfScore 0.38 -G_M59238_IG08: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref - ldr x1, [x19, #0x08] - mov x0, x20
; byrRegs +[x0]
- ;; size=8 bbWeight=0.50 PerfScore 1.75 -G_M59238_IG09: ; bbWeight=0.50, epilog, nogc, extend - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20
+ ldr x1, [x1, #0x08] + ; gcrRegs -[x1] + ;; size=4 bbWeight=0.50 PerfScore 1.50 +G_M59238_IG07: ; bbWeight=0.50, epilog, nogc, extend + ldp fp, lr, [sp], #0x10
b <unknown method> ; gcr arg pop 0
- ;; size=12 bbWeight=0.50 PerfScore 1.50
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 100, prolog size 20, PerfScore 12.50, instruction count 25, allocated bytes for code 100 (MethodHash=39311899) for method System.RuntimeFieldHandle:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 60, prolog size 8, PerfScore 8.12, instruction count 15, allocated bytes for code 60 (MethodHash=39311899) for method System.RuntimeFieldHandle:Equals(System.Object):ubyte:this (FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 1
Epilog Count : 2 E bit : 0 X bit : 0 Vers : 0
- Function Length : 25 (0x00019) Actual length = 100 (0x000064)
+ 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) @@ -95,10 +76,7 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16] - 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! - E4 end - E4 end
+ 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
E4 end E4 end

-40 (-40.00%) : 12845.dasm - System.RuntimeMethodHandle:Equals(System.Object):ubyte:this (FullOpts)

@@ -7,84 +7,65 @@ ; fully interruptible ; Final local variable assignments ;
-; V00 this [V00,T02] ( 3, 2.50) byref -> x20 this single-def -; V01 arg1 [V01,T00] ( 5, 3.75) ref -> x19 class-hnd single-def <System.Object>
+; V00 this [V00,T02] ( 3, 2.50) byref -> x0 this single-def +; V01 arg1 [V01,T00] ( 4, 3.50) ref -> x1 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 4.50) ref -> x0 class-hnd exact "spilling QMark2" <System.RuntimeMethodHandle> -; V04 cse0 [V04,T04] ( 3, 1 ) long -> x1 "CSE - moderate" -; V05 cse1 [V05,T03] ( 4, 1.25) long -> x0 "CSE - moderate"
+; V03 tmp1 [V03,T01] ( 3, 4.50) ref -> x2 class-hnd exact "spilling QMark2" <System.RuntimeMethodHandle>
; ; Lcl frame size = 0
-G_M56923_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG - stp fp, lr, [sp, #-0x20]! - stp x19, x20, [sp, #0x10]
+G_M56923_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG + stp fp, lr, [sp, #-0x10]!
mov fp, sp
- mov x20, x0 - ; byrRegs +[x20] - mov x19, x1 - ; gcrRegs +[x19] - ;; size=20 bbWeight=1 PerfScore 3.50 -G_M56923_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz - mov x0, x19 - ; gcrRegs +[x0] - cbz x0, G_M56923_IG04
;; size=8 bbWeight=1 PerfScore 1.50
-G_M56923_IG03: ; bbWeight=0.25, gcrefRegs=80001 {x0 x19}, byrefRegs=100000 {x20}, byref, isz - ldr x1, [x0] - adrp x0, [HIGH RELOC #0xD1FFAB1E] // System.RuntimeMethodHandle - ; gcrRegs -[x0] - add x0, x0, [LOW RELOC #0xD1FFAB1E] - cmp x1, x0
+G_M56923_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0001 {x0}, byref, isz + ; gcrRegs +[x1] + ; byrRegs +[x0] + mov x2, x1 + ; gcrRegs +[x2] + cbz x2, G_M56923_IG04 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M56923_IG03: ; bbWeight=0.25, gcrefRegs=0006 {x1 x2}, byrefRegs=0001 {x0}, byref, isz + ldr x2, [x2] + ; gcrRegs -[x2] + adrp x3, [HIGH RELOC #0xD1FFAB1E] // System.RuntimeMethodHandle + add x3, x3, [LOW RELOC #0xD1FFAB1E] + cmp x2, x3
beq G_M56923_IG06 ;; size=20 bbWeight=0.25 PerfScore 1.38 G_M56923_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19] - ; byrRegs -[x20]
+ ; gcrRegs -[x1] + ; byrRegs -[x0]
mov w0, wzr ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M56923_IG05: ; bbWeight=0.50, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20
+ ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 1.50 -G_M56923_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, gcvars, byref, isz - ; gcrRegs +[x19] - ; byrRegs +[x20] - cmp x1, x0 - beq G_M56923_IG08 - ;; size=8 bbWeight=0.50 PerfScore 0.75 -G_M56923_IG07: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref - mov x1, x19
+ ;; size=8 bbWeight=0.50 PerfScore 1.00 +G_M56923_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0001 {x0}, gcvars, byref
; gcrRegs +[x1]
- bl CORINFO_HELP_UNBOX - ; gcrRegs -[x1] - ; gcr arg pop 0 - ;; size=8 bbWeight=0.25 PerfScore 0.38 -G_M56923_IG08: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref - ldr x1, [x19, #0x08] - mov x0, x20
; byrRegs +[x0]
- ;; size=8 bbWeight=0.50 PerfScore 1.75 -G_M56923_IG09: ; bbWeight=0.50, epilog, nogc, extend - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20
+ ldr x1, [x1, #0x08] + ; gcrRegs -[x1] + ;; size=4 bbWeight=0.50 PerfScore 1.50 +G_M56923_IG07: ; bbWeight=0.50, epilog, nogc, extend + ldp fp, lr, [sp], #0x10
b <unknown method> ; gcr arg pop 0
- ;; size=12 bbWeight=0.50 PerfScore 1.50
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 100, prolog size 20, PerfScore 12.50, instruction count 25, allocated bytes for code 100 (MethodHash=792a21a4) for method System.RuntimeMethodHandle:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 60, prolog size 8, PerfScore 8.12, instruction count 15, allocated bytes for code 60 (MethodHash=792a21a4) for method System.RuntimeMethodHandle:Equals(System.Object):ubyte:this (FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 1
Epilog Count : 2 E bit : 0 X bit : 0 Vers : 0
- Function Length : 25 (0x00019) Actual length = 100 (0x000064)
+ 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) @@ -95,10 +76,7 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16] - 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! - E4 end - E4 end
+ 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
E4 end E4 end

-40 (-40.00%) : 7167.dasm - System.RuntimeMethodHandle:Equals(System.Object):ubyte:this (FullOpts)

@@ -8,84 +8,65 @@ ; control-flow guard enabled ; Final local variable assignments ;
-; V00 this [V00,T02] ( 3, 2.50) byref -> x20 this single-def -; V01 arg1 [V01,T00] ( 5, 3.75) ref -> x19 class-hnd single-def <System.Object>
+; V00 this [V00,T02] ( 3, 2.50) byref -> x0 this single-def +; V01 arg1 [V01,T00] ( 4, 3.50) ref -> x1 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 4.50) ref -> x0 class-hnd exact "spilling QMark2" <System.RuntimeMethodHandle> -; V04 cse0 [V04,T04] ( 3, 1 ) long -> x1 "CSE - moderate" -; V05 cse1 [V05,T03] ( 4, 1.25) long -> x0 "CSE - moderate"
+; V03 tmp1 [V03,T01] ( 3, 4.50) ref -> x2 class-hnd exact "spilling QMark2" <System.RuntimeMethodHandle>
; ; Lcl frame size = 0
-G_M56923_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG - stp fp, lr, [sp, #-0x20]! - stp x19, x20, [sp, #0x10]
+G_M56923_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG + stp fp, lr, [sp, #-0x10]!
mov fp, sp
- mov x20, x0 - ; byrRegs +[x20] - mov x19, x1 - ; gcrRegs +[x19] - ;; size=20 bbWeight=1 PerfScore 3.50 -G_M56923_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz - mov x0, x19 - ; gcrRegs +[x0] - cbz x0, G_M56923_IG04
;; size=8 bbWeight=1 PerfScore 1.50
-G_M56923_IG03: ; bbWeight=0.25, gcrefRegs=80001 {x0 x19}, byrefRegs=100000 {x20}, byref, isz - ldr x1, [x0] - adrp x0, [HIGH RELOC #0xD1FFAB1E] // System.RuntimeMethodHandle - ; gcrRegs -[x0] - add x0, x0, [LOW RELOC #0xD1FFAB1E] - cmp x1, x0
+G_M56923_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0001 {x0}, byref, isz + ; gcrRegs +[x1] + ; byrRegs +[x0] + mov x2, x1 + ; gcrRegs +[x2] + cbz x2, G_M56923_IG04 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M56923_IG03: ; bbWeight=0.25, gcrefRegs=0006 {x1 x2}, byrefRegs=0001 {x0}, byref, isz + ldr x2, [x2] + ; gcrRegs -[x2] + adrp x3, [HIGH RELOC #0xD1FFAB1E] // System.RuntimeMethodHandle + add x3, x3, [LOW RELOC #0xD1FFAB1E] + cmp x2, x3
beq G_M56923_IG06 ;; size=20 bbWeight=0.25 PerfScore 1.38 G_M56923_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19] - ; byrRegs -[x20]
+ ; gcrRegs -[x1] + ; byrRegs -[x0]
mov w0, wzr ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M56923_IG05: ; bbWeight=0.50, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20
+ ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 1.50 -G_M56923_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, gcvars, byref, isz - ; gcrRegs +[x19] - ; byrRegs +[x20] - cmp x1, x0 - beq G_M56923_IG08 - ;; size=8 bbWeight=0.50 PerfScore 0.75 -G_M56923_IG07: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref - mov x1, x19
+ ;; size=8 bbWeight=0.50 PerfScore 1.00 +G_M56923_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0001 {x0}, gcvars, byref
; gcrRegs +[x1]
- bl CORINFO_HELP_UNBOX - ; gcrRegs -[x1] - ; gcr arg pop 0 - ;; size=8 bbWeight=0.25 PerfScore 0.38 -G_M56923_IG08: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref - ldr x1, [x19, #0x08] - mov x0, x20
; byrRegs +[x0]
- ;; size=8 bbWeight=0.50 PerfScore 1.75 -G_M56923_IG09: ; bbWeight=0.50, epilog, nogc, extend - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20
+ ldr x1, [x1, #0x08] + ; gcrRegs -[x1] + ;; size=4 bbWeight=0.50 PerfScore 1.50 +G_M56923_IG07: ; bbWeight=0.50, epilog, nogc, extend + ldp fp, lr, [sp], #0x10
b <unknown method> ; gcr arg pop 0
- ;; size=12 bbWeight=0.50 PerfScore 1.50
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 100, prolog size 20, PerfScore 12.50, instruction count 25, allocated bytes for code 100 (MethodHash=792a21a4) for method System.RuntimeMethodHandle:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 60, prolog size 8, PerfScore 8.12, instruction count 15, allocated bytes for code 60 (MethodHash=792a21a4) for method System.RuntimeMethodHandle:Equals(System.Object):ubyte:this (FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 1
Epilog Count : 2 E bit : 0 X bit : 0 Vers : 0
- Function Length : 25 (0x00019) Actual length = 100 (0x000064)
+ 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) @@ -96,10 +77,7 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16] - 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! - E4 end - E4 end
+ 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
E4 end E4 end

+8 (+2.50%) : 4217.dasm - System.Enum+<>c__641[uint]:<FormatNumberAsHex>b__64_0(System.Span1[ushort],long):this (FullOpts)

@@ -10,32 +10,32 @@ ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd exact single-def <System.Enum+<>c__64`1[uint]> ;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Span`1[ushort]>
-; V02 arg2 [V02,T02] ( 3, 2.50) long -> x3 single-def
+; V02 arg2 [V02,T01] ( 3, 2.50) long -> x3 single-def
;* V03 loc0 [V03 ] ( 0, 0 ) ubyte -> zero-ref ;* V04 loc1 [V04,T17] ( 0, 0 ) int -> zero-ref ld-addr-op ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V06 tmp1 [V06,T18] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V07 tmp2 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ; V08 tmp3 [V08,T08] ( 5, 2.50) int -> x0 "Inline stloc first use temp"
-; V09 tmp4 [V09,T04] ( 3, 3 ) ubyte -> x2 "Inlining Arg"
+; V09 tmp4 [V09,T03] ( 3, 3 ) ubyte -> x2 "Inlining Arg"
; V10 tmp5 [V10,T09] ( 3, 1.50) int -> x2 "Inline stloc first use temp" ; V11 tmp6 [V11,T10] ( 3, 1.50) int -> x2 "Inline stloc first use temp" ;* V12 tmp7 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
-; V13 tmp8 [V13,T05] ( 3, 3 ) ubyte -> x2 "Inlining Arg"
+; V13 tmp8 [V13,T04] ( 3, 3 ) ubyte -> x2 "Inlining Arg"
; V14 tmp9 [V14,T11] ( 3, 1.50) int -> x2 "Inline stloc first use temp" ; V15 tmp10 [V15,T12] ( 3, 1.50) int -> x2 "Inline stloc first use temp" ;* V16 tmp11 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
-; V17 tmp12 [V17,T06] ( 3, 3 ) ubyte -> x2 "Inlining Arg"
+; V17 tmp12 [V17,T05] ( 3, 3 ) ubyte -> x2 "Inlining Arg"
; V18 tmp13 [V18,T13] ( 3, 1.50) int -> x2 "Inline stloc first use temp" ; V19 tmp14 [V19,T14] ( 3, 1.50) int -> x2 "Inline stloc first use temp" ;* V20 tmp15 [V20 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
-; V21 tmp16 [V21,T07] ( 3, 3 ) ubyte -> x0 "Inlining Arg"
+; V21 tmp16 [V21,T06] ( 3, 3 ) ubyte -> x0 "Inlining Arg"
; V22 tmp17 [V22,T15] ( 3, 1.50) int -> x0 "Inline stloc first use temp" ; V23 tmp18 [V23,T16] ( 3, 1.50) int -> x0 "Inline stloc first use temp" ;* V24 tmp19 [V24 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V25 tmp20 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V26 tmp21 [V26,T00] ( 9, 5 ) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V27 tmp22 [V27,T03] ( 2, 2 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V27 tmp22 [V27,T02] ( 2, 2 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
;* V28 tmp23 [V28 ] ( 0, 0 ) byref -> zero-ref single-def "field V07._reference (fldOffset=0x0)" P-INDEP ;* V29 tmp24 [V29 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP ;* V30 tmp25 [V30 ] ( 0, 0 ) byref -> zero-ref single-def "field V12._reference (fldOffset=0x0)" P-INDEP @@ -46,14 +46,15 @@ ;* V35 tmp30 [V35 ] ( 0, 0 ) int -> zero-ref "field V20._length (fldOffset=0x8)" P-INDEP ;* V36 tmp31 [V36 ] ( 0, 0 ) byref -> zero-ref single-def "field V24._reference (fldOffset=0x0)" P-INDEP ;* V37 tmp32 [V37 ] ( 0, 0 ) int -> zero-ref "field V24._length (fldOffset=0x8)" P-INDEP
-; V38 cse0 [V38,T01] ( 6, 6 ) ref -> x1 multi-def "CSE - aggressive"
+; V38 cse0 [V38,T07] ( 5, 2.50) ref -> x19 "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M28263_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x10]!
+ stp fp, lr, [sp, #-0x20]! + str x19, [sp, #0x18]
mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50
+ ;; size=12 bbWeight=1 PerfScore 2.50
G_M28263_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz ; byrRegs +[x1] cmp w2, #8 @@ -127,40 +128,42 @@ G_M28263_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, b strh w0, [x1, #0x0C] b G_M28263_IG05 ;; size=264 bbWeight=0.50 PerfScore 23.75
-G_M28263_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M28263_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x1]
- adrp x1, [HIGH RELOC #0xD1FFAB1E] - add x1, x1, [LOW RELOC #0xD1FFAB1E] - ; gcrRegs +[x1] - mov x0, x1
+ adrp x19, [HIGH RELOC #0xD1FFAB1E] + add x19, x19, [LOW RELOC #0xD1FFAB1E] + ; gcrRegs +[x19] + mov x0, x19
; gcrRegs +[x0]
+ mov x1, x19 + ; gcrRegs +[x1]
bl <unknown method> ; gcrRegs -[x0-x1]
- adrp x1, [HIGH RELOC #0xD1FFAB1E] - add x1, x1, [LOW RELOC #0xD1FFAB1E] - ; gcrRegs +[x1] - mov x0, x1
+ mov x0, x19
; gcrRegs +[x0]
+ mov x1, x19 + ; gcrRegs +[x1]
bl <unknown method>
- ; gcrRegs -[x0-x1] - ;; size=32 bbWeight=1 PerfScore 5.00
+ ; gcrRegs -[x0-x1 x19] + ;; size=32 bbWeight=0.50 PerfScore 2.50
G_M28263_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ldp fp, lr, [sp], #0x10
+ ldr x19, [sp, #0x18] + ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=1 PerfScore 2.00
+ ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 320, prolog size 8, PerfScore 33.75, instruction count 80, allocated bytes for code 320 (MethodHash=6ab79198) for method System.Enum+<>c__64`1[uint]:<FormatNumberAsHex>b__64_0(System.Span`1[ushort],long):this (FullOpts)
+; Total bytes of code 328, prolog size 12, PerfScore 34.25, instruction count 82, allocated bytes for code 328 (MethodHash=6ab79198) for method System.Enum+<>c__64`1[uint]:<FormatNumberAsHex>b__64_0(System.Span`1[ushort],long):this (FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 1
+ Code Words : 2
Epilog Count : 1 E bit : 0 X bit : 0 Vers : 0
- Function Length : 80 (0x00050) Actual length = 320 (0x000140)
+ Function Length : 82 (0x00052) Actual length = 328 (0x000148)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -168,7 +171,10 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
+ D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24] + 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! + E4 end + E4 end
E4 end E4 end

+8 (+2.50%) : 1000.dasm - System.Enum+<>c__641[uint]:<FormatNumberAsHex>b__64_0(System.Span1[ushort],long):this (FullOpts)

@@ -9,32 +9,32 @@ ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd exact single-def <System.Enum+<>c__64`1[uint]> ;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Span`1[ushort]>
-; V02 arg2 [V02,T02] ( 3, 2.50) long -> x3 single-def
+; V02 arg2 [V02,T01] ( 3, 2.50) long -> x3 single-def
;* V03 loc0 [V03 ] ( 0, 0 ) ubyte -> zero-ref ;* V04 loc1 [V04,T17] ( 0, 0 ) int -> zero-ref ld-addr-op ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V06 tmp1 [V06,T18] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V07 tmp2 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ; V08 tmp3 [V08,T08] ( 5, 2.50) int -> x0 "Inline stloc first use temp"
-; V09 tmp4 [V09,T04] ( 3, 3 ) ubyte -> x2 "Inlining Arg"
+; V09 tmp4 [V09,T03] ( 3, 3 ) ubyte -> x2 "Inlining Arg"
; V10 tmp5 [V10,T09] ( 3, 1.50) int -> x2 "Inline stloc first use temp" ; V11 tmp6 [V11,T10] ( 3, 1.50) int -> x2 "Inline stloc first use temp" ;* V12 tmp7 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
-; V13 tmp8 [V13,T05] ( 3, 3 ) ubyte -> x2 "Inlining Arg"
+; V13 tmp8 [V13,T04] ( 3, 3 ) ubyte -> x2 "Inlining Arg"
; V14 tmp9 [V14,T11] ( 3, 1.50) int -> x2 "Inline stloc first use temp" ; V15 tmp10 [V15,T12] ( 3, 1.50) int -> x2 "Inline stloc first use temp" ;* V16 tmp11 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
-; V17 tmp12 [V17,T06] ( 3, 3 ) ubyte -> x2 "Inlining Arg"
+; V17 tmp12 [V17,T05] ( 3, 3 ) ubyte -> x2 "Inlining Arg"
; V18 tmp13 [V18,T13] ( 3, 1.50) int -> x2 "Inline stloc first use temp" ; V19 tmp14 [V19,T14] ( 3, 1.50) int -> x2 "Inline stloc first use temp" ;* V20 tmp15 [V20 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
-; V21 tmp16 [V21,T07] ( 3, 3 ) ubyte -> x0 "Inlining Arg"
+; V21 tmp16 [V21,T06] ( 3, 3 ) ubyte -> x0 "Inlining Arg"
; V22 tmp17 [V22,T15] ( 3, 1.50) int -> x0 "Inline stloc first use temp" ; V23 tmp18 [V23,T16] ( 3, 1.50) int -> x0 "Inline stloc first use temp" ;* V24 tmp19 [V24 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V25 tmp20 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V26 tmp21 [V26,T00] ( 9, 5 ) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V27 tmp22 [V27,T03] ( 2, 2 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V27 tmp22 [V27,T02] ( 2, 2 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
;* V28 tmp23 [V28 ] ( 0, 0 ) byref -> zero-ref single-def "field V07._reference (fldOffset=0x0)" P-INDEP ;* V29 tmp24 [V29 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP ;* V30 tmp25 [V30 ] ( 0, 0 ) byref -> zero-ref single-def "field V12._reference (fldOffset=0x0)" P-INDEP @@ -45,14 +45,15 @@ ;* V35 tmp30 [V35 ] ( 0, 0 ) int -> zero-ref "field V20._length (fldOffset=0x8)" P-INDEP ;* V36 tmp31 [V36 ] ( 0, 0 ) byref -> zero-ref single-def "field V24._reference (fldOffset=0x0)" P-INDEP ;* V37 tmp32 [V37 ] ( 0, 0 ) int -> zero-ref "field V24._length (fldOffset=0x8)" P-INDEP
-; V38 cse0 [V38,T01] ( 6, 6 ) ref -> x1 multi-def "CSE - aggressive"
+; V38 cse0 [V38,T07] ( 5, 2.50) ref -> x19 "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M28263_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x10]!
+ stp fp, lr, [sp, #-0x20]! + str x19, [sp, #0x18]
mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50
+ ;; size=12 bbWeight=1 PerfScore 2.50
G_M28263_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz ; byrRegs +[x1] cmp w2, #8 @@ -126,40 +127,42 @@ G_M28263_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, b strh w0, [x1, #0x0C] b G_M28263_IG05 ;; size=264 bbWeight=0.50 PerfScore 23.75
-G_M28263_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M28263_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x1]
- adrp x1, [HIGH RELOC #0xD1FFAB1E] - add x1, x1, [LOW RELOC #0xD1FFAB1E] - ; gcrRegs +[x1] - mov x0, x1
+ adrp x19, [HIGH RELOC #0xD1FFAB1E] + add x19, x19, [LOW RELOC #0xD1FFAB1E] + ; gcrRegs +[x19] + mov x0, x19
; gcrRegs +[x0]
+ mov x1, x19 + ; gcrRegs +[x1]
bl <unknown method> ; gcrRegs -[x0-x1]
- adrp x1, [HIGH RELOC #0xD1FFAB1E] - add x1, x1, [LOW RELOC #0xD1FFAB1E] - ; gcrRegs +[x1] - mov x0, x1
+ mov x0, x19
; gcrRegs +[x0]
+ mov x1, x19 + ; gcrRegs +[x1]
bl <unknown method>
- ; gcrRegs -[x0-x1] - ;; size=32 bbWeight=1 PerfScore 5.00
+ ; gcrRegs -[x0-x1 x19] + ;; size=32 bbWeight=0.50 PerfScore 2.50
G_M28263_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ldp fp, lr, [sp], #0x10
+ ldr x19, [sp, #0x18] + ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=1 PerfScore 2.00
+ ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 320, prolog size 8, PerfScore 33.75, instruction count 80, allocated bytes for code 320 (MethodHash=6ab79198) for method System.Enum+<>c__64`1[uint]:<FormatNumberAsHex>b__64_0(System.Span`1[ushort],long):this (FullOpts)
+; Total bytes of code 328, prolog size 12, PerfScore 34.25, instruction count 82, allocated bytes for code 328 (MethodHash=6ab79198) for method System.Enum+<>c__64`1[uint]:<FormatNumberAsHex>b__64_0(System.Span`1[ushort],long):this (FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 1
+ Code Words : 2
Epilog Count : 1 E bit : 0 X bit : 0 Vers : 0
- Function Length : 80 (0x00050) Actual length = 320 (0x000140)
+ Function Length : 82 (0x00052) Actual length = 328 (0x000148)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -167,7 +170,10 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
+ D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24] + 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! + E4 end + E4 end
E4 end E4 end

+16 (+3.48%) : 22466.dasm - System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.Threading.Tasks.VoidTaskResult]:GetStateMachineBoxReflectionTest+TestCompilerGeneratedCode+d__7:System.Runtime.CompilerServices.IAsyncStateMachineBox (FullOpts)

@@ -8,33 +8,35 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T02] ( 4, 3 ) byref -> x20 single-def
-; V01 arg1 [V01,T01] ( 5, 4 ) byref -> x19 single-def
+; V01 arg1 [V01,T01] ( 4, 3.50) byref -> x19 single-def
; V02 loc0 [V02,T06] ( 5, 3 ) ref -> x21 class-hnd exact single-def <System.Threading.ExecutionContext>
-; V03 loc1 [V03,T04] ( 6, 3.75) ref -> x22 class-hnd exact <System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1+AsyncStateMachineBox`1[System.Threading.Tasks.VoidTaskResult,ReflectionTest+TestCompilerGeneratedCode+<ReflectionInLambdaAsync>d__7]>
+; V03 loc1 [V03,T04] ( 6, 3.75) ref -> x23 class-hnd exact <System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1+AsyncStateMachineBox`1[System.Threading.Tasks.VoidTaskResult,ReflectionTest+TestCompilerGeneratedCode+<ReflectionInLambdaAsync>d__7]>
; V04 loc2 [V04,T05] ( 7, 3.25) ref -> x22 class-hnd exact <<unknown class>> ;* V05 loc3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1+AsyncStateMachineBox`1[System.Threading.Tasks.VoidTaskResult,ReflectionTest+TestCompilerGeneratedCode+<ReflectionInLambdaAsync>d__7]> ;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T03] ( 2, 4 ) ref -> x22 single-def "CASTCLASS eval op1"
+; V07 tmp1 [V07,T03] ( 2, 4 ) ref -> x23 single-def "CASTCLASS eval op1"
;* V08 tmp2 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "spilling QMark2" <System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1+AsyncStateMachineBox`1[System.Threading.Tasks.VoidTaskResult,ReflectionTest+TestCompilerGeneratedCode+<ReflectionInLambdaAsync>d__7]>
-; V09 tmp3 [V09,T09] ( 2, 2 ) ref -> x22 single-def "CASTCLASS eval op1"
+; V09 tmp3 [V09,T10] ( 2, 2 ) ref -> x22 single-def "CASTCLASS eval op1"
;* V10 tmp4 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "spilling QMark2" <<unknown class>> ; V11 tmp5 [V11,T00] ( 6, 6 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1+AsyncStateMachineBox`1[System.Threading.Tasks.VoidTaskResult,ReflectionTest+TestCompilerGeneratedCode+<ReflectionInLambdaAsync>d__7]> ; V12 tmp6 [V12,T08] ( 3, 3 ) ref -> x0 class-hnd exact single-def "Single-def Box Helper" <ReflectionTest+TestCompilerGeneratedCode+<ReflectionInLambdaAsync>d__7> ;* V13 tmp7 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>>
-; V14 rat0 [V14,T07] ( 5, 3 ) long -> x19 "fgMakeTemp is creating a new local variable"
+; V14 cse0 [V14,T09] ( 3, 2.50) ref -> x22 "CSE - aggressive" +; V15 rat0 [V15,T07] ( 5, 3 ) long -> x19 "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M17847_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]! - stp x19, x20, [sp, #0x10] - stp x21, x22, [sp, #0x20]
+ stp fp, lr, [sp, #-0x40]! + stp x19, x20, [sp, #0x18] + stp x21, x22, [sp, #0x28] + str x23, [sp, #0x38]
mov fp, sp mov x20, x0 ; byrRegs +[x20] mov x19, x1 ; byrRegs +[x19]
- ;; size=24 bbWeight=1 PerfScore 4.50
+ ;; size=28 bbWeight=1 PerfScore 5.50
G_M17847_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz bl System.Threading.ExecutionContext:Capture():System.Threading.ExecutionContext ; gcrRegs +[x0] @@ -43,19 +45,22 @@ G_M17847_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20 ; gcrRegs +[x21] ldr x22, [x19] ; gcrRegs +[x22]
- cbz x22, G_M17847_IG07 - ;; size=16 bbWeight=1 PerfScore 5.50 -G_M17847_IG03: ; bbWeight=0.25, gcrefRegs=600000 {x21 x22}, byrefRegs=180000 {x19 x20}, byref, isz
+ mov x23, x22 + ; gcrRegs +[x23] + cbz x23, G_M17847_IG07 + ;; size=20 bbWeight=1 PerfScore 6.00 +G_M17847_IG03: ; bbWeight=0.25, gcrefRegs=E00000 {x21 x22 x23}, byrefRegs=180000 {x19 x20}, byref, isz
; gcrRegs -[x0]
- ldr x0, [x22]
+ ldr x0, [x23]
adrp x1, [HIGH RELOC #0xD1FFAB1E] // System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1+AsyncStateMachineBox`1[System.Threading.Tasks.VoidTaskResult,ReflectionTest+TestCompilerGeneratedCode+<ReflectionInLambdaAsync>d__7] add x1, x1, [LOW RELOC #0xD1FFAB1E] cmp x0, x1 bne G_M17847_IG07 ;; size=20 bbWeight=0.25 PerfScore 1.38
-G_M17847_IG04: ; bbWeight=0.50, gcrefRegs=600000 {x21 x22}, byrefRegs=0000 {}, byref, isz
+G_M17847_IG04: ; bbWeight=0.50, gcrefRegs=A00000 {x21 x23}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x22]
; byrRegs -[x19-x20]
- mov x0, x22
+ mov x0, x23
; gcrRegs +[x0] bl <unknown method> ; gcrRegs -[x0] @@ -66,7 +71,7 @@ G_M17847_IG04: ; bbWeight=0.50, gcrefRegs=600000 {x21 x22}, byrefRegs=000 ; byrRegs -[x0] cmp x0, x21 beq G_M17847_IG05
- mov x0, x22
+ mov x0, x23
bl <unknown method> ; gcrRegs -[x0] ; byrRegs +[x0] @@ -79,23 +84,22 @@ G_M17847_IG04: ; bbWeight=0.50, gcrefRegs=600000 {x21 x22}, byrefRegs=000 ; gcrRegs -[x15 x21] ; byrRegs -[x0 x14] ;; size=40 bbWeight=0.50 PerfScore 4.75
-G_M17847_IG05: ; bbWeight=0.50, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref - mov x0, x22
+G_M17847_IG05: ; bbWeight=0.50, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, byref + mov x0, x23
; gcrRegs +[x0] ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M17847_IG06: ; bbWeight=0.50, epilog, nogc, extend
- ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x30
+ ldr x23, [sp, #0x38] + ldp x21, x22, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x40
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.00 -G_M17847_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=200000 {x21}, byrefRegs=180000 {x19 x20}, gcvars, byref, isz - ; gcrRegs -[x0 x22] +[x21]
+ ;; size=20 bbWeight=0.50 PerfScore 3.00 +G_M17847_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=600000 {x21 x22}, byrefRegs=180000 {x19 x20}, gcvars, byref, isz + ; gcrRegs -[x0 x23] +[x21-x22]
; byrRegs +[x19-x20]
- ldr x22, [x19] - ; gcrRegs +[x22]
cbz x22, G_M17847_IG12
- ;; size=8 bbWeight=0.50 PerfScore 2.00
+ ;; size=4 bbWeight=0.50 PerfScore 0.50
G_M17847_IG08: ; bbWeight=0.25, gcrefRegs=600000 {x21 x22}, byrefRegs=180000 {x19 x20}, byref, isz ldr x0, [x22] adrp x1, [HIGH RELOC #0xD1FFAB1E] // <unknown class> @@ -149,11 +153,12 @@ G_M17847_IG10: ; bbWeight=0.50, gcrefRegs=600000 {x21 x22}, byrefRegs=000 ; gcrRegs +[x0] ;; size=24 bbWeight=0.50 PerfScore 2.00 G_M17847_IG11: ; bbWeight=0.50, epilog, nogc, extend
- ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x30
+ ldr x23, [sp, #0x38] + ldp x21, x22, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x40
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.00
+ ;; size=20 bbWeight=0.50 PerfScore 3.00
G_M17847_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=200000 {x21}, byrefRegs=180000 {x19 x20}, gcvars, byref, isz ; gcrRegs -[x0 x22] +[x21] ; byrRegs +[x19-x20] @@ -227,11 +232,12 @@ G_M17847_IG15: ; bbWeight=0.50, gcrefRegs=400000 {x22}, byrefRegs=0000 {} ; gcrRegs +[x0] ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M17847_IG16: ; bbWeight=0.50, epilog, nogc, extend
- ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x30
+ ldr x23, [sp, #0x38] + ldp x21, x22, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x40
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.00
+ ;; size=20 bbWeight=0.50 PerfScore 3.00
G_M17847_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs -[x0] bl CORINFO_HELP_READYTORUN_GCSTATIC_BASE @@ -257,7 +263,7 @@ G_M17847_IG18: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, b b G_M17847_IG13 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 460, prolog size 24, PerfScore 60.50, instruction count 115, allocated bytes for code 460 (MethodHash=d6bbba48) for method System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.Threading.Tasks.VoidTaskResult]:GetStateMachineBox[ReflectionTest+TestCompilerGeneratedCode+<ReflectionInLambdaAsync>d__7](byref,byref):System.Runtime.CompilerServices.IAsyncStateMachineBox (FullOpts)
+; Total bytes of code 476, prolog size 28, PerfScore 63.50, instruction count 119, allocated bytes for code 476 (MethodHash=d6bbba48) for method System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.Threading.Tasks.VoidTaskResult]:GetStateMachineBox[ReflectionTest+TestCompilerGeneratedCode+<ReflectionInLambdaAsync>d__7](byref,byref):System.Runtime.CompilerServices.IAsyncStateMachineBox (FullOpts)
; ============================================================ Unwind Info: @@ -268,7 +274,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 115 (0x00073) Actual length = 460 (0x0001cc)
+ Function Length : 119 (0x00077) Actual length = 476 (0x0001dc)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -282,10 +288,9 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
+ D1 07 save_reg X#4 Z#7 (0x07); str x23, [sp, #56]
E6 save_next
- C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16] - 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]! - E4 end - E4 end
+ C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24] + 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
E4 end

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.windows.arm64.checked.mch 92 58 6 28 -568 +52
benchmarks.run_pgo.windows.arm64.checked.mch 1,093 617 283 193 -8,320 +2,600
benchmarks.run_tiered.windows.arm64.checked.mch 32 22 2 8 -468 +20
coreclr_tests.run.windows.arm64.checked.mch 890 410 168 312 -5,560 +1,584
libraries.crossgen2.windows.arm64.checked.mch 344 147 35 162 -1,680 +356
libraries.pmi.windows.arm64.checked.mch 653 323 98 232 -4,124 +908
libraries_tests.run.windows.arm64.Release.mch 5,587 2,906 1,278 1,403 -65,504 +14,168
librariestestsnotieredcompilation.run.windows.arm64.Release.mch 1,432 539 144 749 -5,088 +1,280
realworld.run.windows.arm64.checked.mch 99 48 13 38 -664 +148
smoke_tests.nativeaot.windows.arm64.checked.mch 138 77 35 26 -1,908 +192
10,360 5,147 2,062 3,151 -93,884 +21,308

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.windows.arm64.checked.mch 24,443 4 24,439 0 (0.00%) 3 (0.01%)
benchmarks.run_pgo.windows.arm64.checked.mch 96,033 48,079 47,954 4 (0.00%) 88 (0.09%)
benchmarks.run_tiered.windows.arm64.checked.mch 49,357 36,713 12,644 1 (0.00%) 3 (0.01%)
coreclr_tests.run.windows.arm64.checked.mch 595,303 362,592 232,711 3 (0.00%) 101 (0.02%)
libraries.crossgen2.windows.arm64.checked.mch 244,152 15 244,137 0 (0.00%) 0 (0.00%)
libraries.pmi.windows.arm64.checked.mch 305,568 6 305,562 0 (0.00%) 10 (0.00%)
libraries_tests.run.windows.arm64.Release.mch 650,865 469,431 181,434 0 (0.00%) 741 (0.11%)
librariestestsnotieredcompilation.run.windows.arm64.Release.mch 317,067 21,598 295,469 0 (0.00%) 10 (0.00%)
realworld.run.windows.arm64.checked.mch 33,208 3 33,205 0 (0.00%) 3 (0.01%)
smoke_tests.nativeaot.windows.arm64.checked.mch 24,162 8 24,154 0 (0.00%) 0 (0.00%)
2,340,158 938,449 1,401,709 8 (0.00%) 959 (0.04%)

jit-analyze output

benchmarks.run.windows.arm64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 10957840 (overridden on cmd)
Total bytes of diff: 10957324 (overridden on cmd)
Total bytes of delta: -516 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          20 : 18343.dasm (0.28 % of base)
          16 : 4099.dasm (1.32 % of base)
           4 : 1773.dasm (0.63 % of base)
           4 : 15942.dasm (1.11 % of base)
           4 : 19535.dasm (0.89 % of base)
           4 : 6388.dasm (1.22 % of base)

Top file improvements (bytes):
         -52 : 10397.dasm (-40.62 % of base)
         -48 : 16412.dasm (-7.64 % of base)
         -36 : 7035.dasm (-21.95 % of base)
         -28 : 24445.dasm (-6.36 % of base)
         -20 : 21058.dasm (-7.04 % of base)
         -20 : 11751.dasm (-6.33 % of base)
         -16 : 670.dasm (-5.41 % of base)
         -16 : 15479.dasm (-4.49 % of base)
         -16 : 18066.dasm (-0.69 % of base)
         -16 : 6023.dasm (-0.35 % of base)
         -16 : 8968.dasm (-0.12 % of base)
         -12 : 1790.dasm (-0.21 % of base)
         -12 : 18044.dasm (-0.36 % of base)
         -12 : 21009.dasm (-1.58 % of base)
         -12 : 8743.dasm (-0.36 % of base)
         -12 : 3496.dasm (-4.35 % of base)
         -12 : 418.dasm (-3.90 % of base)
         -12 : 4979.dasm (-0.78 % of base)
          -8 : 10557.dasm (-1.08 % of base)
          -8 : 22224.dasm (-1.64 % of base)

35 total files with Code Size differences (29 improved, 6 regressed), 25 unchanged.

Top method regressions (bytes):
          20 (0.28 % of base) : 18343.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodSymbol:CheckModifiers(ubyte,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
          16 (1.32 % of base) : 4099.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
           4 (0.89 % of base) : 19535.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol+<GetSecurityAttributes>d__118:MoveNext():ubyte:this (FullOpts)
           4 (1.22 % of base) : 6388.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)
           4 (0.63 % of base) : 1773.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
           4 (1.11 % of base) : 15942.dasm - System.Enum+<>c__63`1[uint]:<FormatNumberAsHex>b__63_0(System.Span`1[ushort],long):this (FullOpts)

Top method improvements (bytes):
         -52 (-40.62 % of base) : 10397.dasm - System.Int32:Equals(System.Object):ubyte:this (FullOpts)
         -48 (-7.64 % of base) : 16412.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (FullOpts)
         -36 (-21.95 % of base) : 7035.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
         -28 (-6.36 % of base) : 24445.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (FullOpts)
         -20 (-7.04 % of base) : 21058.dasm - Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (FullOpts)
         -20 (-6.33 % of base) : 11751.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (FullOpts)
         -16 (-0.12 % of base) : 8968.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.CollectionsOfPrimitives,int) (FullOpts)
         -16 (-0.69 % of base) : 18066.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetSpecialType(byte):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (FullOpts)
         -16 (-5.41 % of base) : 670.dasm - System.Number:RoundNumber(byref,int,ubyte) (FullOpts)
         -16 (-4.49 % of base) : 15479.dasm - System.Xml.XmlElement:WriteElementTo(System.Xml.XmlWriter,System.Xml.XmlElement) (FullOpts)
         -16 (-0.35 % of base) : 6023.dasm - Utf8Json.Internal.Emit.MetaType:.ctor(System.Type,System.Func`2[System.String,System.String],ubyte):this (FullOpts)
         -12 (-1.58 % of base) : 21009.dasm - Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass:LeaveParameter(Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.Location):this (FullOpts)
         -12 (-0.36 % of base) : 18044.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
         -12 (-0.36 % of base) : 8743.dasm - Sigil.Impl.VerifiableTracker:CollapseAndVerify():Sigil.Impl.VerificationResult:this (FullOpts)
         -12 (-0.21 % of base) : 1790.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
         -12 (-3.90 % of base) : 418.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
         -12 (-4.35 % of base) : 3496.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
         -12 (-0.78 % of base) : 4979.dasm - System.UriHelper:UnescapeString(ulong,int,int,byref,ushort,ushort,ushort,int,System.UriParser,ubyte) (FullOpts)
          -8 (-1.75 % of base) : 8769.dasm - Sigil.Impl.LinqStack`1[System.__Canon]:Peek(ubyte,int):Sigil.Impl.LinqList`1[Sigil.Impl.TypeOnStack][]:this (FullOpts)
          -8 (-3.23 % of base) : 4083.dasm - System.Globalization.CultureData:GetSeparator(System.String,System.String):System.String (FullOpts)

Top method regressions (percentages):
          16 (1.32 % of base) : 4099.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
           4 (1.22 % of base) : 6388.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)
           4 (1.11 % of base) : 15942.dasm - System.Enum+<>c__63`1[uint]:<FormatNumberAsHex>b__63_0(System.Span`1[ushort],long):this (FullOpts)
           4 (0.89 % of base) : 19535.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol+<GetSecurityAttributes>d__118:MoveNext():ubyte:this (FullOpts)
           4 (0.63 % of base) : 1773.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
          20 (0.28 % of base) : 18343.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodSymbol:CheckModifiers(ubyte,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)

Top method improvements (percentages):
         -52 (-40.62 % of base) : 10397.dasm - System.Int32:Equals(System.Object):ubyte:this (FullOpts)
         -36 (-21.95 % of base) : 7035.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
         -48 (-7.64 % of base) : 16412.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (FullOpts)
         -20 (-7.04 % of base) : 21058.dasm - Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (FullOpts)
         -28 (-6.36 % of base) : 24445.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (FullOpts)
         -20 (-6.33 % of base) : 11751.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (FullOpts)
         -16 (-5.41 % of base) : 670.dasm - System.Number:RoundNumber(byref,int,ubyte) (FullOpts)
         -16 (-4.49 % of base) : 15479.dasm - System.Xml.XmlElement:WriteElementTo(System.Xml.XmlWriter,System.Xml.XmlElement) (FullOpts)
         -12 (-4.35 % of base) : 3496.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
         -12 (-3.90 % of base) : 418.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
          -4 (-3.85 % of base) : 10698.dasm - System.Buffers.ReadOnlySequence`1[ubyte]:SeekMultiSegment(System.Buffers.ReadOnlySequenceSegment`1[ubyte],System.Object,int,long,int):System.SequencePosition (FullOpts)
          -8 (-3.23 % of base) : 4083.dasm - System.Globalization.CultureData:GetSeparator(System.String,System.String):System.String (FullOpts)
          -4 (-2.86 % of base) : 18555.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetSymbol[System.__Canon](Microsoft.CodeAnalysis.ISymbol):System.__Canon (FullOpts)
          -8 (-2.41 % of base) : 5723.dasm - System.Xml.Serialization.CodeGenerator:StoreMember(System.Reflection.MemberInfo):this (FullOpts)
          -8 (-1.75 % of base) : 8769.dasm - Sigil.Impl.LinqStack`1[System.__Canon]:Peek(ubyte,int):Sigil.Impl.LinqList`1[Sigil.Impl.TypeOnStack][]:this (FullOpts)
          -4 (-1.64 % of base) : 10434.dasm - System.Text.Json.Tests.Perf_Reader:ReadMultiSpanSequenceEmptyLoop():this (FullOpts)
          -4 (-1.64 % of base) : 3462.dasm - System.Text.Json.Tests.Perf_Reader:ReadSingleSpanSequenceEmptyLoop():this (FullOpts)
          -4 (-1.64 % of base) : 23359.dasm - System.Text.Json.Tests.Perf_Segment:ReadSingleSegmentSequence():this (FullOpts)
          -8 (-1.64 % of base) : 22224.dasm - System.Xml.Linq.XContainer+<GetDescendants>d__38:MoveNext():ubyte:this (FullOpts)
         -12 (-1.58 % of base) : 21009.dasm - Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass:LeaveParameter(Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.Location):this (FullOpts)


benchmarks.run_pgo.windows.arm64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 45445732 (overridden on cmd)
Total bytes of diff: 45440012 (overridden on cmd)
Total bytes of delta: -5720 (-0.01 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          56 : 71741.dasm (1.27 % of base)
          44 : 20667.dasm (3.89 % of base)
          44 : 22938.dasm (1.02 % of base)
          44 : 74031.dasm (3.96 % of base)
          44 : 24565.dasm (3.89 % of base)
          44 : 31724.dasm (1.02 % of base)
          44 : 65244.dasm (3.89 % of base)
          36 : 32416.dasm (8.11 % of base)
          36 : 43611.dasm (0.82 % of base)
          32 : 688.dasm (2.51 % of base)
          32 : 28388.dasm (0.72 % of base)
          32 : 63660.dasm (0.33 % of base)
          28 : 74300.dasm (2.98 % of base)
          28 : 80646.dasm (2.98 % of base)
          28 : 89448.dasm (2.98 % of base)
          28 : 90302.dasm (2.97 % of base)
          28 : 73091.dasm (2.26 % of base)
          28 : 84907.dasm (2.97 % of base)
          28 : 32415.dasm (1.19 % of base)
          28 : 87144.dasm (2.98 % of base)

Top file improvements (bytes):
         -84 : 64302.dasm (-4.15 % of base)
         -52 : 29722.dasm (-1.19 % of base)
         -52 : 75727.dasm (-1.18 % of base)
         -44 : 80977.dasm (-1.26 % of base)
         -44 : 65438.dasm (-1.26 % of base)
         -44 : 83566.dasm (-1.26 % of base)
         -44 : 89229.dasm (-1.26 % of base)
         -44 : 91830.dasm (-1.26 % of base)
         -40 : 33902.dasm (-34.48 % of base)
         -40 : 65881.dasm (-0.92 % of base)
         -40 : 46127.dasm (-0.92 % of base)
         -40 : 32336.dasm (-34.48 % of base)
         -36 : 50157.dasm (-32.14 % of base)
         -36 : 50312.dasm (-0.83 % of base)
         -36 : 65587.dasm (-0.91 % of base)
         -36 : 76615.dasm (-32.14 % of base)
         -36 : 83872.dasm (-32.14 % of base)
         -36 : 84779.dasm (-1.54 % of base)
         -36 : 90407.dasm (-0.91 % of base)
         -32 : 14841.dasm (-0.84 % of base)

63 total files with Code Size differences (34 improved, 29 regressed), 20 unchanged.

Top method regressions (bytes):
          56 (1.27 % of base) : 71741.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
          44 (1.02 % of base) : 22938.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
          44 (1.02 % of base) : 31724.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
          44 (3.89 % of base) : 20667.dasm - System.Threading.PortableThreadPool+WorkerThread:WorkerThreadStart() (Tier1-OSR)
          44 (3.96 % of base) : 74031.dasm - System.Threading.PortableThreadPool+WorkerThread:WorkerThreadStart() (Tier1-OSR)
          44 (3.89 % of base) : 24565.dasm - System.Threading.PortableThreadPool+WorkerThread:WorkerThreadStart() (Tier1-OSR)
          44 (3.89 % of base) : 65244.dasm - System.Threading.PortableThreadPool+WorkerThread:WorkerThreadStart() (Tier1-OSR)
          36 (8.11 % of base) : 32416.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:TryMatch(byref,int,byref,uint,byref):ubyte:this (Tier1)
          36 (0.82 % of base) : 43611.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
          32 (0.33 % of base) : 63660.dasm - Microsoft.CodeAnalysis.CSharp.MethodCompiler:CompileMethod(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,int,byref,Microsoft.CodeAnalysis.CSharp.SynthesizedSubmissionFields,Microsoft.CodeAnalysis.CSharp.TypeCompilationState):this (Tier1)
          32 (2.51 % of base) : 688.dasm - System.IO.StreamReader:ReadLine():System.String:this (Tier0-FullOpts)
          32 (0.72 % of base) : 28388.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
          28 (1.19 % of base) : 32415.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:IndexOf(byref,int):int:this (Tier1)
          28 (2.98 % of base) : 74300.dasm - System.Threading.PortableThreadPool+WorkerThread:WorkerThreadStart() (Tier1-OSR)
          28 (2.98 % of base) : 80646.dasm - System.Threading.PortableThreadPool+WorkerThread:WorkerThreadStart() (Tier1-OSR)
          28 (2.98 % of base) : 89448.dasm - System.Threading.PortableThreadPool+WorkerThread:WorkerThreadStart() (Tier1-OSR)
          28 (2.97 % of base) : 90302.dasm - System.Threading.PortableThreadPool+WorkerThread:WorkerThreadStart() (Tier1-OSR)
          28 (2.97 % of base) : 84907.dasm - System.Threading.PortableThreadPool+WorkerThread:WorkerThreadStart() (Tier1-OSR)
          28 (2.98 % of base) : 87144.dasm - System.Threading.PortableThreadPool+WorkerThread:WorkerThreadStart() (Tier1-OSR)
          28 (2.98 % of base) : 92839.dasm - System.Threading.PortableThreadPool+WorkerThread:WorkerThreadStart() (Tier1-OSR)

Top method improvements (bytes):
         -84 (-4.15 % of base) : 64302.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this (Tier1)
         -52 (-1.19 % of base) : 29722.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
         -52 (-1.18 % of base) : 75727.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
         -44 (-1.26 % of base) : 80977.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateFields(System.RuntimeType+RuntimeTypeCache+Filter):System.Reflection.RuntimeFieldInfo[]:this (Tier1)
         -44 (-1.26 % of base) : 65438.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateFields(System.RuntimeType+RuntimeTypeCache+Filter):System.Reflection.RuntimeFieldInfo[]:this (Tier1)
         -44 (-1.26 % of base) : 83566.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateFields(System.RuntimeType+RuntimeTypeCache+Filter):System.Reflection.RuntimeFieldInfo[]:this (Tier1)
         -44 (-1.26 % of base) : 89229.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateFields(System.RuntimeType+RuntimeTypeCache+Filter):System.Reflection.RuntimeFieldInfo[]:this (Tier1)
         -44 (-1.26 % of base) : 91830.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateFields(System.RuntimeType+RuntimeTypeCache+Filter):System.Reflection.RuntimeFieldInfo[]:this (Tier1)
         -40 (-34.48 % of base) : 33902.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -40 (-34.48 % of base) : 32336.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -40 (-0.92 % of base) : 65881.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
         -40 (-0.92 % of base) : 46127.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
         -36 (-1.54 % of base) : 84779.dasm - System.Numerics.BigInteger:Subtract(System.ReadOnlySpan`1[uint],int,System.ReadOnlySpan`1[uint],int):System.Numerics.BigInteger (Tier1)
         -36 (-32.14 % of base) : 50157.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -36 (-32.14 % of base) : 76615.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -36 (-32.14 % of base) : 83872.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -36 (-0.83 % of base) : 50312.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
         -36 (-0.91 % of base) : 65587.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
         -36 (-0.91 % of base) : 90407.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
         -32 (-20.51 % of base) : 84780.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)

Top method regressions (percentages):
          20 (8.20 % of base) : 64265.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)
          36 (8.11 % of base) : 32416.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:TryMatch(byref,int,byref,uint,byref):ubyte:this (Tier1)
          16 (6.56 % of base) : 60155.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyDelaySignAttributeSetting():ubyte:this (Tier1)
          24 (4.88 % of base) : 49212.dasm - System.Text.Ascii:ChangeCase[ushort,ushort,System.Text.Ascii+ToUpperConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):int (Tier1)
          24 (4.88 % of base) : 11981.dasm - System.Text.Ascii:ChangeCase[ushort,ushort,System.Text.Ascii+ToUpperConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):int (Tier1)
          16 (4.60 % of base) : 63350.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_IsDelaySigned():ubyte:this (Tier1)
          44 (3.96 % of base) : 74031.dasm - System.Threading.PortableThreadPool+WorkerThread:WorkerThreadStart() (Tier1-OSR)
          44 (3.89 % of base) : 20667.dasm - System.Threading.PortableThreadPool+WorkerThread:WorkerThreadStart() (Tier1-OSR)
          44 (3.89 % of base) : 24565.dasm - System.Threading.PortableThreadPool+WorkerThread:WorkerThreadStart() (Tier1-OSR)
          44 (3.89 % of base) : 65244.dasm - System.Threading.PortableThreadPool+WorkerThread:WorkerThreadStart() (Tier1-OSR)
          12 (3.26 % of base) : 70503.dasm - System.Net.Security.SslStream:HaveFullTlsFrame(byref):ubyte:this (Tier1)
          20 (3.16 % of base) : 86903.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          20 (3.07 % of base) : 40324.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          28 (2.98 % of base) : 74300.dasm - System.Threading.PortableThreadPool+WorkerThread:WorkerThreadStart() (Tier1-OSR)
          28 (2.98 % of base) : 80646.dasm - System.Threading.PortableThreadPool+WorkerThread:WorkerThreadStart() (Tier1-OSR)
          28 (2.98 % of base) : 89448.dasm - System.Threading.PortableThreadPool+WorkerThread:WorkerThreadStart() (Tier1-OSR)
          28 (2.98 % of base) : 87144.dasm - System.Threading.PortableThreadPool+WorkerThread:WorkerThreadStart() (Tier1-OSR)
          28 (2.98 % of base) : 92839.dasm - System.Threading.PortableThreadPool+WorkerThread:WorkerThreadStart() (Tier1-OSR)
          28 (2.97 % of base) : 90302.dasm - System.Threading.PortableThreadPool+WorkerThread:WorkerThreadStart() (Tier1-OSR)
          28 (2.97 % of base) : 84907.dasm - System.Threading.PortableThreadPool+WorkerThread:WorkerThreadStart() (Tier1-OSR)

Top method improvements (percentages):
         -40 (-34.48 % of base) : 33902.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -40 (-34.48 % of base) : 32336.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -36 (-32.14 % of base) : 50157.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -36 (-32.14 % of base) : 76615.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -36 (-32.14 % of base) : 83872.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -32 (-20.51 % of base) : 84780.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
         -20 (-6.94 % of base) : 35941.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)
         -20 (-6.94 % of base) : 35948.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)
         -16 (-6.78 % of base) : 63156.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:get_IsScriptConstructor():ubyte:this (Tier1)
         -20 (-6.33 % of base) : 35947.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1)
         -12 (-6.00 % of base) : 84741.dasm - System.Numerics.BigInteger:op_Multiply(System.Numerics.BigInteger,System.Numerics.BigInteger):System.Numerics.BigInteger (Tier1)
         -28 (-5.88 % of base) : 95179.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (Tier1)
         -24 (-5.41 % of base) : 95172.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (Tier1-OSR)
         -24 (-5.41 % of base) : 95178.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (Tier1-OSR)
         -20 (-5.10 % of base) : 73260.dasm - System.Threading.PortableThreadPool:NotifyWorkItemProgress(System.Object,int):this (Tier1)
         -20 (-4.95 % of base) : 84866.dasm - System.Threading.PortableThreadPool:NotifyWorkItemProgress(System.Object,int):this (Tier1)
         -24 (-4.88 % of base) : 73259.dasm - System.Threading.ThreadPool:NotifyWorkItemComplete(System.Object,int):ubyte (Tier1)
         -24 (-4.76 % of base) : 84865.dasm - System.Threading.ThreadPool:NotifyWorkItemComplete(System.Object,int):ubyte (Tier1)
         -84 (-4.15 % of base) : 64302.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this (Tier1)
         -12 (-4.05 % of base) : 93333.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier1)


benchmarks.run_tiered.windows.arm64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 15585968 (overridden on cmd)
Total bytes of diff: 15585520 (overridden on cmd)
Total bytes of delta: -448 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          16 : 6673.dasm (1.39 % of base)
           4 : 19751.dasm (0.60 % of base)

Top file improvements (bytes):
        -200 : 44192.dasm (-7.46 % of base)
         -36 : 46977.dasm (-21.95 % of base)
         -36 : 5355.dasm (-32.14 % of base)
         -24 : 48999.dasm (-5.83 % of base)
         -20 : 27419.dasm (-6.94 % of base)
         -16 : 39218.dasm (-0.69 % of base)
         -16 : 19640.dasm (-0.12 % of base)
         -16 : 5483.dasm (-5.41 % of base)
         -12 : 42380.dasm (-1.58 % of base)
         -12 : 45460.dasm (-0.37 % of base)
         -12 : 5143.dasm (-3.90 % of base)
         -12 : 9776.dasm (-4.35 % of base)
         -12 : 2643.dasm (-0.22 % of base)
          -8 : 29335.dasm (-3.23 % of base)
          -8 : 45472.dasm (-1.75 % of base)
          -4 : 31795.dasm (-2.70 % of base)
          -4 : 39118.dasm (-0.81 % of base)
          -4 : 40159.dasm (-0.34 % of base)
          -4 : 47978.dasm (-2.70 % of base)
          -4 : 24845.dasm (-0.71 % of base)

24 total files with Code Size differences (22 improved, 2 regressed), 8 unchanged.

Top method regressions (bytes):
          16 (1.39 % of base) : 6673.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (Tier0-FullOpts)
           4 (0.60 % of base) : 19751.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)

Top method improvements (bytes):
        -200 (-7.46 % of base) : 44192.dasm - System.Text.Json.Tests.Perf_Segment:ReadMultiSegmentSequenceUsingSpan(int):this (Tier1-OSR)
         -36 (-21.95 % of base) : 46977.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
         -36 (-32.14 % of base) : 5355.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -24 (-5.83 % of base) : 48999.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (Tier1-OSR)
         -20 (-6.94 % of base) : 27419.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)
         -16 (-0.12 % of base) : 19640.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.CollectionsOfPrimitives,int) (FullOpts)
         -16 (-0.69 % of base) : 39218.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetSpecialType(byte):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (Tier1)
         -16 (-5.41 % of base) : 5483.dasm - System.Number:RoundNumber(byref,int,ubyte) (Tier1)
         -12 (-1.58 % of base) : 42380.dasm - Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass:LeaveParameter(Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.Location):this (Tier1)
         -12 (-0.37 % of base) : 45460.dasm - Sigil.Impl.VerifiableTracker:CollapseAndVerify():Sigil.Impl.VerificationResult:this (Tier1)
         -12 (-0.22 % of base) : 2643.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier0-FullOpts)
         -12 (-3.90 % of base) : 5143.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (Tier1)
         -12 (-4.35 % of base) : 9776.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier1)
          -8 (-1.75 % of base) : 45472.dasm - Sigil.Impl.LinqStack`1[System.__Canon]:Peek(ubyte,int):Sigil.Impl.LinqList`1[Sigil.Impl.TypeOnStack][]:this (Tier1)
          -8 (-3.23 % of base) : 29335.dasm - System.Globalization.CultureData:GetSeparator(System.String,System.String):System.String (Tier1)
          -4 (-0.10 % of base) : 38855.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetWellKnownType(int):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (Tier1)
          -4 (-0.81 % of base) : 39118.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MetadataOrSourceAssemblySymbol:GetDeclaredSpecialTypeMember(int):Microsoft.CodeAnalysis.CSharp.Symbol:this (Tier1)
          -4 (-0.34 % of base) : 40159.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (Tier1)
          -4 (-0.27 % of base) : 6434.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (Tier0-FullOpts)
          -4 (-2.70 % of base) : 31795.dasm - System.Text.Json.Tests.Perf_Segment:ReadMultiSegmentSequence(int):this (Tier1-OSR)

Top method regressions (percentages):
          16 (1.39 % of base) : 6673.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (Tier0-FullOpts)
           4 (0.60 % of base) : 19751.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)

Top method improvements (percentages):
         -36 (-32.14 % of base) : 5355.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -36 (-21.95 % of base) : 46977.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
        -200 (-7.46 % of base) : 44192.dasm - System.Text.Json.Tests.Perf_Segment:ReadMultiSegmentSequenceUsingSpan(int):this (Tier1-OSR)
         -20 (-6.94 % of base) : 27419.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)
         -24 (-5.83 % of base) : 48999.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (Tier1-OSR)
         -16 (-5.41 % of base) : 5483.dasm - System.Number:RoundNumber(byref,int,ubyte) (Tier1)
         -12 (-4.35 % of base) : 9776.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier1)
         -12 (-3.90 % of base) : 5143.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (Tier1)
          -8 (-3.23 % of base) : 29335.dasm - System.Globalization.CultureData:GetSeparator(System.String,System.String):System.String (Tier1)
          -4 (-2.70 % of base) : 31795.dasm - System.Text.Json.Tests.Perf_Segment:ReadMultiSegmentSequence(int):this (Tier1-OSR)
          -4 (-2.70 % of base) : 47978.dasm - System.Text.Json.Tests.Perf_Segment:ReadSingleSegmentSequence():this (Tier1-OSR)
          -8 (-1.75 % of base) : 45472.dasm - Sigil.Impl.LinqStack`1[System.__Canon]:Peek(ubyte,int):Sigil.Impl.LinqList`1[Sigil.Impl.TypeOnStack][]:this (Tier1)
         -12 (-1.58 % of base) : 42380.dasm - Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass:LeaveParameter(Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.Location):this (Tier1)
          -4 (-0.81 % of base) : 39118.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MetadataOrSourceAssemblySymbol:GetDeclaredSpecialTypeMember(int):Microsoft.CodeAnalysis.CSharp.Symbol:this (Tier1)
          -4 (-0.71 % of base) : 24845.dasm - System.Text.Json.Tests.Perf_Segment:ReadSingleSegmentSequenceByN(int):this (Tier1-OSR)
         -16 (-0.69 % of base) : 39218.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetSpecialType(byte):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (Tier1)
         -12 (-0.37 % of base) : 45460.dasm - Sigil.Impl.VerifiableTracker:CollapseAndVerify():Sigil.Impl.VerificationResult:this (Tier1)
          -4 (-0.34 % of base) : 40159.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (Tier1)
          -4 (-0.27 % of base) : 6434.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (Tier0-FullOpts)
         -12 (-0.22 % of base) : 2643.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier0-FullOpts)

24 total methods with Code Size differences (22 improved, 2 regressed).


coreclr_tests.run.windows.arm64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 495087516 (overridden on cmd)
Total bytes of diff: 495083540 (overridden on cmd)
Total bytes of delta: -3976 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          20 : 20372.dasm (0.81 % of base)
          20 : 250772.dasm (0.93 % of base)
          20 : 452868.dasm (0.91 % of base)
          20 : 455244.dasm (0.93 % of base)
          20 : 476856.dasm (0.93 % of base)
          20 : 489871.dasm (0.91 % of base)
          20 : 493792.dasm (0.91 % of base)
          20 : 502432.dasm (0.91 % of base)
          20 : 505940.dasm (0.91 % of base)
          20 : 509283.dasm (0.91 % of base)
          20 : 588823.dasm (0.92 % of base)
          20 : 201704.dasm (0.28 % of base)
          20 : 449076.dasm (0.91 % of base)
          20 : 476887.dasm (0.93 % of base)
          20 : 476915.dasm (0.93 % of base)
          20 : 508648.dasm (0.93 % of base)
          20 : 516187.dasm (0.91 % of base)
          20 : 516839.dasm (0.91 % of base)
          20 : 593407.dasm (0.91 % of base)
          20 : 593863.dasm (0.91 % of base)

Top file improvements (bytes):
        -276 : 20019.dasm (-25.18 % of base)
        -148 : 181688.dasm (-16.23 % of base)
         -84 : 20018.dasm (-21.21 % of base)
         -64 : 20017.dasm (-8.89 % of base)
         -56 : 193381.dasm (-42.42 % of base)
         -56 : 336691.dasm (-42.42 % of base)
         -56 : 447965.dasm (-19.72 % of base)
         -56 : 447966.dasm (-19.72 % of base)
         -52 : 251070.dasm (-28.26 % of base)
         -48 : 193373.dasm (-27.27 % of base)
         -48 : 447967.dasm (-27.27 % of base)
         -48 : 447987.dasm (-27.27 % of base)
         -48 : 399488.dasm (-1.47 % of base)
         -48 : 447963.dasm (-27.27 % of base)
         -44 : 508756.dasm (-2.67 % of base)
         -44 : 298072.dasm (-18.33 % of base)
         -40 : 451612.dasm (-27.03 % of base)
         -40 : 588121.dasm (-3.10 % of base)
         -40 : 578935.dasm (-10.42 % of base)
         -40 : 452679.dasm (-34.48 % of base)

73 total files with Code Size differences (33 improved, 40 regressed), 20 unchanged.

Top method regressions (bytes):
          20 (0.28 % of base) : 201704.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodSymbol:CheckModifiers(ubyte,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
          20 (0.81 % of base) : 20372.dasm - Microsoft.Diagnostics.NETCore.Client.IpcEndpointConfig:Parse(System.String):Microsoft.Diagnostics.NETCore.Client.IpcEndpointConfig (FullOpts)
          20 (0.93 % of base) : 250772.dasm - System.SR:InternalGetResourceString(System.String):System.String (Tier1)
          20 (0.91 % of base) : 452868.dasm - System.SR:InternalGetResourceString(System.String):System.String (Tier1)
          20 (0.93 % of base) : 455244.dasm - System.SR:InternalGetResourceString(System.String):System.String (Tier1)
          20 (0.93 % of base) : 476856.dasm - System.SR:InternalGetResourceString(System.String):System.String (Tier1)
          20 (0.91 % of base) : 489871.dasm - System.SR:InternalGetResourceString(System.String):System.String (Tier1)
          20 (0.91 % of base) : 493792.dasm - System.SR:InternalGetResourceString(System.String):System.String (Tier1)
          20 (0.91 % of base) : 502432.dasm - System.SR:InternalGetResourceString(System.String):System.String (Tier1)
          20 (0.91 % of base) : 505940.dasm - System.SR:InternalGetResourceString(System.String):System.String (Tier1)
          20 (0.91 % of base) : 509283.dasm - System.SR:InternalGetResourceString(System.String):System.String (Tier1)
          20 (0.92 % of base) : 588823.dasm - System.SR:InternalGetResourceString(System.String):System.String (Tier1)
          20 (0.91 % of base) : 449076.dasm - System.SR:InternalGetResourceString(System.String):System.String (Tier1)
          20 (0.93 % of base) : 476887.dasm - System.SR:InternalGetResourceString(System.String):System.String (Tier1)
          20 (0.93 % of base) : 476915.dasm - System.SR:InternalGetResourceString(System.String):System.String (Tier1)
          20 (0.93 % of base) : 508648.dasm - System.SR:InternalGetResourceString(System.String):System.String (Tier1)
          20 (0.91 % of base) : 516187.dasm - System.SR:InternalGetResourceString(System.String):System.String (Tier1)
          20 (0.91 % of base) : 516839.dasm - System.SR:InternalGetResourceString(System.String):System.String (Tier1)
          20 (0.91 % of base) : 593407.dasm - System.SR:InternalGetResourceString(System.String):System.String (Tier1)
          20 (0.91 % of base) : 593863.dasm - System.SR:InternalGetResourceString(System.String):System.String (Tier1)

Top method improvements (bytes):
        -276 (-25.18 % of base) : 20019.dasm - Microsoft.FSharp.Core.PrintfImpl+GenericNumber:isPositive(System.Object):ubyte (FullOpts)
        -148 (-16.23 % of base) : 181688.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal:IsDefault(System.Object):ubyte (FullOpts)
         -84 (-21.21 % of base) : 20018.dasm - Microsoft.FSharp.Core.PrintfImpl+FloatAndDecimal:isNumber(System.Object):ubyte (FullOpts)
         -64 (-8.89 % of base) : 20017.dasm - Microsoft.FSharp.Core.PrintfImpl+FloatAndDecimal:toFormattedString(System.String,System.Object):System.String (FullOpts)
         -56 (-19.72 % of base) : 447965.dasm - System.Double:Equals(System.Object):ubyte:this (Instrumented Tier1)
         -56 (-42.42 % of base) : 193381.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -56 (-42.42 % of base) : 336691.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -56 (-19.72 % of base) : 447966.dasm - System.Single:Equals(System.Object):ubyte:this (Instrumented Tier1)
         -52 (-28.26 % of base) : 251070.dasm - Runtime_40440+LargeStruct:Equals(System.Object):ubyte:this (FullOpts)
         -48 (-27.27 % of base) : 447987.dasm - System.Boolean:Equals(System.Object):ubyte:this (Instrumented Tier1)
         -48 (-27.27 % of base) : 447967.dasm - System.Char:Equals(System.Object):ubyte:this (Instrumented Tier1)
         -48 (-27.27 % of base) : 193373.dasm - System.Int32:Equals(System.Object):ubyte:this (Instrumented Tier1)
         -48 (-27.27 % of base) : 447963.dasm - System.Int64:Equals(System.Object):ubyte:this (Instrumented Tier1)
         -48 (-1.47 % of base) : 399488.dasm - System.Reflection.InvokerEmitUtil:EmitCallAndReturnHandling(System.Reflection.Emit.ILGenerator,System.Reflection.MethodBase,ubyte,ubyte) (Tier1)
         -44 (-18.33 % of base) : 298072.dasm - Internal.IL.StackValue:Equals(System.Object):ubyte:this (FullOpts)
         -44 (-2.67 % of base) : 508756.dasm - Runtime_52864.test:check(System.Numerics.Vector2,System.Numerics.Vector2,System.Numerics.Vector2) (Tier1)
         -40 (-10.42 % of base) : 578935.dasm - Assert:AreEqual(System.Object,System.Object) (Tier1)
         -40 (-3.10 % of base) : 588121.dasm - Internal.JitInterface.CorInfoImpl:<IsClassPreInited>g__IsDynamicStaticsOrHasBoxedRegularStatics|47_1(Internal.TypeSystem.TypeDesc):ubyte (Tier1)
         -40 (-27.03 % of base) : 451612.dasm - System.Double:Equals(System.Object):ubyte:this (Tier1)
         -40 (-34.48 % of base) : 452679.dasm - System.Int64:Equals(System.Object):ubyte:this (Tier1)

Top method regressions (percentages):
           4 (3.85 % of base) : 251164.dasm - Runtime_49101:Test(int,int,int,int,int,int,int,int,int,float,float,float,float,float,float,float,float,float,System.Numerics.Vector3):int (FullOpts)
           8 (3.85 % of base) : 488301.dasm - System.Reflection.RuntimeParameterInfo:GetParameters(System.IRuntimeMethodInfo,System.Reflection.MemberInfo,System.Signature):System.Reflection.ParameterInfo[] (Tier1)
           8 (3.85 % of base) : 505998.dasm - System.Reflection.RuntimeParameterInfo:GetParameters(System.IRuntimeMethodInfo,System.Reflection.MemberInfo,System.Signature):System.Reflection.ParameterInfo[] (Tier1)
          12 (2.70 % of base) : 587828.dasm - ILCompiler.TypeExtensions:IsSealed(Internal.TypeSystem.TypeDesc):ubyte (Tier1)
          12 (2.70 % of base) : 592144.dasm - ILCompiler.TypeExtensions:IsSealed(Internal.TypeSystem.TypeDesc):ubyte (Tier1)
           4 (2.17 % of base) : 452228.dasm - System.Text.RegularExpressions.RegexNode:Child(int):System.Text.RegularExpressions.RegexNode:this (Tier1)
           4 (2.17 % of base) : 476683.dasm - System.Text.RegularExpressions.RegexNode:Child(int):System.Text.RegularExpressions.RegexNode:this (Tier1)
           4 (2.17 % of base) : 489555.dasm - System.Text.RegularExpressions.RegexNode:Child(int):System.Text.RegularExpressions.RegexNode:this (Tier1)
           4 (2.17 % of base) : 499556.dasm - System.Text.RegularExpressions.RegexNode:Child(int):System.Text.RegularExpressions.RegexNode:this (Tier1)
           4 (2.17 % of base) : 503050.dasm - System.Text.RegularExpressions.RegexNode:Child(int):System.Text.RegularExpressions.RegexNode:this (Tier1)
           4 (2.17 % of base) : 511835.dasm - System.Text.RegularExpressions.RegexNode:Child(int):System.Text.RegularExpressions.RegexNode:this (Tier1)
           4 (2.17 % of base) : 515376.dasm - System.Text.RegularExpressions.RegexNode:Child(int):System.Text.RegularExpressions.RegexNode:this (Tier1)
           4 (2.17 % of base) : 324301.dasm - System.Text.RegularExpressions.RegexNode:Child(int):System.Text.RegularExpressions.RegexNode:this (Tier1)
           4 (2.17 % of base) : 462853.dasm - System.Text.RegularExpressions.RegexNode:Child(int):System.Text.RegularExpressions.RegexNode:this (Tier1)
           4 (2.17 % of base) : 495654.dasm - System.Text.RegularExpressions.RegexNode:Child(int):System.Text.RegularExpressions.RegexNode:this (Tier1)
           4 (2.17 % of base) : 497764.dasm - System.Text.RegularExpressions.RegexNode:Child(int):System.Text.RegularExpressions.RegexNode:this (Tier1)
           4 (2.17 % of base) : 508293.dasm - System.Text.RegularExpressions.RegexNode:Child(int):System.Text.RegularExpressions.RegexNode:this (Tier1)
           4 (2.17 % of base) : 516572.dasm - System.Text.RegularExpressions.RegexNode:Child(int):System.Text.RegularExpressions.RegexNode:this (Tier1)
           4 (2.17 % of base) : 574544.dasm - System.Text.RegularExpressions.RegexNode:Child(int):System.Text.RegularExpressions.RegexNode:this (Tier1)
           4 (2.00 % of base) : 576504.dasm - System.Text.RegularExpressions.RegexNode:Child(int):System.Text.RegularExpressions.RegexNode:this (Tier1)

Top method improvements (percentages):
         -56 (-42.42 % of base) : 193381.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -56 (-42.42 % of base) : 336691.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -40 (-34.48 % of base) : 452679.dasm - System.Int64:Equals(System.Object):ubyte:this (Tier1)
         -40 (-34.48 % of base) : 452685.dasm - System.UInt64:Equals(System.Object):ubyte:this (Tier1)
         -36 (-32.14 % of base) : 342164.dasm - System.Byte:Equals(System.Object):ubyte:this (Tier1)
         -36 (-32.14 % of base) : 452681.dasm - System.Byte:Equals(System.Object):ubyte:this (Tier1)
         -36 (-32.14 % of base) : 452682.dasm - System.Int16:Equals(System.Object):ubyte:this (Tier1)
         -36 (-32.14 % of base) : 323286.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -36 (-32.14 % of base) : 460299.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -36 (-32.14 % of base) : 452677.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -36 (-32.14 % of base) : 508111.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -36 (-32.14 % of base) : 452683.dasm - System.SByte:Equals(System.Object):ubyte:this (Tier1)
         -36 (-32.14 % of base) : 452680.dasm - System.UInt16:Equals(System.Object):ubyte:this (Tier1)
         -36 (-32.14 % of base) : 452684.dasm - System.UInt32:Equals(System.Object):ubyte:this (Tier1)
         -52 (-28.26 % of base) : 251070.dasm - Runtime_40440+LargeStruct:Equals(System.Object):ubyte:this (FullOpts)
         -48 (-27.27 % of base) : 447987.dasm - System.Boolean:Equals(System.Object):ubyte:this (Instrumented Tier1)
         -48 (-27.27 % of base) : 447967.dasm - System.Char:Equals(System.Object):ubyte:this (Instrumented Tier1)
         -48 (-27.27 % of base) : 193373.dasm - System.Int32:Equals(System.Object):ubyte:this (Instrumented Tier1)
         -48 (-27.27 % of base) : 447963.dasm - System.Int64:Equals(System.Object):ubyte:this (Instrumented Tier1)
         -40 (-27.03 % of base) : 451612.dasm - System.Double:Equals(System.Object):ubyte:this (Tier1)


libraries.crossgen2.windows.arm64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 59070348 (overridden on cmd)
Total bytes of diff: 59069024 (overridden on cmd)
Total bytes of delta: -1324 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          36 : 70834.dasm (0.69 % of base)
          32 : 29860.dasm (8.25 % of base)
          32 : 185188.dasm (1.75 % of base)
          24 : 99875.dasm (2.63 % of base)
          24 : 94795.dasm (1.75 % of base)
          20 : 63442.dasm (0.33 % of base)
          20 : 205127.dasm (11.90 % of base)
          20 : 205128.dasm (12.82 % of base)
          16 : 25763.dasm (1.42 % of base)
          12 : 135596.dasm (0.48 % of base)
          12 : 164499.dasm (0.48 % of base)
           8 : 29845.dasm (2.15 % of base)
           8 : 62792.dasm (0.17 % of base)
           8 : 25872.dasm (4.35 % of base)
           4 : 243940.dasm (0.48 % of base)
           4 : 24595.dasm (0.53 % of base)
           4 : 121505.dasm (3.23 % of base)
           4 : 36641.dasm (1.56 % of base)
           4 : 92450.dasm (0.56 % of base)
           4 : 143717.dasm (0.65 % of base)

Top file improvements (bytes):
         -68 : 125085.dasm (-1.66 % of base)
         -64 : 125127.dasm (-1.61 % of base)
         -56 : 143222.dasm (-3.49 % of base)
         -48 : 124345.dasm (-2.71 % of base)
         -48 : 120262.dasm (-26.09 % of base)
         -48 : 185070.dasm (-5.43 % of base)
         -48 : 224076.dasm (-5.83 % of base)
         -44 : 243420.dasm (-6.75 % of base)
         -44 : 206718.dasm (-6.75 % of base)
         -36 : 206388.dasm (-4.52 % of base)
         -36 : 225638.dasm (-20.45 % of base)
         -28 : 124871.dasm (-9.86 % of base)
         -24 : 117077.dasm (-0.52 % of base)
         -24 : 94785.dasm (-5.56 % of base)
         -24 : 134816.dasm (-3.59 % of base)
         -24 : 163732.dasm (-3.59 % of base)
         -24 : 225964.dasm (-0.54 % of base)
         -20 : 123622.dasm (-4.03 % of base)
         -20 : 36593.dasm (-3.33 % of base)
         -20 : 124790.dasm (-4.24 % of base)

63 total files with Code Size differences (35 improved, 28 regressed), 20 unchanged.

Top method regressions (bytes):
          36 (0.69 % of base) : 70834.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:BetterFunctionMember[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],ubyte,byref):int:this (FullOpts)
          32 (8.25 % of base) : 29860.dasm - Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
          32 (1.75 % of base) : 185188.dasm - System.Xml.XmlConvert:EncodeName(System.String,ubyte,ubyte):System.String (FullOpts)
          24 (1.75 % of base) : 94795.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.MetadataDecoder:SubstituteNoPiaLocalType(byref,ubyte,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,System.String,System.String,System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol):Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol (FullOpts)
          24 (2.63 % of base) : 99875.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation:CheckBinaryBuiltInOperator(System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+OperatorInfo) (FullOpts)
          20 (0.33 % of base) : 63442.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodSymbol:CheckModifiers(ubyte,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
          20 (11.90 % of base) : 205127.dasm - System.Security.AccessControl.CommonAcl:GetAccessMaskForRemoval(System.Security.AccessControl.QualifiedAce,int,System.Guid,byref):ubyte (FullOpts)
          20 (12.82 % of base) : 205128.dasm - System.Security.AccessControl.CommonAcl:GetInheritanceFlagsForRemoval(System.Security.AccessControl.QualifiedAce,int,System.Guid,byref):ubyte (FullOpts)
          16 (1.42 % of base) : 25763.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
          12 (0.48 % of base) : 135596.dasm - Microsoft.CodeAnalysis.Diagnostics.SuppressMessageAttributeState+TargetSymbolResolver:Resolve(byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ISymbol]:this (FullOpts)
          12 (0.48 % of base) : 164499.dasm - Microsoft.CodeAnalysis.Diagnostics.SuppressMessageAttributeState+TargetSymbolResolver:Resolve(byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ISymbol]:this (FullOpts)
           8 (0.17 % of base) : 62792.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceEventSymbol:CheckModifiersAndType(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
           8 (2.15 % of base) : 29845.dasm - Microsoft.FSharp.Core.FSharpRef`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
           8 (4.35 % of base) : 25872.dasm - System.Threading.PortableThreadPool:RemoveWaitThread(System.Threading.PortableThreadPool+WaitThread):this (FullOpts)
           4 (0.56 % of base) : 92450.dasm - Microsoft.CodeAnalysis.VisualBasic.DataFlowPass:SetSlotUnassigned(int,byref):this (FullOpts)
           4 (1.11 % of base) : 211823.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)
           4 (0.65 % of base) : 143717.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:LeastGenericProcedure(Microsoft.VisualBasic.CompilerServices.Symbols+Method,Microsoft.VisualBasic.CompilerServices.Symbols+Method,int,byref):Microsoft.VisualBasic.CompilerServices.Symbols+Method (FullOpts)
           4 (0.53 % of base) : 24595.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
           4 (3.23 % of base) : 121505.dasm - System.Data.SqlTypes.SqlDecimal:Equals(System.Data.SqlTypes.SqlDecimal):ubyte:this (FullOpts)
           4 (2.63 % of base) : 175210.dasm - System.DirectoryServices.ActiveDirectory.TrustRelationshipInformation:.ctor(System.DirectoryServices.ActiveDirectory.DirectoryContext,System.String,System.DirectoryServices.ActiveDirectory.TrustObject):this (FullOpts)

Top method improvements (bytes):
         -68 (-1.66 % of base) : 125085.dasm - System.Data.RBTree`1[System.__Canon]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
         -64 (-1.61 % of base) : 125127.dasm - System.Data.RBTree`1[int]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
         -56 (-3.49 % of base) : 143222.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindingScore(System.Reflection.ParameterInfo[],int[],System.Type[],ubyte,int):int:this (FullOpts)
         -48 (-2.71 % of base) : 124345.dasm - System.Data.Select:AnalyzeExpression(System.Data.BinaryNode):this (FullOpts)
         -48 (-5.83 % of base) : 224076.dasm - System.Diagnostics.LegacyPropagator:TryExtractBaggage(System.String,byref):ubyte (FullOpts)
         -48 (-26.09 % of base) : 120262.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
         -48 (-5.43 % of base) : 185070.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (FullOpts)
         -44 (-6.75 % of base) : 243420.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
         -44 (-6.75 % of base) : 206718.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
         -36 (-4.52 % of base) : 206388.dasm - System.Net.HttpListenerRequest+Helpers:GetCharSetValueFromHeader(System.String):System.String (FullOpts)
         -36 (-20.45 % of base) : 225638.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
         -28 (-9.86 % of base) : 124871.dasm - System.Data.ExpressionParser:ScanDate():this (FullOpts)
         -24 (-3.59 % of base) : 134816.dasm - Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString:FromSource(System.String):Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString (FullOpts)
         -24 (-3.59 % of base) : 163732.dasm - Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString:FromSource(System.String):Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString (FullOpts)
         -24 (-5.56 % of base) : 94785.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol:this (FullOpts)
         -24 (-0.52 % of base) : 117077.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceNamedTypeSymbol+ComClassData:PerformComClassAnalysis(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceNamedTypeSymbol):this (FullOpts)
         -24 (-0.54 % of base) : 225964.dasm - System.Globalization.FormatProvider+Number:NumberToStringFormat(byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
         -20 (-6.49 % of base) : 127474.dasm - Microsoft.CodeAnalysis.CommandLineParser:<RemoveQuotesAndSlashesEx>g__processSlashes|43_0(System.Text.StringBuilder,System.ReadOnlySpan`1[ushort],byref) (FullOpts)
         -20 (-6.49 % of base) : 156537.dasm - Microsoft.CodeAnalysis.CommandLineParser:<RemoveQuotesAndSlashesEx>g__processSlashes|43_0(System.Text.StringBuilder,System.ReadOnlySpan`1[ushort],byref) (FullOpts)
         -20 (-2.50 % of base) : 126193.dasm - Roslyn.Utilities.CommandLineUtilities:SplitCommandLineIntoArguments(System.ReadOnlySpan`1[ushort],ubyte,System.Text.StringBuilder,System.Collections.Generic.List`1[System.String],byref) (FullOpts)

Top method regressions (percentages):
          20 (12.82 % of base) : 205128.dasm - System.Security.AccessControl.CommonAcl:GetInheritanceFlagsForRemoval(System.Security.AccessControl.QualifiedAce,int,System.Guid,byref):ubyte (FullOpts)
          20 (11.90 % of base) : 205127.dasm - System.Security.AccessControl.CommonAcl:GetAccessMaskForRemoval(System.Security.AccessControl.QualifiedAce,int,System.Guid,byref):ubyte (FullOpts)
          32 (8.25 % of base) : 29860.dasm - Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
           8 (4.35 % of base) : 25872.dasm - System.Threading.PortableThreadPool:RemoveWaitThread(System.Threading.PortableThreadPool+WaitThread):this (FullOpts)
           4 (3.23 % of base) : 121505.dasm - System.Data.SqlTypes.SqlDecimal:Equals(System.Data.SqlTypes.SqlDecimal):ubyte:this (FullOpts)
          24 (2.63 % of base) : 99875.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation:CheckBinaryBuiltInOperator(System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+OperatorInfo) (FullOpts)
           4 (2.63 % of base) : 175210.dasm - System.DirectoryServices.ActiveDirectory.TrustRelationshipInformation:.ctor(System.DirectoryServices.ActiveDirectory.DirectoryContext,System.String,System.DirectoryServices.ActiveDirectory.TrustObject):this (FullOpts)
           8 (2.15 % of base) : 29845.dasm - Microsoft.FSharp.Core.FSharpRef`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
          24 (1.75 % of base) : 94795.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.MetadataDecoder:SubstituteNoPiaLocalType(byref,ubyte,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,System.String,System.String,System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol):Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol (FullOpts)
          32 (1.75 % of base) : 185188.dasm - System.Xml.XmlConvert:EncodeName(System.String,ubyte,ubyte):System.String (FullOpts)
           4 (1.56 % of base) : 36641.dasm - System.Speech.Internal.SrgsCompiler.Arc:CompareContent(System.Speech.Internal.SrgsCompiler.Arc,System.Speech.Internal.SrgsCompiler.Arc):int (FullOpts)
          16 (1.42 % of base) : 25763.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
           4 (1.11 % of base) : 211823.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)
           4 (0.82 % of base) : 23033.dasm - System.Threading.ReaderWriterLockSlim+SpinLock:IsEnterDeprioritized(int):ubyte:this (FullOpts)
          36 (0.69 % of base) : 70834.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:BetterFunctionMember[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],ubyte,byref):int:this (FullOpts)
           4 (0.65 % of base) : 143717.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:LeastGenericProcedure(Microsoft.VisualBasic.CompilerServices.Symbols+Method,Microsoft.VisualBasic.CompilerServices.Symbols+Method,int,byref):Microsoft.VisualBasic.CompilerServices.Symbols+Method (FullOpts)
           4 (0.56 % of base) : 92450.dasm - Microsoft.CodeAnalysis.VisualBasic.DataFlowPass:SetSlotUnassigned(int,byref):this (FullOpts)
           4 (0.56 % of base) : 202770.dasm - Xunit.Assert:Equal(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte,ubyte,ubyte) (FullOpts)
           4 (0.55 % of base) : 243935.dasm - System.Xml.Linq.Extensions+<GetDescendantNodes>d__22`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
           4 (0.53 % of base) : 24595.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)

Top method improvements (percentages):
         -48 (-26.09 % of base) : 120262.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
         -36 (-20.45 % of base) : 225638.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
         -28 (-9.86 % of base) : 124871.dasm - System.Data.ExpressionParser:ScanDate():this (FullOpts)
         -20 (-7.81 % of base) : 24370.dasm - System.DateTimeFormat:IsUseGenitiveForm(System.ReadOnlySpan`1[ushort],int,int,ushort):ubyte (FullOpts)
         -16 (-7.55 % of base) : 226004.dasm - System.Globalization.FormatProvider+Number:RoundNumber(byref,int) (FullOpts)
         -44 (-6.75 % of base) : 243420.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
         -44 (-6.75 % of base) : 206718.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
         -20 (-6.49 % of base) : 127474.dasm - Microsoft.CodeAnalysis.CommandLineParser:<RemoveQuotesAndSlashesEx>g__processSlashes|43_0(System.Text.StringBuilder,System.ReadOnlySpan`1[ushort],byref) (FullOpts)
         -20 (-6.49 % of base) : 156537.dasm - Microsoft.CodeAnalysis.CommandLineParser:<RemoveQuotesAndSlashesEx>g__processSlashes|43_0(System.Text.StringBuilder,System.ReadOnlySpan`1[ushort],byref) (FullOpts)
         -16 (-6.15 % of base) : 24402.dasm - System.Number:RoundNumber(byref,int,ubyte) (FullOpts)
         -48 (-5.83 % of base) : 224076.dasm - System.Diagnostics.LegacyPropagator:TryExtractBaggage(System.String,byref):ubyte (FullOpts)
         -12 (-5.77 % of base) : 212779.dasm - System.Transactions.CheapUnfairReaderWriterLock:EnterWriteLock():this (FullOpts)
         -24 (-5.56 % of base) : 94785.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol:this (FullOpts)
         -48 (-5.43 % of base) : 185070.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (FullOpts)
         -36 (-4.52 % of base) : 206388.dasm - System.Net.HttpListenerRequest+Helpers:GetCharSetValueFromHeader(System.String):System.String (FullOpts)
          -4 (-4.35 % of base) : 169363.dasm - System.Runtime.InteropServices.ComEventsMethod:Remove(System.Runtime.InteropServices.ComEventsMethod,System.Runtime.InteropServices.ComEventsMethod):System.Runtime.InteropServices.ComEventsMethod (FullOpts)
         -20 (-4.24 % of base) : 124790.dasm - System.Data.XmlDataLoader:GetValueForTextOnlyColumns(System.Xml.XmlNode):System.String (FullOpts)
         -12 (-4.23 % of base) : 194820.dasm - System.Configuration.Internal.WriteFileContext:ReplaceFile(System.String,System.String) (FullOpts)
         -20 (-4.03 % of base) : 123622.dasm - System.Data.DataTable:GetInheritedNamespace(System.Collections.Generic.List`1[System.Data.DataTable]):System.String:this (FullOpts)
         -12 (-3.95 % of base) : 22603.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)


libraries.pmi.windows.arm64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 79830948 (overridden on cmd)
Total bytes of diff: 79827732 (overridden on cmd)
Total bytes of delta: -3216 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         100 : 229136.dasm (1.60 % of base)
          40 : 94483.dasm (2.25 % of base)
          32 : 185571.dasm (3.29 % of base)
          28 : 265045.dasm (0.38 % of base)
          24 : 257469.dasm (1.21 % of base)
          24 : 258126.dasm (1.13 % of base)
          24 : 37520.dasm (4.14 % of base)
          24 : 50514.dasm (1.73 % of base)
          24 : 129856.dasm (1.74 % of base)
          24 : 161167.dasm (1.74 % of base)
          20 : 241424.dasm (1.16 % of base)
          20 : 253875.dasm (0.45 % of base)
          20 : 288293.dasm (1.16 % of base)
          20 : 61217.dasm (0.27 % of base)
          16 : 184204.dasm (1.81 % of base)
          12 : 100007.dasm (3.19 % of base)
          12 : 185952.dasm (3.90 % of base)
          12 : 188763.dasm (1.18 % of base)
          12 : 197244.dasm (3.61 % of base)
          12 : 50583.dasm (1.83 % of base)

Top file improvements (bytes):
        -296 : 227386.dasm (-26.15 % of base)
        -276 : 21816.dasm (-25.18 % of base)
         -84 : 21765.dasm (-21.21 % of base)
         -68 : 175889.dasm (-1.66 % of base)
         -64 : 21764.dasm (-8.89 % of base)
         -64 : 175950.dasm (-1.61 % of base)
         -64 : 21766.dasm (-10.53 % of base)
         -56 : 228057.dasm (-19.44 % of base)
         -52 : 222811.dasm (-35.14 % of base)
         -52 : 88411.dasm (-34.21 % of base)
         -52 : 89480.dasm (-26.00 % of base)
         -52 : 228061.dasm (-27.66 % of base)
         -48 : 193308.dasm (-7.64 % of base)
         -48 : 259953.dasm (-3.69 % of base)
         -48 : 89446.dasm (-35.29 % of base)
         -48 : 89502.dasm (-33.33 % of base)
         -48 : 89516.dasm (-35.29 % of base)
         -48 : 215343.dasm (-27.91 % of base)
         -44 : 151121.dasm (-0.90 % of base)
         -44 : 92574.dasm (-1.76 % of base)

65 total files with Code Size differences (34 improved, 31 regressed), 20 unchanged.

Top method regressions (bytes):
         100 (1.60 % of base) : 229136.dasm - Microsoft.DotNet.XUnitExtensions.XunitParallelTheoryTestCaseRunner+<AfterTestCaseStartingAsync>d__9:MoveNext():this (FullOpts)
          40 (2.25 % of base) : 94483.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.MetadataDecoder:SubstituteNoPiaLocalType(byref,ubyte,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,System.String,System.String,System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol):Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol (FullOpts)
          32 (3.29 % of base) : 185571.dasm - System.Net.Http.Headers.HeaderUtilities:AreEqualCollections[System.__Canon](System.Net.Http.Headers.ObjectCollection`1[System.__Canon],System.Net.Http.Headers.ObjectCollection`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte (FullOpts)
          28 (0.38 % of base) : 265045.dasm - System.DirectoryServices.ActiveDirectory.ActiveDirectorySite:GetBridgeheadServers():System.DirectoryServices.ActiveDirectory.ReadOnlyDirectoryServerCollection:this (FullOpts)
          24 (4.14 % of base) : 37520.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:SetUpdatedSymbol(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)
          24 (1.73 % of base) : 50514.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseInterpolation(Microsoft.CodeAnalysis.CSharp.CSharpParseOptions,System.String,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer+Interpolation,int):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationSyntax (FullOpts)
          24 (1.74 % of base) : 129856.dasm - Microsoft.CodeAnalysis.Diagnostics.AsyncQueue`1[ubyte]:CompleteCore():ubyte:this (FullOpts)
          24 (1.74 % of base) : 161167.dasm - Microsoft.CodeAnalysis.Diagnostics.AsyncQueue`1[ubyte]:CompleteCore():ubyte:this (FullOpts)
          24 (1.21 % of base) : 257469.dasm - System.Data.ProviderBase.DbConnectionFactory:TryGetConnection(System.Data.Common.DbConnection,System.Threading.Tasks.TaskCompletionSource`1[System.Data.ProviderBase.DbConnectionInternal],System.Data.Common.DbConnectionOptions,System.Data.ProviderBase.DbConnectionInternal,byref):ubyte:this (FullOpts)
          24 (1.13 % of base) : 258126.dasm - System.Data.ProviderBase.DbConnectionFactory:TryGetConnection(System.Data.Common.DbConnection,System.Threading.Tasks.TaskCompletionSource`1[System.Data.ProviderBase.DbConnectionInternal],System.Data.Common.DbConnectionOptions,System.Data.ProviderBase.DbConnectionInternal,byref):ubyte:this (FullOpts)
          20 (0.27 % of base) : 61217.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodSymbol:CheckModifiers(ubyte,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
          20 (0.45 % of base) : 253875.dasm - System.Drawing.ColorConverter:ConvertTo(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type):System.Object:this (FullOpts)
          20 (1.16 % of base) : 241424.dasm - System.Reflection.TypeLoading.Assignability:CanCastTo(System.Type,System.Type,System.Reflection.TypeLoading.CoreTypes):ubyte (FullOpts)
          20 (1.16 % of base) : 288293.dasm - System.Reflection.TypeLoading.Assignability:CanCastTo(System.Type,System.Type,System.Reflection.TypeLoading.CoreTypes):ubyte (FullOpts)
          16 (1.81 % of base) : 184204.dasm - System.Net.Http.AuthenticationHelper+DigestResponse:GetNextValue(System.String,int,ubyte,byref):System.String (FullOpts)
          12 (1.83 % of base) : 50583.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolatedStringToken>g__getOpenQuote|428_1(byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
          12 (1.59 % of base) : 50591.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolation>g__getInterpolationCloseToken|434_2(Microsoft.CodeAnalysis.GreenNode,byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
          12 (3.19 % of base) : 100007.dasm - Microsoft.CodeAnalysis.VisualBasic.VBSemanticModel:GetSymbolInfo(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionRangeVariableSyntax,System.Threading.CancellationToken):Microsoft.CodeAnalysis.SymbolInfo:this (FullOpts)
          12 (3.90 % of base) : 185952.dasm - System.Net.Http.Headers.ObjectCollection`1[System.__Canon]:Contains(System.__Canon):ubyte:this (FullOpts)
          12 (1.18 % of base) : 188763.dasm - System.Runtime.Serialization.SchemaHelper:AddSchemaImport(System.String,System.Xml.Schema.XmlSchema) (FullOpts)

Top method improvements (bytes):
        -296 (-26.15 % of base) : 227386.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal:IsDefault(System.Object):ubyte (FullOpts)
        -276 (-25.18 % of base) : 21816.dasm - Microsoft.FSharp.Core.PrintfImpl+GenericNumber:isPositive(System.Object):ubyte (FullOpts)
         -84 (-21.21 % of base) : 21765.dasm - Microsoft.FSharp.Core.PrintfImpl+FloatAndDecimal:isNumber(System.Object):ubyte (FullOpts)
         -68 (-1.66 % of base) : 175889.dasm - System.Data.RBTree`1[System.__Canon]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
         -64 (-10.53 % of base) : 21766.dasm - Microsoft.FSharp.Core.PrintfImpl+FloatAndDecimal:isInteger(System.Object):ubyte (FullOpts)
         -64 (-8.89 % of base) : 21764.dasm - Microsoft.FSharp.Core.PrintfImpl+FloatAndDecimal:toFormattedString(System.String,System.Object):System.String (FullOpts)
         -64 (-1.61 % of base) : 175950.dasm - System.Data.RBTree`1[ubyte]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
         -56 (-19.44 % of base) : 228057.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.TypeTable+KeyPair`2[System.__Canon,System.Nullable`1[int]]:Equals(System.Object):ubyte:this (FullOpts)
         -52 (-35.14 % of base) : 222811.dasm - ILCompiler.IBC.IBCProfileParser+IBCBlobKey:Equals(System.Object):ubyte:this (FullOpts)
         -52 (-27.66 % of base) : 228061.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.TypeTable+KeyPair`2[ubyte,System.Nullable`1[int]]:Equals(System.Object):ubyte:this (FullOpts)
         -52 (-34.21 % of base) : 88411.dasm - Microsoft.Diagnostics.Tracing.CLRRuntimeActivityComputer+IdOfIncompleteAction:Equals(System.Object):ubyte:this (FullOpts)
         -52 (-26.00 % of base) : 89480.dasm - System.Speech.Synthesis.TtsEngine.FragmentState:Equals(System.Object):ubyte:this (FullOpts)
         -48 (-3.69 % of base) : 259953.dasm - System.Diagnostics.LegacyPropagator:TryExtractBaggage(System.String,byref):ubyte (FullOpts)
         -48 (-33.33 % of base) : 89502.dasm - System.Speech.Synthesis.TtsEngine.ContourPoint:Equals(System.Object):ubyte:this (FullOpts)
         -48 (-35.29 % of base) : 89516.dasm - System.Speech.Synthesis.TtsEngine.ProsodyNumber:Equals(System.Object):ubyte:this (FullOpts)
         -48 (-35.29 % of base) : 89446.dasm - System.Speech.Synthesis.TtsEngine.SpeechEventInfo:Equals(System.Object):ubyte:this (FullOpts)
         -48 (-27.91 % of base) : 215343.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
         -48 (-7.64 % of base) : 193308.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (FullOpts)
         -44 (-0.90 % of base) : 151121.dasm - Microsoft.Build.Shared.FileMatcher:GetFilesImplementation(System.String,System.String,System.Collections.Generic.List`1[System.String]):System.ValueTuple`3[System.String[],int,System.String]:this (FullOpts)
         -44 (-1.76 % of base) : 92574.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BuildAndVerifyUsingInfo(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,System.Collections.Generic.Dictionary`2[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,System.ValueTuple`3[Microsoft.CodeAnalysis.VisualBasic.BoundRValuePlaceholder,Microsoft.CodeAnalysis.VisualBasic.BoundExpression,Microsoft.CodeAnalysis.VisualBasic.BoundExpression]],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):this (FullOpts)

Top method regressions (percentages):
           8 (7.69 % of base) : 147779.dasm - Microsoft.Build.Internal.ProjectXmlUtilities:GetAttributeValue(Microsoft.Build.Construction.XmlElementWithLocation,System.String):System.String (FullOpts)
           8 (7.14 % of base) : 196914.dasm - System.Xml.DocumentXPathNavigator:get_ValueDocument():System.String:this (FullOpts)
           8 (4.65 % of base) : 254077.dasm - System.ComponentModel.TypeConverter+SimplePropertyDescriptor:ResetValue(System.Object):this (FullOpts)
          24 (4.14 % of base) : 37520.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:SetUpdatedSymbol(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)
          12 (3.90 % of base) : 185952.dasm - System.Net.Http.Headers.ObjectCollection`1[System.__Canon]:Contains(System.__Canon):ubyte:this (FullOpts)
          12 (3.61 % of base) : 197244.dasm - System.Xml.XmlDocument:get_SchemaInfo():System.Xml.Schema.IXmlSchemaInfo:this (FullOpts)
           4 (3.45 % of base) : 265776.dasm - System.DirectoryServices.ActiveDirectory.TrustRelationshipInformation:.ctor(System.DirectoryServices.ActiveDirectory.DirectoryContext,System.String,System.DirectoryServices.ActiveDirectory.TrustObject):this (FullOpts)
          32 (3.29 % of base) : 185571.dasm - System.Net.Http.Headers.HeaderUtilities:AreEqualCollections[System.__Canon](System.Net.Http.Headers.ObjectCollection`1[System.__Canon],System.Net.Http.Headers.ObjectCollection`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte (FullOpts)
          12 (3.19 % of base) : 100007.dasm - Microsoft.CodeAnalysis.VisualBasic.VBSemanticModel:GetSymbolInfo(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionRangeVariableSyntax,System.Threading.CancellationToken):Microsoft.CodeAnalysis.SymbolInfo:this (FullOpts)
           8 (2.70 % of base) : 144017.dasm - Newtonsoft.Json.Linq.JProperty:SetItem(int,Newtonsoft.Json.Linq.JToken):this (FullOpts)
           4 (2.56 % of base) : 205065.dasm - System.Xml.Serialization.SoapAttributeOverrides:get_Item(System.Type):System.Xml.Serialization.SoapAttributes:this (FullOpts)
           8 (2.35 % of base) : 173330.dasm - System.Xml.XmlBoundElement:CloneNode(ubyte):System.Xml.XmlNode:this (FullOpts)
          40 (2.25 % of base) : 94483.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.MetadataDecoder:SubstituteNoPiaLocalType(byref,ubyte,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,System.String,System.String,System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol):Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol (FullOpts)
           4 (1.96 % of base) : 112294.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.SyntaxNormalizer:VisitEventStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.EventStatementSyntax):Microsoft.CodeAnalysis.SyntaxNode:this (FullOpts)
           4 (1.96 % of base) : 112295.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.SyntaxNormalizer:VisitPropertyStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.PropertyStatementSyntax):Microsoft.CodeAnalysis.SyntaxNode:this (FullOpts)
           4 (1.96 % of base) : 176744.dasm - System.Data.SqlTypes.SqlDecimal:Equals(System.Data.SqlTypes.SqlDecimal):ubyte:this (FullOpts)
          12 (1.83 % of base) : 50583.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolatedStringToken>g__getOpenQuote|428_1(byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
          16 (1.81 % of base) : 184204.dasm - System.Net.Http.AuthenticationHelper+DigestResponse:GetNextValue(System.String,int,ubyte,byref):System.String (FullOpts)
          24 (1.74 % of base) : 129856.dasm - Microsoft.CodeAnalysis.Diagnostics.AsyncQueue`1[ubyte]:CompleteCore():ubyte:this (FullOpts)
          24 (1.74 % of base) : 161167.dasm - Microsoft.CodeAnalysis.Diagnostics.AsyncQueue`1[ubyte]:CompleteCore():ubyte:this (FullOpts)

Top method improvements (percentages):
         -48 (-35.29 % of base) : 89516.dasm - System.Speech.Synthesis.TtsEngine.ProsodyNumber:Equals(System.Object):ubyte:this (FullOpts)
         -48 (-35.29 % of base) : 89446.dasm - System.Speech.Synthesis.TtsEngine.SpeechEventInfo:Equals(System.Object):ubyte:this (FullOpts)
         -52 (-35.14 % of base) : 222811.dasm - ILCompiler.IBC.IBCProfileParser+IBCBlobKey:Equals(System.Object):ubyte:this (FullOpts)
         -52 (-34.21 % of base) : 88411.dasm - Microsoft.Diagnostics.Tracing.CLRRuntimeActivityComputer+IdOfIncompleteAction:Equals(System.Object):ubyte:this (FullOpts)
         -48 (-33.33 % of base) : 89502.dasm - System.Speech.Synthesis.TtsEngine.ContourPoint:Equals(System.Object):ubyte:this (FullOpts)
         -48 (-27.91 % of base) : 215343.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
         -52 (-27.66 % of base) : 228061.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.TypeTable+KeyPair`2[ubyte,System.Nullable`1[int]]:Equals(System.Object):ubyte:this (FullOpts)
        -296 (-26.15 % of base) : 227386.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal:IsDefault(System.Object):ubyte (FullOpts)
         -52 (-26.00 % of base) : 89480.dasm - System.Speech.Synthesis.TtsEngine.FragmentState:Equals(System.Object):ubyte:this (FullOpts)
        -276 (-25.18 % of base) : 21816.dasm - Microsoft.FSharp.Core.PrintfImpl+GenericNumber:isPositive(System.Object):ubyte (FullOpts)
         -36 (-21.95 % of base) : 290235.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
         -84 (-21.21 % of base) : 21765.dasm - Microsoft.FSharp.Core.PrintfImpl+FloatAndDecimal:isNumber(System.Object):ubyte (FullOpts)
         -56 (-19.44 % of base) : 228057.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.TypeTable+KeyPair`2[System.__Canon,System.Nullable`1[int]]:Equals(System.Object):ubyte:this (FullOpts)
         -36 (-18.75 % of base) : 257202.dasm - System.Data.Odbc.OdbcParameter:GetParameterScale(System.Object):ubyte:this (FullOpts)
         -24 (-17.14 % of base) : 205004.dasm - System.Xml.Serialization.XmlSchemaObjectComparer:Namespace(System.Xml.Schema.XmlSchemaObject):System.String (FullOpts)
         -32 (-14.55 % of base) : 21780.dasm - Microsoft.FSharp.Core.PrintfImpl+Integer:eliminateNative(System.Object):System.Object (FullOpts)
         -40 (-13.70 % of base) : 88404.dasm - Microsoft.Diagnostics.Tracing.CLRRuntimeActivityComputer+EventUID:Equals(System.Object):ubyte:this (FullOpts)
         -28 (-12.07 % of base) : 176389.dasm - System.Data.ExpressionParser:ScanDate():this (FullOpts)
         -64 (-10.53 % of base) : 21766.dasm - Microsoft.FSharp.Core.PrintfImpl+FloatAndDecimal:isInteger(System.Object):ubyte (FullOpts)
         -32 (-10.00 % of base) : 31229.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckConstantBounds(byte,Microsoft.CodeAnalysis.ConstantValue,byref):ubyte (FullOpts)


libraries_tests.run.windows.arm64.Release.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 329448404 (overridden on cmd)
Total bytes of diff: 329397068 (overridden on cmd)
Total bytes of delta: -51336 (-0.02 % of base)
    diff is a regression.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         284 : 89043.dasm (3.47 % of base)
         252 : 348414.dasm (4.71 % of base)
         236 : 158087.dasm (5.88 % of base)
         224 : 161688.dasm (3.65 % of base)
         212 : 88976.dasm (1.05 % of base)
         196 : 161684.dasm (1.66 % of base)
         188 : 618389.dasm (1.59 % of base)
         164 : 220313.dasm (2.10 % of base)
         164 : 601883.dasm (1.74 % of base)
         136 : 58430.dasm (1.31 % of base)
         120 : 110835.dasm (1.60 % of base)
         108 : 220652.dasm (3.04 % of base)
         108 : 284465.dasm (1.39 % of base)
          96 : 158772.dasm (1.01 % of base)
          88 : 327776.dasm (2.40 % of base)
          88 : 475012.dasm (3.57 % of base)
          84 : 220666.dasm (1.34 % of base)
          84 : 244807.dasm (1.94 % of base)
          84 : 220629.dasm (2.55 % of base)
          80 : 362736.dasm (4.17 % of base)

Top file improvements (bytes):
        -172 : 595957.dasm (-2.97 % of base)
        -160 : 86932.dasm (-2.99 % of base)
        -148 : 606436.dasm (-0.73 % of base)
        -148 : 606111.dasm (-3.67 % of base)
        -120 : 596274.dasm (-1.85 % of base)
        -112 : 164634.dasm (-1.20 % of base)
        -108 : 275145.dasm (-2.07 % of base)
        -108 : 597484.dasm (-1.09 % of base)
        -108 : 596841.dasm (-4.07 % of base)
        -104 : 415045.dasm (-14.61 % of base)
        -104 : 612559.dasm (-5.15 % of base)
        -104 : 58938.dasm (-0.98 % of base)
        -100 : 361889.dasm (-0.71 % of base)
         -96 : 430140.dasm (-0.96 % of base)
         -92 : 86610.dasm (-2.84 % of base)
         -88 : 86356.dasm (-3.08 % of base)
         -76 : 117041.dasm (-1.72 % of base)
         -76 : 91551.dasm (-1.08 % of base)
         -76 : 91556.dasm (-3.02 % of base)
         -72 : 523145.dasm (-1.44 % of base)

80 total files with Code Size differences (42 improved, 38 regressed), 20 unchanged.

Top method regressions (bytes):
         284 (3.47 % of base) : 89043.dasm - Microsoft.Interop.MarshallingInfoParser:GetMarshallingInfo(Microsoft.CodeAnalysis.ITypeSymbol,Microsoft.Interop.UseSiteAttributeProvider,int):Microsoft.Interop.MarshallingInfo:this (Tier1)
         252 (4.71 % of base) : 348414.dasm - System.Net.Mail.MailWriter:WriteHeaders(System.Collections.Specialized.NameValueCollection,ubyte):this (Tier1)
         236 (5.88 % of base) : 158087.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:EqualsComplicatedCases(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,int):ubyte:this (Tier1)
         224 (3.65 % of base) : 161688.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MemberSignatureComparer:HaveSameParameterTypes(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeMap,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeMap,int,int):ubyte (Tier1)
         212 (1.05 % of base) : 88976.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:MakeParameters[System.__Canon,System.__Canon,System.__Canon](Microsoft.CodeAnalysis.CSharp.Binder,System.__Canon,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon],byref,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,ubyte,ubyte,ubyte,int,System.Func`12[System.__Canon,System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,System.__Canon,ubyte,int,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,ubyte,ubyte,System.__Canon,System.__Canon],ubyte):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier1)
         196 (1.66 % of base) : 161684.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MemberSignatureComparer:Equals(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):ubyte:this (Tier1)
         188 (1.59 % of base) : 618389.dasm - Microsoft.Cci.MetadataWriter:SerializeMethodBodies(System.Reflection.Metadata.BlobBuilder,Microsoft.Cci.PdbWriter,byref):int[]:this (Tier1)
         164 (1.74 % of base) : 601883.dasm - Microsoft.Cci.MetadataWriter:PopulateMethodTableRows(int[]):this (Tier1-OSR)
         164 (2.10 % of base) : 220313.dasm - System.Configuration.ConfigurationElement:Unmerge(System.Configuration.ConfigurationElement,System.Configuration.ConfigurationElement,int):this (Tier1)
         136 (1.31 % of base) : 58430.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:MakeParameters[System.__Canon,System.__Canon,System.__Canon](Microsoft.CodeAnalysis.CSharp.Binder,System.__Canon,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon],byref,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,ubyte,ubyte,ubyte,int,System.Func`12[System.__Canon,System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,System.__Canon,ubyte,int,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,ubyte,ubyte,System.__Canon,System.__Canon],ubyte):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier1)
         120 (1.60 % of base) : 110835.dasm - Microsoft.Extensions.Configuration.Xml.Test.ConfigurationProviderXmlTest:SectionToXml(System.Text.StringBuilder,System.String,Microsoft.Extensions.Configuration.Test.ConfigurationProviderTestBase+TestSection):this (Tier1)
         108 (3.04 % of base) : 220652.dasm - System.Configuration.MgmtConfigurationRecord:WriteNewConfigDefinitions(System.Configuration.ConfigDefinitionUpdates,System.Configuration.XmlUtilWriter,int,int):this (Tier1)
         108 (1.39 % of base) : 284465.dasm - System.IO.Tests.Directory_GetFileSystemEntries_str_str:SearchPatternWithLeadingStar():this (Tier1)
          96 (1.01 % of base) : 158772.dasm - Microsoft.CodeAnalysis.SolutionCompilationState:AddDocumentsToMultipleProjects[System.__Canon](System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.DocumentInfo],System.Func`3[System.__Canon,System.__Canon,System.__Canon],System.Func`3[System.__Canon,System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.ValueTuple`2[System.__Canon,System.__Canon]]):Microsoft.CodeAnalysis.SolutionCompilationState:this (Tier1)
          88 (2.40 % of base) : 327776.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetNamedArgument[System.__Canon](System.String):System.__Canon:this (Tier1)
          88 (3.57 % of base) : 475012.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetNamedArgument[System.__Canon](System.String):System.__Canon:this (Tier1)
          84 (1.94 % of base) : 244807.dasm - BasicEventSourceTests.TestUtilities:CheckNoEventSourcesRunning(System.String) (Tier1)
          84 (2.55 % of base) : 220629.dasm - System.Configuration.BaseConfigurationRecord:FindChangedConfigurationStream():System.String:this (Tier1)
          84 (1.34 % of base) : 220666.dasm - System.Configuration.MgmtConfigurationRecord:UpdateRecords():this (Tier1)
          80 (4.17 % of base) : 362736.dasm - System.Net.Http.DiagnosticsHandler:.ctor(System.Net.Http.HttpMessageHandler,System.Diagnostics.DistributedContextPropagator,ubyte):this (Tier1)

Top method improvements (bytes):
        -172 (-2.97 % of base) : 595957.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckAttributeTypeViability(Microsoft.CodeAnalysis.CSharp.Symbol,ubyte,byref,byref):ubyte:this (Tier1)
        -160 (-2.99 % of base) : 86932.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckAttributeTypeViability(Microsoft.CodeAnalysis.CSharp.Symbol,ubyte,byref,byref):ubyte:this (Tier1)
        -148 (-0.73 % of base) : 606436.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,System.__Canon]:VisitBinaryLogicalOperatorChildren(Microsoft.CodeAnalysis.CSharp.BoundExpression):this (Tier1)
        -148 (-3.67 % of base) : 606111.dasm - Microsoft.CodeAnalysis.CSharp.ConversionsBase:ClassifyBuiltInConversion(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte,byref):Microsoft.CodeAnalysis.CSharp.Conversion:this (Tier1)
        -120 (-1.85 % of base) : 596274.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitArgumentsEvaluate(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitResult]):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitResult]:this (Tier1)
        -112 (-1.20 % of base) : 164634.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:SynthesizeDebuggableAttribute():Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedAttributeData:this (Tier1)
        -108 (-4.07 % of base) : 596841.dasm - Microsoft.CodeAnalysis.CSharp.ConversionsBase:ClassifyExplicitBuiltInOnlyConversion(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte,byref,ubyte):Microsoft.CodeAnalysis.CSharp.Conversion:this (Tier1)
        -108 (-2.07 % of base) : 275145.dasm - System.Globalization.Tests.CharUnicodeInfoTests:TestCasing():this (Tier1-OSR)
        -108 (-1.09 % of base) : 597484.dasm - System.Text.RegularExpressions.Generator.RegexGenerator:EmitScan(System.CodeDom.Compiler.IndentedTextWriter,System.Text.RegularExpressions.Generator.RegexGenerator+RegexMethod):System.ValueTuple`2[ubyte,ubyte] (Tier1)
        -104 (-5.15 % of base) : 612559.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this (Tier1)
        -104 (-0.98 % of base) : 58938.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindInvocationExpression(Microsoft.CodeAnalysis.CSharp.Syntax.InvocationExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier1)
        -104 (-14.61 % of base) : 415045.dasm - System.Text.EncodingTable:InternalGetCodePageFromName(System.String):int (Tier1)
        -100 (-0.71 % of base) : 361889.dasm - System.Net.Http.HttpConnection+<SendAsync>d__57:MoveNext():this (Tier1)
         -96 (-0.96 % of base) : 430140.dasm - System.Xml.Tests.TCReadSubtree:XmlReaderNameIsConsistentWhenReadingNamespaceNodeAttribute():int:this (Tier1)
         -92 (-2.84 % of base) : 86610.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SubstitutedNamedTypeSymbol:InterfacesNoUseSiteDiagnostics(Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]:this (Tier1)
         -88 (-3.08 % of base) : 86356.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol:InterfacesNoUseSiteDiagnostics(Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]:this (Tier1)
         -76 (-3.02 % of base) : 91556.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckValidScopedOverride[System.__Canon](Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.Symbols.ReportMismatchInParameterType`1[System.__Canon],System.__Canon,ubyte,ubyte):ubyte (Tier1)
         -76 (-1.08 % of base) : 91551.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodSymbol:PartialMethodChecks(Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag) (Tier1)
         -76 (-1.72 % of base) : 117041.dasm - Microsoft.Extensions.DependencyInjection.ServiceDescriptor:ToString():System.String:this (Tier1)
         -72 (-1.44 % of base) : 523145.dasm - System.Linq.Expressions.Expression:ValidateLambdaArgs(System.Type,byref,System.Collections.ObjectModel.ReadOnlyCollection`1[System.Linq.Expressions.ParameterExpression],System.String) (Tier1)

Top method regressions (percentages):
          16 (8.00 % of base) : 333362.dasm - System.Globalization.Ordinal:CompareStringIgnoreCase(byref,int,byref,int):int (Tier1)
          20 (7.69 % of base) : 164250.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:get_IsExternal():ubyte:this (Tier1)
          16 (6.78 % of base) : 233359.dasm - System.Diagnostics.Activity:set_Current(System.Diagnostics.Activity) (Tier1)
          16 (6.56 % of base) : 159968.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyDelaySignAttributeSetting():ubyte:this (Tier1)
          16 (6.56 % of base) : 599318.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyDelaySignAttributeSetting():ubyte:this (Tier1)
          16 (6.56 % of base) : 56485.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyDelaySignAttributeSetting():ubyte:this (Tier1)
          16 (6.56 % of base) : 85813.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyDelaySignAttributeSetting():ubyte:this (Tier1)
          16 (6.56 % of base) : 610543.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)
          16 (6.56 % of base) : 56537.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)
          16 (6.56 % of base) : 86708.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)
          16 (6.56 % of base) : 613308.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyVersionAttributeSetting():System.Version:this (Tier1)
          16 (6.56 % of base) : 86703.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyVersionAttributeSetting():System.Version:this (Tier1)
          16 (6.56 % of base) : 56532.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyVersionAttributeSetting():System.Version:this (Tier1)
          16 (6.45 % of base) : 614148.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyAlgorithmIdAttributeSetting():System.Nullable`1[int]:this (Tier1)
         236 (5.88 % of base) : 158087.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:EqualsComplicatedCases(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,int):ubyte:this (Tier1)
          16 (5.26 % of base) : 162970.dasm - Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass:MayRequireTracking(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol):ubyte:this (Tier1)
          12 (5.17 % of base) : 599128.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:IsDefaultValueTypeConstructor(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol):ubyte (Tier1)
         252 (4.71 % of base) : 348414.dasm - System.Net.Mail.MailWriter:WriteHeaders(System.Collections.Specialized.NameValueCollection,ubyte):this (Tier1)
          16 (4.60 % of base) : 599317.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_IsDelaySigned():ubyte:this (Tier1)
          16 (4.60 % of base) : 86717.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_IsDelaySigned():ubyte:this (Tier1)

Top method improvements (percentages):
         -36 (-32.14 % of base) : 408192.dasm - System.Boolean:Equals(System.Object):ubyte:this (Tier1)
         -36 (-32.14 % of base) : 51127.dasm - System.Boolean:Equals(System.Object):ubyte:this (Tier1)
         -36 (-32.14 % of base) : 154688.dasm - System.Boolean:Equals(System.Object):ubyte:this (Tier1)
         -36 (-32.14 % of base) : 83769.dasm - System.Boolean:Equals(System.Object):ubyte:this (Tier1)
         -36 (-32.14 % of base) : 428905.dasm - System.Byte:Equals(System.Object):ubyte:this (Tier1)
         -36 (-32.14 % of base) : 183913.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -36 (-32.14 % of base) : 220145.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -36 (-32.14 % of base) : 305790.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -36 (-32.14 % of base) : 405426.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -36 (-32.14 % of base) : 622792.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -36 (-32.14 % of base) : 329342.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -36 (-32.14 % of base) : 427060.dasm - System.Int64:Equals(System.Object):ubyte:this (Tier1)
         -36 (-32.14 % of base) : 428709.dasm - System.UInt16:Equals(System.Object):ubyte:this (Tier1)
         -44 (-28.95 % of base) : 415204.dasm - System.Double:Equals(System.Object):ubyte:this (Tier1)
         -48 (-27.91 % of base) : 411946.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (Tier1)
         -40 (-27.03 % of base) : 329853.dasm - System.Double:Equals(System.Object):ubyte:this (Tier1)
         -36 (-22.50 % of base) : 511950.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
         -36 (-22.50 % of base) : 495086.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
         -32 (-20.00 % of base) : 29511.dasm - System.Boolean:Equals(System.Object):ubyte:this (Instrumented Tier1)
         -32 (-20.00 % of base) : 101028.dasm - System.Char:Equals(System.Object):ubyte:this (Instrumented Tier1)


librariestestsnotieredcompilation.run.windows.arm64.Release.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 171564424 (overridden on cmd)
Total bytes of diff: 171560616 (overridden on cmd)
Total bytes of delta: -3808 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         100 : 3779.dasm (1.61 % of base)
          32 : 151078.dasm (3.33 % of base)
          32 : 154172.dasm (3.29 % of base)
          28 : 259640.dasm (0.46 % of base)
          28 : 312112.dasm (0.71 % of base)
          28 : 149659.dasm (1.16 % of base)
          28 : 268835.dasm (0.46 % of base)
          24 : 50732.dasm (4.14 % of base)
          24 : 149974.dasm (0.67 % of base)
          24 : 44868.dasm (4.14 % of base)
          24 : 54561.dasm (4.14 % of base)
          24 : 92822.dasm (0.78 % of base)
          20 : 190166.dasm (1.16 % of base)
          20 : 87154.dasm (0.45 % of base)
          20 : 22318.dasm (4.42 % of base)
          20 : 7281.dasm (0.28 % of base)
          16 : 152490.dasm (1.81 % of base)
          16 : 186258.dasm (0.50 % of base)
          16 : 51064.dasm (0.21 % of base)
          16 : 78964.dasm (2.31 % of base)

Top file improvements (bytes):
        -148 : 119099.dasm (-15.29 % of base)
        -148 : 25122.dasm (-16.23 % of base)
        -140 : 31339.dasm (-8.52 % of base)
        -136 : 311329.dasm (-2.56 % of base)
        -120 : 311408.dasm (-3.53 % of base)
         -72 : 39848.dasm (-4.09 % of base)
         -68 : 92076.dasm (-1.66 % of base)
         -64 : 92009.dasm (-1.61 % of base)
         -48 : 165997.dasm (-1.83 % of base)
         -48 : 97037.dasm (-27.91 % of base)
         -48 : 98866.dasm (-4.29 % of base)
         -48 : 172442.dasm (-7.64 % of base)
         -44 : 154216.dasm (-6.51 % of base)
         -44 : 156087.dasm (-6.51 % of base)
         -44 : 159378.dasm (-6.51 % of base)
         -40 : 203324.dasm (-32.26 % of base)
         -36 : 126222.dasm (-1.22 % of base)
         -36 : 35245.dasm (-1.92 % of base)
         -36 : 95833.dasm (-18.00 % of base)
         -36 : 31969.dasm (-21.95 % of base)

67 total files with Code Size differences (36 improved, 31 regressed), 20 unchanged.

Top method regressions (bytes):
         100 (1.61 % of base) : 3779.dasm - Microsoft.DotNet.XUnitExtensions.XunitParallelTheoryTestCaseRunner+<AfterTestCaseStartingAsync>d__9:MoveNext():this (FullOpts)
          32 (3.33 % of base) : 151078.dasm - System.Net.Http.Headers.HeaderUtilities:AreEqualCollections[System.__Canon](System.Net.Http.Headers.ObjectCollection`1[System.__Canon],System.Net.Http.Headers.ObjectCollection`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte (FullOpts)
          32 (3.29 % of base) : 154172.dasm - System.Net.Http.Headers.HeaderUtilities:AreEqualCollections[System.__Canon](System.Net.Http.Headers.ObjectCollection`1[System.__Canon],System.Net.Http.Headers.ObjectCollection`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte (FullOpts)
          28 (1.16 % of base) : 149659.dasm - System.MemoryTests.MemoryTests:MemoryArrayEquivalenceAndImplicitCastsAreEqual(ubyte[]) (FullOpts)
          28 (0.46 % of base) : 259640.dasm - System.Text.Json.Serialization.Tests.NumberHandlingTests+<<FloatingPointConstants_Pass>g__PerformFloatingPointSerialization|38_0>d:MoveNext():this (FullOpts)
          28 (0.46 % of base) : 268835.dasm - System.Text.Json.Serialization.Tests.NumberHandlingTests+<<FloatingPointConstants_Pass>g__PerformFloatingPointSerialization|38_0>d:MoveNext():this (FullOpts)
          28 (0.71 % of base) : 312112.dasm - System.Threading.Tasks.Tests.TaskRtTests:FromResult_KnownResults_Cached() (FullOpts)
          24 (4.14 % of base) : 50732.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:SetUpdatedSymbol(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)
          24 (4.14 % of base) : 44868.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:SetUpdatedSymbol(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)
          24 (4.14 % of base) : 54561.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:SetUpdatedSymbol(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)
          24 (0.67 % of base) : 149974.dasm - System.Buffers.Text.Tests.Base64DecoderUnitTests:DecodingInvalidBytesPadding(ubyte):this (FullOpts)
          24 (0.78 % of base) : 92822.dasm - System.Data.DataRelation:set_Nested(ubyte):this (FullOpts)
          20 (0.28 % of base) : 7281.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodSymbol:CheckModifiers(ubyte,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
          20 (0.45 % of base) : 87154.dasm - System.Drawing.ColorConverter:ConvertTo(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type):System.Object:this (FullOpts)
          20 (4.42 % of base) : 22318.dasm - System.Formats.Asn1.AsnDecoder:DecodeLength(System.ReadOnlySpan`1[ubyte],int,byref,byref):int (FullOpts)
          20 (1.16 % of base) : 190166.dasm - System.Reflection.TypeLoading.Assignability:CanCastTo(System.Type,System.Type,System.Reflection.TypeLoading.CoreTypes):ubyte (FullOpts)
          16 (0.21 % of base) : 51064.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodSymbolBase:CheckModifiers(ubyte,ubyte,ubyte,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
          16 (2.31 % of base) : 78964.dasm - System.ComponentModel.AttributeCollection:FromExisting(System.ComponentModel.AttributeCollection,System.Attribute[]):System.ComponentModel.AttributeCollection (FullOpts)
          16 (1.81 % of base) : 152490.dasm - System.Net.Http.AuthenticationHelper+DigestResponse:GetNextValue(System.String,int,ubyte,byref):System.String (FullOpts)
          16 (0.50 % of base) : 186258.dasm - System.Reflection.Emit.Tests.MethodBuilderDefineParameter:DefineParameter_TwoParameters():this (FullOpts)

Top method improvements (bytes):
        -148 (-16.23 % of base) : 25122.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal:IsDefault(System.Object):ubyte (FullOpts)
        -148 (-15.29 % of base) : 119099.dasm - Microsoft.FSharp.Core.PrintfImpl+GenericNumber:isPositive(System.Object):ubyte (FullOpts)
        -140 (-8.52 % of base) : 31339.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass+LocalState,System.__Canon]:VisitIsPatternExpression(Microsoft.CodeAnalysis.CSharp.BoundIsPatternExpression):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
        -136 (-2.56 % of base) : 311329.dasm - System.Threading.Tasks.Tests.TaskRtTests_Core:RunTaskCompletionSourceTests_SetException() (FullOpts)
        -120 (-3.53 % of base) : 311408.dasm - System.Threading.Tasks.Tests.TaskRtTests_Core:RunTaskCompletionSourceTests_CancellationTests() (FullOpts)
         -72 (-4.09 % of base) : 39848.dasm - System.Runtime.Serialization.Formatters.Binary.BinaryParser:Run():this (FullOpts)
         -68 (-1.66 % of base) : 92076.dasm - System.Data.RBTree`1[System.__Canon]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
         -64 (-1.61 % of base) : 92009.dasm - System.Data.RBTree`1[int]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
         -48 (-4.29 % of base) : 98866.dasm - System.Diagnostics.LegacyPropagator:TryExtractBaggage(System.String,byref):ubyte (FullOpts)
         -48 (-1.83 % of base) : 165997.dasm - System.Numerics.Tensors.Tests.ConvertTests:ConvertTruncatingImpl[byte,byte]() (FullOpts)
         -48 (-27.91 % of base) : 97037.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
         -48 (-7.64 % of base) : 172442.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (FullOpts)
         -44 (-6.51 % of base) : 154216.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
         -44 (-6.51 % of base) : 156087.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
         -44 (-6.51 % of base) : 159378.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
         -40 (-32.26 % of base) : 203324.dasm - System.Runtime.Serialization.Formatters.Tests.StructContainingArraysOfOtherStructs:Equals(System.Object):ubyte:this (FullOpts)
         -36 (-1.92 % of base) : 35245.dasm - FastExpressionCompiler.LightExpression.ExpressionCompiler+EmittingVisitor:TryEmitNestedLambda(FastExpressionCompiler.LightExpression.LambdaExpression,System.Collections.Generic.IReadOnlyList`1[FastExpressionCompiler.LightExpression.ParameterExpression],System.Reflection.Emit.ILGenerator,byref):ubyte (FullOpts)
         -36 (-18.00 % of base) : 95833.dasm - System.Data.Tests.DataRowTest2+Address:Equals(System.Object):ubyte:this (FullOpts)
         -36 (-1.22 % of base) : 126222.dasm - System.IO.Compression.Tests.zip_UpdateTests:Update_Comment_EntryName_Encoding_Internal(System.String,System.String,System.String,System.Text.Encoding,System.String,System.String) (FullOpts)
         -36 (-21.95 % of base) : 31969.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)

Top method regressions (percentages):
           8 (7.14 % of base) : 174016.dasm - System.Xml.DocumentXPathNavigator:get_ValueDocument():System.String:this (FullOpts)
          12 (6.00 % of base) : 178904.dasm - System.Xml.XmlDocument:get_SchemaInfo():System.Xml.Schema.IXmlSchemaInfo:this (FullOpts)
          20 (4.42 % of base) : 22318.dasm - System.Formats.Asn1.AsnDecoder:DecodeLength(System.ReadOnlySpan`1[ubyte],int,byref,byref):int (FullOpts)
          24 (4.14 % of base) : 50732.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:SetUpdatedSymbol(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)
          24 (4.14 % of base) : 44868.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:SetUpdatedSymbol(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)
          24 (4.14 % of base) : 54561.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:SetUpdatedSymbol(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)
          12 (3.90 % of base) : 153106.dasm - System.Net.Http.Headers.ObjectCollection`1[System.__Canon]:Contains(System.__Canon):ubyte:this (FullOpts)
          32 (3.33 % of base) : 151078.dasm - System.Net.Http.Headers.HeaderUtilities:AreEqualCollections[System.__Canon](System.Net.Http.Headers.ObjectCollection`1[System.__Canon],System.Net.Http.Headers.ObjectCollection`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte (FullOpts)
          32 (3.29 % of base) : 154172.dasm - System.Net.Http.Headers.HeaderUtilities:AreEqualCollections[System.__Canon](System.Net.Http.Headers.ObjectCollection`1[System.__Canon],System.Net.Http.Headers.ObjectCollection`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte (FullOpts)
          16 (2.31 % of base) : 78964.dasm - System.ComponentModel.AttributeCollection:FromExisting(System.ComponentModel.AttributeCollection,System.Attribute[]):System.ComponentModel.AttributeCollection (FullOpts)
           4 (2.17 % of base) : 97646.dasm - System.Data.EnumerableRowCollectionExtensionsTests+<>c:<Where_SuccessfullyFindRow>b__3_0(System.Data.DataRow):ubyte:this (FullOpts)
          16 (1.81 % of base) : 152490.dasm - System.Net.Http.AuthenticationHelper+DigestResponse:GetNextValue(System.String,int,ubyte,byref):System.String (FullOpts)
           4 (1.75 % of base) : 181600.dasm - OLEDB.Test.ModuleCore.CVariation:Execute():int:this (FullOpts)
         100 (1.61 % of base) : 3779.dasm - Microsoft.DotNet.XUnitExtensions.XunitParallelTheoryTestCaseRunner+<AfterTestCaseStartingAsync>d__9:MoveNext():this (FullOpts)
           8 (1.54 % of base) : 99555.dasm - System.Diagnostics.EventLogInternal:GetCachedEntryPos(int):int:this (FullOpts)
           4 (1.54 % of base) : 240575.dasm - System.Speech.Internal.SrgsCompiler.Arc:CompareContent(System.Speech.Internal.SrgsCompiler.Arc,System.Speech.Internal.SrgsCompiler.Arc):int (FullOpts)
           4 (1.32 % of base) : 91780.dasm - System.Data.Common.Tests.DbDataReaderTest:GetValueByColumnNameTest():this (FullOpts)
           4 (1.30 % of base) : 193535.dasm - System.Tests.BitConverterSpan:ToInt32(int,ubyte[]):this (FullOpts)
           4 (1.22 % of base) : 34847.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)
           4 (1.19 % of base) : 86208.dasm - System.ComponentModel.BindingList`1[System.__Canon]:AddNewCore():System.Object:this (FullOpts)

Top method improvements (percentages):
         -40 (-32.26 % of base) : 203324.dasm - System.Runtime.Serialization.Formatters.Tests.StructContainingArraysOfOtherStructs:Equals(System.Object):ubyte:this (FullOpts)
         -48 (-27.91 % of base) : 97037.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
         -36 (-21.95 % of base) : 31969.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
         -36 (-18.00 % of base) : 95833.dasm - System.Data.Tests.DataRowTest2+Address:Equals(System.Object):ubyte:this (FullOpts)
        -148 (-16.23 % of base) : 25122.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal:IsDefault(System.Object):ubyte (FullOpts)
        -148 (-15.29 % of base) : 119099.dasm - Microsoft.FSharp.Core.PrintfImpl+GenericNumber:isPositive(System.Object):ubyte (FullOpts)
         -28 (-12.07 % of base) : 94908.dasm - System.Data.ExpressionParser:ScanDate():this (FullOpts)
        -140 (-8.52 % of base) : 31339.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass+LocalState,System.__Canon]:VisitIsPatternExpression(Microsoft.CodeAnalysis.CSharp.BoundIsPatternExpression):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
         -48 (-7.64 % of base) : 172442.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (FullOpts)
         -16 (-7.55 % of base) : 149131.dasm - System.Globalization.FormatProvider+Number:RoundNumber(byref,int) (FullOpts)
         -44 (-6.51 % of base) : 154216.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
         -44 (-6.51 % of base) : 156087.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
         -44 (-6.51 % of base) : 159378.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
         -12 (-6.12 % of base) : 201272.dasm - System.Numerics.BigInteger:op_Multiply(System.Numerics.BigInteger,System.Numerics.BigInteger):System.Numerics.BigInteger (FullOpts)
         -16 (-5.56 % of base) : 52131.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckConstantBounds(byte,Microsoft.CodeAnalysis.ConstantValue,byref):ubyte (FullOpts)
         -16 (-5.56 % of base) : 8755.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckConstantBounds(byte,Microsoft.CodeAnalysis.ConstantValue,byref):ubyte (FullOpts)
         -16 (-5.56 % of base) : 46518.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckConstantBounds(byte,Microsoft.CodeAnalysis.ConstantValue,byref):ubyte (FullOpts)
         -12 (-4.76 % of base) : 118387.dasm - Microsoft.FSharp.Reflection.Impl:isNamedType(System.Type):ubyte (FullOpts)
         -16 (-4.49 % of base) : 34349.dasm - System.Xml.XmlElement:WriteElementTo(System.Xml.XmlWriter,System.Xml.XmlElement) (FullOpts)
         -12 (-4.35 % of base) : 173.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)


realworld.run.windows.arm64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 15902520 (overridden on cmd)
Total bytes of diff: 15902004 (overridden on cmd)
Total bytes of delta: -516 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          32 : 21698.dasm (0.54 % of base)
          24 : 18892.dasm (4.14 % of base)
          20 : 19933.dasm (0.28 % of base)
          16 : 29810.dasm (1.32 % of base)
          12 : 16619.dasm (0.82 % of base)
           8 : 21810.dasm (0.14 % of base)
           8 : 25280.dasm (0.23 % of base)
           8 : 16592.dasm (0.58 % of base)
           4 : 22081.dasm (0.06 % of base)
           4 : 4758.dasm (0.63 % of base)
           4 : 7617.dasm (0.03 % of base)
           4 : 19678.dasm (0.15 % of base)
           4 : 27943.dasm (0.89 % of base)

Top file improvements (bytes):
        -140 : 22888.dasm (-8.52 % of base)
         -52 : 7594.dasm (-40.62 % of base)
         -52 : 5989.dasm (-40.62 % of base)
         -52 : 6300.dasm (-40.62 % of base)
         -24 : 16802.dasm (-2.03 % of base)
         -20 : 15199.dasm (-1.82 % of base)
         -16 : 18439.dasm (-0.69 % of base)
         -16 : 667.dasm (-5.41 % of base)
         -16 : 20822.dasm (-5.56 % of base)
         -12 : 12757.dasm (-0.35 % of base)
         -12 : 415.dasm (-3.90 % of base)
         -12 : 22336.dasm (-1.58 % of base)
         -12 : 17893.dasm (-4.35 % of base)
         -12 : 19211.dasm (-4.00 % of base)
         -12 : 823.dasm (-0.22 % of base)
         -12 : 1709.dasm (-0.78 % of base)
         -12 : 19397.dasm (-0.36 % of base)
          -8 : 14398.dasm (-3.23 % of base)
          -8 : 22850.dasm (-0.92 % of base)
          -8 : 25247.dasm (-1.01 % of base)

39 total files with Code Size differences (26 improved, 13 regressed), 25 unchanged.

Top method regressions (bytes):
          32 (0.54 % of base) : 21698.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:BetterFunctionMember[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],ubyte,byref):int:this (FullOpts)
          24 (4.14 % of base) : 18892.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:SetUpdatedSymbol(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)
          20 (0.28 % of base) : 19933.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodSymbol:CheckModifiers(ubyte,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
          16 (1.32 % of base) : 29810.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
          12 (0.82 % of base) : 16619.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolation>g__getFormatAndCloseBrace|434_1(byref):System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationFormatClauseSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken]:this (FullOpts)
           8 (0.23 % of base) : 25280.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:BestTypeForLambdaReturns(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.ValueTuple`3[Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte]],Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Conversions,byref):Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations (FullOpts)
           8 (0.14 % of base) : 21810.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceEventSymbol:CheckModifiersAndType(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
           8 (0.58 % of base) : 16592.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseInterpolation(Microsoft.CodeAnalysis.CSharp.CSharpParseOptions,System.String,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer+Interpolation,int):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationSyntax (FullOpts)
           4 (0.03 % of base) : 7617.dasm - FSharp.Compiler.CheckExpressions:TcMethodApplication(ubyte,FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+TType]],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Expr],FSharp.Compiler.Text.Range,FSharp.Compiler.Text.Range,System.String,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+TType],FSharp.Compiler.AccessibilityLogic+AccessorDomain,FSharp.Compiler.TypedTreeOps+Mutates,ubyte,Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[FSharp.Compiler.Infos+MethInfo,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Infos+PropInfo]]],FSharp.Compiler.NameResolution+AfterResolution,FSharp.Compiler.TypedTree+ValUseFlag,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynExpr],FSharp.Compiler.ConstraintSolver+OverallTy,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+DelayedItem]):System.Tuple`2[System.Tuple`3[FSharp.Compiler.TypedTree+Expr,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.MethodCalls+CallerNamedArg`1[FSharp.Compiler.TypedTree+Expr]],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+DelayedItem]],FSharp.Compiler.CheckExpressions+UnscopedTyparEnv] (FullOpts)
           4 (0.06 % of base) : 22081.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckPropertyValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (FullOpts)
           4 (0.89 % of base) : 27943.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol+<GetSecurityAttributes>d__118:MoveNext():ubyte:this (FullOpts)
           4 (0.15 % of base) : 19678.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourcePropertyAccessorSymbol:CheckModifiers(Microsoft.CodeAnalysis.Location,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
           4 (0.63 % of base) : 4758.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)

Top method improvements (bytes):
        -140 (-8.52 % of base) : 22888.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass+LocalState,System.__Canon]:VisitIsPatternExpression(Microsoft.CodeAnalysis.CSharp.BoundIsPatternExpression):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
         -52 (-40.62 % of base) : 6300.dasm - System.Boolean:Equals(System.Object):ubyte:this (FullOpts)
         -52 (-40.62 % of base) : 5989.dasm - System.Byte:Equals(System.Object):ubyte:this (FullOpts)
         -52 (-40.62 % of base) : 7594.dasm - System.Int32:Equals(System.Object):ubyte:this (FullOpts)
         -24 (-2.03 % of base) : 16802.dasm - Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString:FromSource(System.String):Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString (FullOpts)
         -20 (-1.82 % of base) : 15199.dasm - Roslyn.Utilities.CommandLineUtilities:SplitCommandLineIntoArguments(System.ReadOnlySpan`1[ushort],ubyte,System.Text.StringBuilder,System.Collections.Generic.List`1[System.String],byref) (FullOpts)
         -16 (-5.56 % of base) : 20822.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckConstantBounds(byte,Microsoft.CodeAnalysis.ConstantValue,byref):ubyte (FullOpts)
         -16 (-0.69 % of base) : 18439.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetSpecialType(byte):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (FullOpts)
         -16 (-5.41 % of base) : 667.dasm - System.Number:RoundNumber(byref,int,ubyte) (FullOpts)
         -12 (-1.58 % of base) : 22336.dasm - Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass:LeaveParameter(Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.Location):this (FullOpts)
         -12 (-4.00 % of base) : 19211.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:this (FullOpts)
         -12 (-0.36 % of base) : 19397.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
         -12 (-0.35 % of base) : 12757.dasm - Microsoft.ML.Data.SchemaDefinition:Create(System.Type,int):Microsoft.ML.Data.SchemaDefinition (FullOpts)
         -12 (-0.22 % of base) : 823.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
         -12 (-3.90 % of base) : 415.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
         -12 (-4.35 % of base) : 17893.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
         -12 (-0.78 % of base) : 1709.dasm - System.UriHelper:UnescapeString(ulong,int,int,byref,ushort,ushort,ushort,int,System.UriParser,ubyte) (FullOpts)
          -8 (-0.92 % of base) : 22850.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<LearnFromEqualsMethod>g__isWellKnownEqualityMethodOrImplementation|213_1(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,int):ubyte (FullOpts)
          -8 (-0.29 % of base) : 20357.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourcePropertySymbolBase:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
          -8 (-1.01 % of base) : 25247.dasm - Microsoft.CodeAnalysis.CSharp.ValueSetFactory+NumericValueSet`2[int,Microsoft.CodeAnalysis.CSharp.ValueSetFactory+IntTC]:Union(Microsoft.CodeAnalysis.CSharp.IValueSet`1[int]):Microsoft.CodeAnalysis.CSharp.IValueSet`1[int]:this (FullOpts)

Top method regressions (percentages):
          24 (4.14 % of base) : 18892.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:SetUpdatedSymbol(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)
          16 (1.32 % of base) : 29810.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
           4 (0.89 % of base) : 27943.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol+<GetSecurityAttributes>d__118:MoveNext():ubyte:this (FullOpts)
          12 (0.82 % of base) : 16619.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolation>g__getFormatAndCloseBrace|434_1(byref):System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationFormatClauseSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken]:this (FullOpts)
           4 (0.63 % of base) : 4758.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
           8 (0.58 % of base) : 16592.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseInterpolation(Microsoft.CodeAnalysis.CSharp.CSharpParseOptions,System.String,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer+Interpolation,int):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationSyntax (FullOpts)
          32 (0.54 % of base) : 21698.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:BetterFunctionMember[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],ubyte,byref):int:this (FullOpts)
          20 (0.28 % of base) : 19933.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodSymbol:CheckModifiers(ubyte,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
           8 (0.23 % of base) : 25280.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:BestTypeForLambdaReturns(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.ValueTuple`3[Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte]],Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Conversions,byref):Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations (FullOpts)
           4 (0.15 % of base) : 19678.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourcePropertyAccessorSymbol:CheckModifiers(Microsoft.CodeAnalysis.Location,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
           8 (0.14 % of base) : 21810.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceEventSymbol:CheckModifiersAndType(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
           4 (0.06 % of base) : 22081.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckPropertyValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (FullOpts)
           4 (0.03 % of base) : 7617.dasm - FSharp.Compiler.CheckExpressions:TcMethodApplication(ubyte,FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+TType]],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Expr],FSharp.Compiler.Text.Range,FSharp.Compiler.Text.Range,System.String,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+TType],FSharp.Compiler.AccessibilityLogic+AccessorDomain,FSharp.Compiler.TypedTreeOps+Mutates,ubyte,Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[FSharp.Compiler.Infos+MethInfo,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Infos+PropInfo]]],FSharp.Compiler.NameResolution+AfterResolution,FSharp.Compiler.TypedTree+ValUseFlag,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynExpr],FSharp.Compiler.ConstraintSolver+OverallTy,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+DelayedItem]):System.Tuple`2[System.Tuple`3[FSharp.Compiler.TypedTree+Expr,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.MethodCalls+CallerNamedArg`1[FSharp.Compiler.TypedTree+Expr]],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+DelayedItem]],FSharp.Compiler.CheckExpressions+UnscopedTyparEnv] (FullOpts)

Top method improvements (percentages):
         -52 (-40.62 % of base) : 6300.dasm - System.Boolean:Equals(System.Object):ubyte:this (FullOpts)
         -52 (-40.62 % of base) : 5989.dasm - System.Byte:Equals(System.Object):ubyte:this (FullOpts)
         -52 (-40.62 % of base) : 7594.dasm - System.Int32:Equals(System.Object):ubyte:this (FullOpts)
        -140 (-8.52 % of base) : 22888.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass+LocalState,System.__Canon]:VisitIsPatternExpression(Microsoft.CodeAnalysis.CSharp.BoundIsPatternExpression):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
         -16 (-5.56 % of base) : 20822.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckConstantBounds(byte,Microsoft.CodeAnalysis.ConstantValue,byref):ubyte (FullOpts)
         -16 (-5.41 % of base) : 667.dasm - System.Number:RoundNumber(byref,int,ubyte) (FullOpts)
         -12 (-4.35 % of base) : 17893.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
         -12 (-4.00 % of base) : 19211.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:this (FullOpts)
         -12 (-3.90 % of base) : 415.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
          -8 (-3.23 % of base) : 14398.dasm - System.Globalization.CultureData:GetSeparator(System.String,System.String):System.String (FullOpts)
          -4 (-2.86 % of base) : 21974.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetSymbol[System.__Canon](Microsoft.CodeAnalysis.ISymbol):System.__Canon (FullOpts)
         -24 (-2.03 % of base) : 16802.dasm - Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString:FromSource(System.String):Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString (FullOpts)
         -20 (-1.82 % of base) : 15199.dasm - Roslyn.Utilities.CommandLineUtilities:SplitCommandLineIntoArguments(System.ReadOnlySpan`1[ushort],ubyte,System.Text.StringBuilder,System.Collections.Generic.List`1[System.String],byref) (FullOpts)
          -8 (-1.64 % of base) : 8708.dasm - System.Xml.Linq.XContainer+<GetDescendants>d__38:MoveNext():ubyte:this (FullOpts)
         -12 (-1.58 % of base) : 22336.dasm - Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass:LeaveParameter(Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.Location):this (FullOpts)
          -4 (-1.49 % of base) : 24122.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:IsFixedStatementExpression(Microsoft.CodeAnalysis.SyntaxNode):ubyte (FullOpts)
          -4 (-1.09 % of base) : 9232.dasm - FSharp.Compiler.Syntax.PrettyNaming:TryChopPropertyName(System.String):Microsoft.FSharp.Core.FSharpOption`1[System.String] (FullOpts)
          -8 (-1.01 % of base) : 25247.dasm - Microsoft.CodeAnalysis.CSharp.ValueSetFactory+NumericValueSet`2[int,Microsoft.CodeAnalysis.CSharp.ValueSetFactory+IntTC]:Union(Microsoft.CodeAnalysis.CSharp.IValueSet`1[int]):Microsoft.CodeAnalysis.CSharp.IValueSet`1[int]:this (FullOpts)
          -8 (-0.92 % of base) : 31973.dasm - System.Management.Automation.PowerShell+Worker:CreateRunspaceIfNeededAndDoWork(System.Management.Automation.Runspaces.Runspace,ubyte):this (FullOpts)
          -8 (-0.92 % of base) : 22850.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<LearnFromEqualsMethod>g__isWellKnownEqualityMethodOrImplementation|213_1(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,int):ubyte (FullOpts)


smoke_tests.nativeaot.windows.arm64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 3970716 (overridden on cmd)
Total bytes of diff: 3969000 (overridden on cmd)
Total bytes of delta: -1716 (-0.04 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          16 : 22466.dasm (3.48 % of base)
          16 : 8313.dasm (1.61 % of base)
          16 : 2566.dasm (1.61 % of base)
           8 : 14437.dasm (0.28 % of base)
           8 : 3421.dasm (0.28 % of base)
           8 : 4217.dasm (2.50 % of base)
           8 : 1000.dasm (2.50 % of base)
           4 : 11122.dasm (1.52 % of base)
           4 : 12893.dasm (1.54 % of base)
           4 : 12943.dasm (1.67 % of base)
           4 : 1192.dasm (1.22 % of base)
           4 : 12930.dasm (1.49 % of base)
           4 : 12986.dasm (1.64 % of base)
           4 : 5222.dasm (1.54 % of base)
           4 : 5870.dasm (1.52 % of base)
           4 : 7403.dasm (1.43 % of base)
           4 : 7409.dasm (1.67 % of base)
           4 : 7413.dasm (1.61 % of base)
           4 : 7472.dasm (1.64 % of base)
           4 : 8084.dasm (1.22 % of base)

Top file improvements (bytes):
         -40 : 12841.dasm (-40.00 % of base)
         -40 : 7164.dasm (-40.00 % of base)
         -40 : 8985.dasm (-28.57 % of base)
         -40 : 11263.dasm (-28.57 % of base)
         -40 : 12845.dasm (-40.00 % of base)
         -40 : 13258.dasm (-31.25 % of base)
         -40 : 6062.dasm (-28.57 % of base)
         -40 : 6080.dasm (-28.57 % of base)
         -40 : 7167.dasm (-40.00 % of base)
         -40 : 7743.dasm (-31.25 % of base)
         -36 : 110.dasm (-33.33 % of base)
         -36 : 22161.dasm (-29.03 % of base)
         -36 : 2817.dasm (-33.33 % of base)
         -36 : 2861.dasm (-33.33 % of base)
         -36 : 2890.dasm (-33.33 % of base)
         -36 : 3026.dasm (-33.33 % of base)
         -36 : 3567.dasm (-33.33 % of base)
         -36 : 4108.dasm (-33.33 % of base)
         -36 : 4127.dasm (-33.33 % of base)
         -36 : 949.dasm (-33.33 % of base)

63 total files with Code Size differences (34 improved, 29 regressed), 20 unchanged.

Top method regressions (bytes):
          16 (1.61 % of base) : 8313.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
          16 (1.61 % of base) : 2566.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
          16 (3.48 % of base) : 22466.dasm - System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.Threading.Tasks.VoidTaskResult]:GetStateMachineBox[ReflectionTest+TestCompilerGeneratedCode+<ReflectionInLambdaAsync>d__7](byref,byref):System.Runtime.CompilerServices.IAsyncStateMachineBox (FullOpts)
           8 (2.50 % of base) : 4217.dasm - System.Enum+<>c__64`1[uint]:<FormatNumberAsHex>b__64_0(System.Span`1[ushort],long):this (FullOpts)
           8 (2.50 % of base) : 1000.dasm - System.Enum+<>c__64`1[uint]:<FormatNumberAsHex>b__64_0(System.Span`1[ushort],long):this (FullOpts)
           8 (0.28 % of base) : 14437.dasm - System.Text.UnicodeEncoding:GetBytes(ulong,int,ulong,int,System.Text.EncoderNLS):int:this (FullOpts)
           8 (0.28 % of base) : 3421.dasm - System.Text.UnicodeEncoding:GetBytes(ulong,int,ulong,int,System.Text.EncoderNLS):int:this (FullOpts)
           4 (1.52 % of base) : 11122.dasm - Internal.Runtime.MethodTable:get_DynamicGcStaticsData():long:this (FullOpts)
           4 (1.52 % of base) : 5870.dasm - Internal.Runtime.MethodTable:get_DynamicGcStaticsData():long:this (FullOpts)
           4 (1.45 % of base) : 11124.dasm - Internal.Runtime.MethodTable:get_DynamicNonGcStaticsData():long:this (FullOpts)
           4 (1.64 % of base) : 12986.dasm - Internal.Runtime.MethodTable:get_DynamicTemplateType():ulong:this (FullOpts)
           4 (1.64 % of base) : 7472.dasm - Internal.Runtime.MethodTable:get_DynamicTemplateType():ulong:this (FullOpts)
           4 (1.54 % of base) : 12893.dasm - Internal.Runtime.MethodTable:get_FunctionPointerParameters():Internal.Runtime.MethodTableList:this (FullOpts)
           4 (1.54 % of base) : 5222.dasm - Internal.Runtime.MethodTable:get_FunctionPointerParameters():Internal.Runtime.MethodTableList:this (FullOpts)
           4 (1.54 % of base) : 1635.dasm - Internal.Runtime.MethodTable:get_FunctionPointerParameters():Internal.Runtime.MethodTableList:this (FullOpts)
           4 (1.54 % of base) : 7340.dasm - Internal.Runtime.MethodTable:get_FunctionPointerParameters():Internal.Runtime.MethodTableList:this (FullOpts)
           4 (1.22 % of base) : 1192.dasm - Internal.Runtime.MethodTable:get_GenericArguments():Internal.Runtime.MethodTableList:this (FullOpts)
           4 (1.22 % of base) : 8084.dasm - Internal.Runtime.MethodTable:get_GenericArguments():Internal.Runtime.MethodTableList:this (FullOpts)
           4 (1.22 % of base) : 13744.dasm - Internal.Runtime.MethodTable:get_GenericArguments():Internal.Runtime.MethodTableList:this (FullOpts)
           4 (1.49 % of base) : 12930.dasm - Internal.Runtime.MethodTable:set_DynamicGcStaticsData(long):this (FullOpts)

Top method improvements (bytes):
         -40 (-31.25 % of base) : 13258.dasm - Internal.TypeSystem.TypeSystemContext+GenericTypeInstanceKey:Equals(System.Object):ubyte:this (FullOpts)
         -40 (-31.25 % of base) : 7743.dasm - Internal.TypeSystem.TypeSystemContext+GenericTypeInstanceKey:Equals(System.Object):ubyte:this (FullOpts)
         -40 (-28.57 % of base) : 11263.dasm - System.Double:Equals(System.Object):ubyte:this (FullOpts)
         -40 (-28.57 % of base) : 6062.dasm - System.Double:Equals(System.Object):ubyte:this (FullOpts)
         -40 (-40.00 % of base) : 12841.dasm - System.RuntimeFieldHandle:Equals(System.Object):ubyte:this (FullOpts)
         -40 (-40.00 % of base) : 7164.dasm - System.RuntimeFieldHandle:Equals(System.Object):ubyte:this (FullOpts)
         -40 (-40.00 % of base) : 12845.dasm - System.RuntimeMethodHandle:Equals(System.Object):ubyte:this (FullOpts)
         -40 (-40.00 % of base) : 7167.dasm - System.RuntimeMethodHandle:Equals(System.Object):ubyte:this (FullOpts)
         -40 (-28.57 % of base) : 8985.dasm - System.Single:Equals(System.Object):ubyte:this (FullOpts)
         -40 (-28.57 % of base) : 6080.dasm - System.Single:Equals(System.Object):ubyte:this (FullOpts)
         -36 (-26.47 % of base) : 769.dasm - Internal.Reflection.Core.QScopeDefinition:Equals(System.Object):ubyte:this (FullOpts)
         -36 (-27.27 % of base) : 15865.dasm - Internal.Runtime.CompilerServices.FunctionPointerOps+GenericMethodDescriptorInfo:Equals(System.Object):ubyte:this (FullOpts)
         -36 (-33.33 % of base) : 2861.dasm - System.Boolean:Equals(System.Object):ubyte:this (FullOpts)
         -36 (-33.33 % of base) : 99.dasm - System.Boolean:Equals(System.Object):ubyte:this (FullOpts)
         -36 (-33.33 % of base) : 110.dasm - System.Byte:Equals(System.Object):ubyte:this (FullOpts)
         -36 (-33.33 % of base) : 2817.dasm - System.Byte:Equals(System.Object):ubyte:this (FullOpts)
         -36 (-33.33 % of base) : 3026.dasm - System.Char:Equals(System.Object):ubyte:this (FullOpts)
         -36 (-33.33 % of base) : 199.dasm - System.Char:Equals(System.Object):ubyte:this (FullOpts)
         -36 (-33.33 % of base) : 4108.dasm - System.Int16:Equals(System.Object):ubyte:this (FullOpts)
         -36 (-33.33 % of base) : 940.dasm - System.Int16:Equals(System.Object):ubyte:this (FullOpts)

Top method regressions (percentages):
          16 (3.48 % of base) : 22466.dasm - System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.Threading.Tasks.VoidTaskResult]:GetStateMachineBox[ReflectionTest+TestCompilerGeneratedCode+<ReflectionInLambdaAsync>d__7](byref,byref):System.Runtime.CompilerServices.IAsyncStateMachineBox (FullOpts)
           8 (2.50 % of base) : 4217.dasm - System.Enum+<>c__64`1[uint]:<FormatNumberAsHex>b__64_0(System.Span`1[ushort],long):this (FullOpts)
           8 (2.50 % of base) : 1000.dasm - System.Enum+<>c__64`1[uint]:<FormatNumberAsHex>b__64_0(System.Span`1[ushort],long):this (FullOpts)
           4 (1.67 % of base) : 12943.dasm - Internal.Runtime.MethodTable:SetGenericComposition(long):this (FullOpts)
           4 (1.67 % of base) : 7409.dasm - Internal.Runtime.MethodTable:SetGenericComposition(long):this (FullOpts)
           4 (1.64 % of base) : 12986.dasm - Internal.Runtime.MethodTable:get_DynamicTemplateType():ulong:this (FullOpts)
           4 (1.64 % of base) : 7472.dasm - Internal.Runtime.MethodTable:get_DynamicTemplateType():ulong:this (FullOpts)
           4 (1.61 % of base) : 7413.dasm - Internal.Runtime.MethodTable:set_DynamicTemplateType(ulong):this (FullOpts)
           4 (1.61 % of base) : 12944.dasm - Internal.Runtime.MethodTable:set_DynamicTemplateType(ulong):this (FullOpts)
          16 (1.61 % of base) : 8313.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
          16 (1.61 % of base) : 2566.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
           4 (1.54 % of base) : 12893.dasm - Internal.Runtime.MethodTable:get_FunctionPointerParameters():Internal.Runtime.MethodTableList:this (FullOpts)
           4 (1.54 % of base) : 5222.dasm - Internal.Runtime.MethodTable:get_FunctionPointerParameters():Internal.Runtime.MethodTableList:this (FullOpts)
           4 (1.54 % of base) : 1635.dasm - Internal.Runtime.MethodTable:get_FunctionPointerParameters():Internal.Runtime.MethodTableList:this (FullOpts)
           4 (1.54 % of base) : 7340.dasm - Internal.Runtime.MethodTable:get_FunctionPointerParameters():Internal.Runtime.MethodTableList:this (FullOpts)
           4 (1.52 % of base) : 11122.dasm - Internal.Runtime.MethodTable:get_DynamicGcStaticsData():long:this (FullOpts)
           4 (1.52 % of base) : 5870.dasm - Internal.Runtime.MethodTable:get_DynamicGcStaticsData():long:this (FullOpts)
           4 (1.49 % of base) : 12930.dasm - Internal.Runtime.MethodTable:set_DynamicGcStaticsData(long):this (FullOpts)
           4 (1.49 % of base) : 7399.dasm - Internal.Runtime.MethodTable:set_DynamicGcStaticsData(long):this (FullOpts)
           4 (1.45 % of base) : 11124.dasm - Internal.Runtime.MethodTable:get_DynamicNonGcStaticsData():long:this (FullOpts)

Top method improvements (percentages):
         -40 (-40.00 % of base) : 12841.dasm - System.RuntimeFieldHandle:Equals(System.Object):ubyte:this (FullOpts)
         -40 (-40.00 % of base) : 7164.dasm - System.RuntimeFieldHandle:Equals(System.Object):ubyte:this (FullOpts)
         -40 (-40.00 % of base) : 12845.dasm - System.RuntimeMethodHandle:Equals(System.Object):ubyte:this (FullOpts)
         -40 (-40.00 % of base) : 7167.dasm - System.RuntimeMethodHandle:Equals(System.Object):ubyte:this (FullOpts)
         -36 (-33.33 % of base) : 2861.dasm - System.Boolean:Equals(System.Object):ubyte:this (FullOpts)
         -36 (-33.33 % of base) : 99.dasm - System.Boolean:Equals(System.Object):ubyte:this (FullOpts)
         -36 (-33.33 % of base) : 110.dasm - System.Byte:Equals(System.Object):ubyte:this (FullOpts)
         -36 (-33.33 % of base) : 2817.dasm - System.Byte:Equals(System.Object):ubyte:this (FullOpts)
         -36 (-33.33 % of base) : 3026.dasm - System.Char:Equals(System.Object):ubyte:this (FullOpts)
         -36 (-33.33 % of base) : 199.dasm - System.Char:Equals(System.Object):ubyte:this (FullOpts)
         -36 (-33.33 % of base) : 4108.dasm - System.Int16:Equals(System.Object):ubyte:this (FullOpts)
         -36 (-33.33 % of base) : 940.dasm - System.Int16:Equals(System.Object):ubyte:this (FullOpts)
         -36 (-33.33 % of base) : 2890.dasm - System.Int32:Equals(System.Object):ubyte:this (FullOpts)
         -36 (-33.33 % of base) : 32.dasm - System.Int32:Equals(System.Object):ubyte:this (FullOpts)
         -36 (-33.33 % of base) : 4056.dasm - System.Int64:Equals(System.Object):ubyte:this (FullOpts)
         -36 (-33.33 % of base) : 925.dasm - System.Int64:Equals(System.Object):ubyte:this (FullOpts)
         -36 (-33.33 % of base) : 4127.dasm - System.SByte:Equals(System.Object):ubyte:this (FullOpts)
         -36 (-33.33 % of base) : 949.dasm - System.SByte:Equals(System.Object):ubyte:this (FullOpts)
         -36 (-33.33 % of base) : 4090.dasm - System.UInt16:Equals(System.Object):ubyte:this (FullOpts)
         -36 (-33.33 % of base) : 932.dasm - System.UInt16:Equals(System.Object):ubyte:this (FullOpts)



windows x64

Diffs are based on 2,511,303 contexts (997,391 MinOpts, 1,513,912 FullOpts).

MISSED contexts: base: 8 (0.00%), diff: 909 (0.04%)

Overall (-50,652 bytes)

Collection Base size (bytes) Diff size (bytes)
aspnet.run.windows.x64.checked.mch 47,018,038 -396
benchmarks.run.windows.x64.checked.mch 8,742,274 -542
benchmarks.run_pgo.windows.x64.checked.mch 36,139,006 -2,079
benchmarks.run_tiered.windows.x64.checked.mch 12,416,111 -231
coreclr_tests.run.windows.x64.checked.mch 393,037,195 -2,673
libraries.crossgen2.windows.x64.checked.mch 39,486,202 -945
libraries.pmi.windows.x64.checked.mch 61,661,352 -2,536
libraries_tests.run.windows.x64.Release.mch 280,818,413 -35,653
librariestestsnotieredcompilation.run.windows.x64.Release.mch 137,065,702 -1,065
realworld.run.windows.x64.checked.mch 14,130,688 -219
smoke_tests.nativeaot.windows.x64.checked.mch 5,083,011 -4,313

FullOpts (-50,652 bytes)

Collection Base size (bytes) Diff size (bytes)
aspnet.run.windows.x64.checked.mch 28,526,989 -396
benchmarks.run.windows.x64.checked.mch 8,741,911 -542
benchmarks.run_pgo.windows.x64.checked.mch 21,968,350 -2,079
benchmarks.run_tiered.windows.x64.checked.mch 3,316,872 -231
coreclr_tests.run.windows.x64.checked.mch 120,248,341 -2,673
libraries.crossgen2.windows.x64.checked.mch 39,485,015 -945
libraries.pmi.windows.x64.checked.mch 61,547,831 -2,536
libraries_tests.run.windows.x64.Release.mch 104,960,095 -35,653
librariestestsnotieredcompilation.run.windows.x64.Release.mch 126,446,596 -1,065
realworld.run.windows.x64.checked.mch 13,744,079 -219
smoke_tests.nativeaot.windows.x64.checked.mch 5,082,064 -4,313

Example diffs

aspnet.run.windows.x64.checked.mch

-41 (-49.40%) : 114478.dasm - System.Boolean:Equals(System.Object):ubyte:this (Tier1)

@@ -9,76 +9,52 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 3.00) byref -> rcx this single-def
-; V01 arg1 [V01,T00] ( 5, 4.50) ref -> rbx class-hnd single-def <System.Object> -; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V01 arg1 [V01,T00] ( 4, 4.00) ref -> rdx class-hnd single-def <System.Object> +;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> rax class-hnd "spilling QMark2" <System.Boolean>
-; V04 tmp2 [V04,T03] ( 2, 3.99) int -> rsi "impAppendStmt" -; V05 cse0 [V05,T04] ( 4, 2.50) long -> r8 "CSE - aggressive" -; V06 cse1 [V06,T05] ( 3, 2.00) long -> rdx "CSE - moderate"
+; V04 tmp2 [V04,T03] ( 2, 3.99) int -> rax "impAppendStmt" +; V05 cse0 [V05,T04] ( 2, 1 ) long -> r8 "CSE - moderate"
;
-; Lcl frame size = 40
+; Lcl frame size = 0
-G_M31030_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG - push rsi - push rbx - sub rsp, 40 - mov rbx, rdx - ; gcrRegs +[rbx] - ;; size=9 bbWeight=1 PerfScore 2.50 -G_M31030_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0002 {rcx}, byref, isz
+G_M31030_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG + ;; size=0 bbWeight=1 PerfScore 0.00 +G_M31030_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0002 {rcx}, byref, isz + ; gcrRegs +[rdx]
; byrRegs +[rcx]
- mov rax, rbx
+ mov rax, rdx
; gcrRegs +[rax] test rax, rax je SHORT G_M31030_IG04 ;; size=8 bbWeight=1 PerfScore 1.50
-G_M31030_IG03: ; bbWeight=0.50, gcrefRegs=0009 {rax rbx}, byrefRegs=0002 {rcx}, byref, isz - mov rdx, qword ptr [rax]
+G_M31030_IG03: ; bbWeight=0.50, gcrefRegs=0005 {rax rdx}, byrefRegs=0002 {rcx}, byref, isz
mov r8, 0xD1FFAB1E ; System.Boolean
- cmp rdx, r8
+ cmp qword ptr [rax], r8
je SHORT G_M31030_IG06
- ;; size=18 bbWeight=0.50 PerfScore 1.75 -G_M31030_IG04: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax rbx]
+ ;; size=15 bbWeight=0.50 PerfScore 2.12 +G_M31030_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[rax rdx]
; byrRegs -[rcx] xor eax, eax
- ;; size=2 bbWeight=0.25 PerfScore 0.06 -G_M31030_IG05: ; bbWeight=0.25, epilog, nogc, extend - add rsp, 40 - pop rbx - pop rsi
+ ;; size=2 bbWeight=1 PerfScore 0.25 +G_M31030_IG05: ; bbWeight=1, epilog, nogc, extend
ret
- ;; size=7 bbWeight=0.25 PerfScore 0.56 -G_M31030_IG06: ; bbWeight=1.00, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0002 {rcx}, gcvars, byref, isz - ; gcrRegs +[rbx] - ; byrRegs +[rcx] - movzx rsi, byte ptr [rcx] - cmp rdx, r8 - je SHORT G_M31030_IG08 - ;; size=9 bbWeight=1.00 PerfScore 3.24 -G_M31030_IG07: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - ; byrRegs -[rcx] - mov rdx, rbx
+ ;; size=1 bbWeight=1 PerfScore 1.00 +G_M31030_IG06: ; bbWeight=1.00, gcVars=0000000000000000 {}, gcrefRegs=0004 {rdx}, byrefRegs=0002 {rcx}, gcvars, byref
; gcrRegs +[rdx]
- mov rcx, r8 - call CORINFO_HELP_UNBOX - ; gcrRegs -[rdx] - ; gcr arg pop 0 - ;; size=11 bbWeight=0.50 PerfScore 0.75 -G_M31030_IG08: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - movzx rax, byte ptr [rbx+0x08] - cmp esi, eax
+ ; byrRegs +[rcx] + movzx rax, byte ptr [rcx] + movzx rcx, byte ptr [rdx+0x08] + ; byrRegs -[rcx] + cmp eax, ecx
sete al movzx rax, al
- ;; size=12 bbWeight=1.00 PerfScore 3.49 -G_M31030_IG09: ; bbWeight=1.00, epilog, nogc, extend - add rsp, 40 - pop rbx - pop rsi
+ ;; size=15 bbWeight=1.00 PerfScore 5.49 +G_M31030_IG07: ; bbWeight=1.00, epilog, nogc, extend
ret
- ;; size=7 bbWeight=1.00 PerfScore 2.24
+ ;; size=1 bbWeight=1.00 PerfScore 1.00
-; Total bytes of code 83, prolog size 6, PerfScore 16.10, instruction count 30, allocated bytes for code 83 (MethodHash=c96e86c9) for method System.Boolean:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 42, prolog size 0, PerfScore 11.36, instruction count 14, allocated bytes for code 42 (MethodHash=c96e86c9) for method System.Boolean:Equals(System.Object):ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -86,11 +62,8 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x06 - CountOfUnwindCodes: 3
+ SizeOfProlog : 0x00 + CountOfUnwindCodes: 0
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x06 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28 - CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)

-41 (-49.40%) : 101179.dasm - System.Boolean:Equals(System.Object):ubyte:this (Tier1)

@@ -9,74 +9,52 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 3 ) byref -> rcx this single-def
-; V01 arg1 [V01,T00] ( 5, 4.50) ref -> rbx class-hnd single-def <System.Object> -; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" -; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> rdx class-hnd "spilling QMark2" <System.Boolean> -; V04 tmp2 [V04,T03] ( 2, 4 ) int -> rsi "impAppendStmt" -; V05 cse0 [V05,T04] ( 4, 2.50) long -> rax "CSE - aggressive" -; V06 cse1 [V06,T05] ( 3, 2 ) long -> rdx "CSE - aggressive"
+; V01 arg1 [V01,T00] ( 4, 4 ) ref -> rdx class-hnd single-def <System.Object> +;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" +; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> rax class-hnd "spilling QMark2" <System.Boolean> +; V04 tmp2 [V04,T03] ( 2, 4 ) int -> rax "impAppendStmt" +; V05 cse0 [V05,T04] ( 2, 1 ) long -> r8 "CSE - moderate"
;
-; Lcl frame size = 40
+; Lcl frame size = 0
G_M31030_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- push rsi - push rbx - sub rsp, 40 - mov rbx, rdx - ; gcrRegs +[rbx] - ;; size=9 bbWeight=1 PerfScore 2.50 -G_M31030_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0002 {rcx}, byref, isz
+ ;; size=0 bbWeight=1 PerfScore 0.00 +G_M31030_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0002 {rcx}, byref, isz + ; gcrRegs +[rdx]
; byrRegs +[rcx]
- mov rdx, rbx - ; gcrRegs +[rdx] - test rdx, rdx - je SHORT G_M31030_IG08
+ mov rax, rdx + ; gcrRegs +[rax] + test rax, rax + je SHORT G_M31030_IG04
;; size=8 bbWeight=1 PerfScore 1.50
-G_M31030_IG03: ; bbWeight=0.50, gcrefRegs=000C {rdx rbx}, byrefRegs=0002 {rcx}, byref, isz - mov rdx, qword ptr [rdx] - ; gcrRegs -[rdx] - mov rax, 0xD1FFAB1E ; System.Boolean - cmp rdx, rax - jne SHORT G_M31030_IG08 - ;; size=18 bbWeight=0.50 PerfScore 1.75 -G_M31030_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0002 {rcx}, byref, isz - movzx rsi, byte ptr [rcx] - cmp rdx, rax
+G_M31030_IG03: ; bbWeight=0.50, gcrefRegs=0005 {rax rdx}, byrefRegs=0002 {rcx}, byref, isz + mov r8, 0xD1FFAB1E ; System.Boolean + cmp qword ptr [rax], r8
je SHORT G_M31030_IG06
- ;; size=9 bbWeight=1 PerfScore 3.25 -G_M31030_IG05: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ;; size=15 bbWeight=0.50 PerfScore 2.12 +G_M31030_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[rax rdx]
; byrRegs -[rcx]
- mov rdx, rbx
+ xor eax, eax + ;; size=2 bbWeight=1 PerfScore 0.25 +G_M31030_IG05: ; bbWeight=1, epilog, nogc, extend + ret + ;; size=1 bbWeight=1 PerfScore 1.00 +G_M31030_IG06: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0004 {rdx}, byrefRegs=0002 {rcx}, gcvars, byref
; gcrRegs +[rdx]
- mov rcx, rax - call CORINFO_HELP_UNBOX - ; gcrRegs -[rdx] - ; gcr arg pop 0 - ;; size=11 bbWeight=0.50 PerfScore 0.75 -G_M31030_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - movzx rax, byte ptr [rbx+0x08] - cmp esi, eax
+ ; byrRegs +[rcx] + movzx rax, byte ptr [rcx] + movzx rcx, byte ptr [rdx+0x08] + ; byrRegs -[rcx] + cmp eax, ecx
sete al movzx rax, al
- ;; size=12 bbWeight=1 PerfScore 3.50
+ ;; size=15 bbWeight=1 PerfScore 5.50
G_M31030_IG07: ; bbWeight=1, epilog, nogc, extend
- add rsp, 40 - pop rbx - pop rsi
ret
- ;; size=7 bbWeight=1 PerfScore 2.25 -G_M31030_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[rbx] - xor eax, eax - ;; size=2 bbWeight=0 PerfScore 0.00 -G_M31030_IG09: ; bbWeight=0, epilog, nogc, extend - add rsp, 40 - pop rbx - pop rsi - ret - ;; size=7 bbWeight=0 PerfScore 0.00
+ ;; size=1 bbWeight=1 PerfScore 1.00
-; Total bytes of code 83, prolog size 6, PerfScore 15.50, instruction count 30, allocated bytes for code 83 (MethodHash=c96e86c9) for method System.Boolean:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 42, prolog size 0, PerfScore 11.38, instruction count 14, allocated bytes for code 42 (MethodHash=c96e86c9) for method System.Boolean:Equals(System.Object):ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -84,11 +62,8 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x06 - CountOfUnwindCodes: 3
+ SizeOfProlog : 0x00 + CountOfUnwindCodes: 0
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x06 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28 - CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)

-41 (-49.40%) : 128844.dasm - System.Boolean:Equals(System.Object):ubyte:this (Tier1)

@@ -9,74 +9,52 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 3 ) byref -> rcx this single-def
-; V01 arg1 [V01,T00] ( 5, 4.50) ref -> rbx class-hnd single-def <System.Object> -; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" -; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> rdx class-hnd "spilling QMark2" <System.Boolean> -; V04 tmp2 [V04,T03] ( 2, 4 ) int -> rsi "impAppendStmt" -; V05 cse0 [V05,T04] ( 4, 2.50) long -> rax "CSE - aggressive" -; V06 cse1 [V06,T05] ( 3, 2 ) long -> rdx "CSE - aggressive"
+; V01 arg1 [V01,T00] ( 4, 4 ) ref -> rdx class-hnd single-def <System.Object> +;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" +; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> rax class-hnd "spilling QMark2" <System.Boolean> +; V04 tmp2 [V04,T03] ( 2, 4 ) int -> rax "impAppendStmt" +; V05 cse0 [V05,T04] ( 2, 1 ) long -> r8 "CSE - moderate"
;
-; Lcl frame size = 40
+; Lcl frame size = 0
G_M31030_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- push rsi - push rbx - sub rsp, 40 - mov rbx, rdx - ; gcrRegs +[rbx] - ;; size=9 bbWeight=1 PerfScore 2.50 -G_M31030_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0002 {rcx}, byref, isz
+ ;; size=0 bbWeight=1 PerfScore 0.00 +G_M31030_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0002 {rcx}, byref, isz + ; gcrRegs +[rdx]
; byrRegs +[rcx]
- mov rdx, rbx - ; gcrRegs +[rdx] - test rdx, rdx - je SHORT G_M31030_IG08
+ mov rax, rdx + ; gcrRegs +[rax] + test rax, rax + je SHORT G_M31030_IG04
;; size=8 bbWeight=1 PerfScore 1.50
-G_M31030_IG03: ; bbWeight=0.50, gcrefRegs=000C {rdx rbx}, byrefRegs=0002 {rcx}, byref, isz - mov rdx, qword ptr [rdx] - ; gcrRegs -[rdx] - mov rax, 0xD1FFAB1E ; System.Boolean - cmp rdx, rax - jne SHORT G_M31030_IG08 - ;; size=18 bbWeight=0.50 PerfScore 1.75 -G_M31030_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0002 {rcx}, byref, isz - movzx rsi, byte ptr [rcx] - cmp rdx, rax
+G_M31030_IG03: ; bbWeight=0.50, gcrefRegs=0005 {rax rdx}, byrefRegs=0002 {rcx}, byref, isz + mov r8, 0xD1FFAB1E ; System.Boolean + cmp qword ptr [rax], r8
je SHORT G_M31030_IG06
- ;; size=9 bbWeight=1 PerfScore 3.25 -G_M31030_IG05: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ;; size=15 bbWeight=0.50 PerfScore 2.12 +G_M31030_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[rax rdx]
; byrRegs -[rcx]
- mov rdx, rbx
+ xor eax, eax + ;; size=2 bbWeight=1 PerfScore 0.25 +G_M31030_IG05: ; bbWeight=1, epilog, nogc, extend + ret + ;; size=1 bbWeight=1 PerfScore 1.00 +G_M31030_IG06: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0004 {rdx}, byrefRegs=0002 {rcx}, gcvars, byref
; gcrRegs +[rdx]
- mov rcx, rax - call CORINFO_HELP_UNBOX - ; gcrRegs -[rdx] - ; gcr arg pop 0 - ;; size=11 bbWeight=0.50 PerfScore 0.75 -G_M31030_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - movzx rax, byte ptr [rbx+0x08] - cmp esi, eax
+ ; byrRegs +[rcx] + movzx rax, byte ptr [rcx] + movzx rcx, byte ptr [rdx+0x08] + ; byrRegs -[rcx] + cmp eax, ecx
sete al movzx rax, al
- ;; size=12 bbWeight=1 PerfScore 3.50
+ ;; size=15 bbWeight=1 PerfScore 5.50
G_M31030_IG07: ; bbWeight=1, epilog, nogc, extend
- add rsp, 40 - pop rbx - pop rsi
ret
- ;; size=7 bbWeight=1 PerfScore 2.25 -G_M31030_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[rbx] - xor eax, eax - ;; size=2 bbWeight=0 PerfScore 0.00 -G_M31030_IG09: ; bbWeight=0, epilog, nogc, extend - add rsp, 40 - pop rbx - pop rsi - ret - ;; size=7 bbWeight=0 PerfScore 0.00
+ ;; size=1 bbWeight=1 PerfScore 1.00
-; Total bytes of code 83, prolog size 6, PerfScore 15.50, instruction count 30, allocated bytes for code 83 (MethodHash=c96e86c9) for method System.Boolean:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 42, prolog size 0, PerfScore 11.38, instruction count 14, allocated bytes for code 42 (MethodHash=c96e86c9) for method System.Boolean:Equals(System.Object):ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -84,11 +62,8 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x06 - CountOfUnwindCodes: 3
+ SizeOfProlog : 0x00 + CountOfUnwindCodes: 0
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x06 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28 - CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)

+24 (+6.76%) : 114639.dasm - System.ReadOnlyMemory`1[ushort]:ToString():System.String:this (Tier1)

@@ -9,249 +9,264 @@ ; 3 inlinees with PGO data; 8 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 8, 5 ) byref -> rbx this single-def
+; V00 this [V00,T01] ( 8, 6 ) byref -> rbx this single-def
; V01 loc0 [V01,T03] ( 7, 4.48) ref -> rsi class-hnd exact <System.String>
-; V02 loc1 [V02 ] ( 3, 0 ) struct (16) [rsp+0x30] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.ReadOnlySpan`1[ushort]>
+; V02 loc1 [V02 ] ( 3, 0 ) struct (16) [rsp+0x38] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.ReadOnlySpan`1[ushort]>
;* V03 loc2 [V03 ] ( 0, 0 ) struct (40) zero-ref do-not-enreg[S] ld-addr-op <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler> ; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V05 tmp1 [V05,T05] ( 2, 4 ) ref -> rsi single-def "CASTCLASS eval op1" ;* V06 tmp2 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.String> ;* V07 tmp3 [V07 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-; V08 tmp4 [V08,T13] ( 7, 0 ) byref -> rdi "Inline stloc first use temp" -; V09 tmp5 [V09,T14] ( 6, 0 ) int -> r14 "Inline stloc first use temp" -; V10 tmp6 [V10,T12] ( 9, 0 ) ref -> rcx class-hnd single-def "Inline stloc first use temp" <System.Object>
+; V08 tmp4 [V08,T13] ( 7, 1 ) byref -> rdi "Inline stloc first use temp" +; V09 tmp5 [V09,T14] ( 6, 1 ) int -> rbp "Inline stloc first use temp" +; V10 tmp6 [V10,T10] ( 9, 2 ) ref -> rcx class-hnd single-def "Inline stloc first use temp" <System.Object>
;* V11 tmp7 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V12 tmp8 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>>
-; V13 tmp9 [V13 ] ( 3, 0 ) struct (16) [rsp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]> -; V14 tmp10 [V14,T15] ( 3, 0 ) long -> rbp "Inline stloc first use temp" -; V15 tmp11 [V15,T16] ( 3, 0 ) int -> rbx "Inline stloc first use temp"
+; V13 tmp9 [V13 ] ( 3, 0 ) struct (16) [rsp+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]> +; V14 tmp10 [V14,T15] ( 3, 0 ) long -> r14 "Inline stloc first use temp" +; V15 tmp11 [V15,T16] ( 3, 0 ) int -> r15 "Inline stloc first use temp"
;* V16 tmp12 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "updating class info" <<unknown class>> ;* V17 tmp13 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>> ;* V18 tmp14 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "updating class info" <System.String> ;* V19 tmp15 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.String> ; V20 tmp16 [V20,T17] ( 2, 0 ) byref -> rdx single-def "Inlining Arg" ;* V21 tmp17 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
-; V22 tmp18 [V22,T10] ( 4, 2 ) ref -> registers class-hnd "Inline return value spill temp" <System.String> -; V23 tmp19 [V23,T02] ( 4, 5.76) int -> rdi "Inlining Arg" -; V24 tmp20 [V24,T00] ( 7, 11.47) int -> rbp "Inlining Arg"
+; V22 tmp18 [V22,T11] ( 4, 2 ) ref -> registers class-hnd "Inline return value spill temp" <System.String> +; V23 tmp19 [V23,T02] ( 4, 5.76) int -> r14 "Inlining Arg" +; V24 tmp20 [V24,T00] ( 7, 11.47) int -> r15 "Inlining Arg"
;* V25 tmp21 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.String>
-; V26 tmp22 [V26,T06] ( 4, 3.52) ref -> rbx class-hnd exact single-def "Inline stloc first use temp" <System.String> -; V27 tmp23 [V27,T11] ( 2, 1.76) long -> r8 "Inline stloc first use temp"
+; V26 tmp22 [V26,T06] ( 4, 3.52) ref -> rdi class-hnd exact single-def "Inline stloc first use temp" <System.String> +; V27 tmp23 [V27,T12] ( 2, 1.76) long -> r8 "Inline stloc first use temp"
; V28 tmp24 [V28,T07] ( 3, 3.52) byref -> rcx single-def "Inlining Arg" ; V29 tmp25 [V29,T08] ( 3, 3.52) byref -> rdx single-def "Inlining Arg" ; V30 tmp26 [V30,T04] ( 3, 4.39) long -> r8 "spilling arg"
-; V31 tmp27 [V31 ] ( 2, 0 ) byref -> [rsp+0x30] do-not-enreg[X] addr-exposed "field V02._reference (fldOffset=0x0)" P-DEP -; V32 tmp28 [V32 ] ( 2, 0 ) int -> [rsp+0x38] do-not-enreg[X] addr-exposed "field V02._length (fldOffset=0x8)" P-DEP
+; V31 tmp27 [V31 ] ( 2, 0 ) byref -> [rsp+0x38] do-not-enreg[X] addr-exposed "field V02._reference (fldOffset=0x0)" P-DEP +; V32 tmp28 [V32 ] ( 2, 0 ) int -> [rsp+0x40] do-not-enreg[X] addr-exposed "field V02._length (fldOffset=0x8)" P-DEP
;* V33 tmp29 [V33 ] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP ;* V34 tmp30 [V34 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP ; V35 tmp31 [V35,T18] ( 2, 0 ) byref -> rdi single-def "field V11._reference (fldOffset=0x0)" P-INDEP
-; V36 tmp32 [V36,T20] ( 2, 0 ) int -> r14 "field V11._length (fldOffset=0x8)" P-INDEP -; V37 tmp33 [V37 ] ( 2, 0 ) byref -> [rsp+0x20] do-not-enreg[X] addr-exposed "field V13._reference (fldOffset=0x0)" P-DEP -; V38 tmp34 [V38 ] ( 2, 0 ) int -> [rsp+0x28] do-not-enreg[X] addr-exposed "field V13._length (fldOffset=0x8)" P-DEP
+; V36 tmp32 [V36,T20] ( 2, 0 ) int -> rbp "field V11._length (fldOffset=0x8)" P-INDEP +; V37 tmp33 [V37 ] ( 2, 0 ) byref -> [rsp+0x28] do-not-enreg[X] addr-exposed "field V13._reference (fldOffset=0x0)" P-DEP +; V38 tmp34 [V38 ] ( 2, 0 ) int -> [rsp+0x30] do-not-enreg[X] addr-exposed "field V13._length (fldOffset=0x8)" P-DEP
; V39 tmp35 [V39,T19] ( 2, 0 ) byref -> rdi single-def "field V21._reference (fldOffset=0x0)" P-INDEP ;* V40 tmp36 [V40 ] ( 0, 0 ) int -> zero-ref "field V21._length (fldOffset=0x8)" P-INDEP
-; V41 cse0 [V41,T09] ( 5, 2.98) int -> r14 multi-def "CSE - aggressive"
+; V41 cse0 [V41,T09] ( 5, 2.98) int -> rbp multi-def "CSE - aggressive"
;
-; Lcl frame size = 64
+; Lcl frame size = 72
G_M45259_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+ push r15
push r14 push rdi push rsi push rbp push rbx
- sub rsp, 64
+ sub rsp, 72 + xor eax, eax + mov qword ptr [rsp+0x28], rax
vxorps xmm4, xmm4, xmm4
- vmovdqu ymmword ptr [rsp+0x20], ymm4
+ vmovdqa xmmword ptr [rsp+0x30], xmm4 + mov qword ptr [rsp+0x40], rax
mov rbx, rcx ; byrRegs +[rbx]
- ;; size=23 bbWeight=1 PerfScore 7.83 -G_M45259_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
+ ;; size=37 bbWeight=1 PerfScore 11.08 +G_M45259_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
mov rsi, gword ptr [rbx] ; gcrRegs +[rsi] test rsi, rsi
- je G_M45259_IG14 - ;; size=12 bbWeight=1 PerfScore 3.25 -G_M45259_IG03: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref
+ je SHORT G_M45259_IG04 + ;; size=8 bbWeight=1 PerfScore 3.25 +G_M45259_IG03: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
mov rcx, 0xD1FFAB1E ; System.String cmp qword ptr [rsi], rcx
- jne G_M45259_IG14 - ;; size=19 bbWeight=0.50 PerfScore 2.12 -G_M45259_IG04: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz - mov edi, dword ptr [rbx+0x08] - mov ebp, dword ptr [rbx+0x0C] - mov ecx, edi - mov eax, ebp - add rcx, rax - mov r14d, dword ptr [rsi+0x08] - mov eax, r14d - cmp rcx, rax - ja G_M45259_IG22 - test ebp, ebp - je SHORT G_M45259_IG13 - ;; size=33 bbWeight=1 PerfScore 9.50 -G_M45259_IG05: ; bbWeight=0.98, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz - ; byrRegs -[rbx] - cmp r14d, ebp - je SHORT G_M45259_IG12 - ;; size=5 bbWeight=0.98 PerfScore 1.22 -G_M45259_IG06: ; bbWeight=0.88, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz - mov ecx, ebp - call <unknown method> - ; gcrRegs +[rax] - ; gcr arg pop 0 - mov rbx, rax - ; gcrRegs +[rbx] - mov r8d, ebp - cmp byte ptr [rbx], bl - lea rcx, bword ptr [rbx+0x0C] - ; byrRegs +[rcx] - mov edx, edi - lea rdx, bword ptr [rsi+2*rdx+0x0C] - ; byrRegs +[rdx] - add r8, r8 - cmp r8, 6 - jne SHORT G_M45259_IG08 - ;; size=35 bbWeight=0.88 PerfScore 7.03 -G_M45259_IG07: ; bbWeight=0.44, gcrefRegs=0008 {rbx}, byrefRegs=0006 {rcx rdx}, byref, isz - ; gcrRegs -[rax rsi] - mov eax, dword ptr [rdx] - mov r8d, dword ptr [rdx+0x02] - mov dword ptr [rcx], eax - mov dword ptr [rcx+0x02], r8d - jmp SHORT G_M45259_IG09 - ;; size=14 bbWeight=0.44 PerfScore 3.52 -G_M45259_IG08: ; bbWeight=0.44, gcrefRegs=0008 {rbx}, byrefRegs=0006 {rcx rdx}, byref - call [<unknown method>] - ; byrRegs -[rcx rdx] - ; gcr arg pop 0 - ;; size=6 bbWeight=0.44 PerfScore 1.32 -G_M45259_IG09: ; bbWeight=0.88, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - mov rsi, rbx - ; gcrRegs +[rsi] - ;; size=3 bbWeight=0.88 PerfScore 0.22 -G_M45259_IG10: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref - ; gcrRegs -[rbx] - mov rax, rsi - ; gcrRegs +[rax] - ;; size=3 bbWeight=1 PerfScore 0.25 -G_M45259_IG11: ; bbWeight=1, epilog, nogc, extend - add rsp, 64 - pop rbx - pop rbp - pop rsi - pop rdi - pop r14 - ret - ;; size=11 bbWeight=1 PerfScore 3.75 -G_M45259_IG12: ; bbWeight=0.10, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[rax] - mov rax, rsi - ; gcrRegs +[rax] - mov rsi, rax - jmp SHORT G_M45259_IG10 - ;; size=8 bbWeight=0.10 PerfScore 0.25 -G_M45259_IG13: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rax rsi] - mov rax, 0xD1FFAB1E - ; gcrRegs +[rax] - mov rsi, rax - ; gcrRegs +[rsi] - jmp SHORT G_M45259_IG10 - ;; size=15 bbWeight=0.02 PerfScore 0.05 -G_M45259_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz - ; gcrRegs -[rax rsi] - ; byrRegs +[rbx]
+ je SHORT G_M45259_IG07 + ;; size=15 bbWeight=0.50 PerfScore 2.12 +G_M45259_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref + ; gcrRegs -[rsi]
xor rdi, rdi ; byrRegs +[rdi]
- xor r14d, r14d
+ xor ebp, ebp
mov rcx, gword ptr [rbx] ; gcrRegs +[rcx] test rcx, rcx
- je SHORT G_M45259_IG20 - mov rdx, 0xD1FFAB1E ; System.String - cmp qword ptr [rcx], rdx - jne SHORT G_M45259_IG16 - lea rdi, bword ptr [rcx+0x0C] - ;; size=32 bbWeight=0 PerfScore 0.00 -G_M45259_IG15: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0088 {rbx rdi}, byref, isz - mov r14d, dword ptr [rcx+0x08] - jmp SHORT G_M45259_IG18 - ;; size=6 bbWeight=0 PerfScore 0.00 -G_M45259_IG16: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0008 {rbx}, byref, isz - ; byrRegs -[rdi] - mov rdx, qword ptr [rcx] - test dword ptr [rdx], 0xD1FFAB1E - je SHORT G_M45259_IG17 - lea rdi, bword ptr [rcx+0x10] - ; byrRegs +[rdi] - jmp SHORT G_M45259_IG15 - ;; size=17 bbWeight=0 PerfScore 0.00 -G_M45259_IG17: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0008 {rbx}, byref - ; byrRegs -[rdi] - lea rdx, [rsp+0x20] - mov rax, qword ptr [rcx] - mov rax, qword ptr [rax+0x40] - call [rax+0x28]<unknown method>
+ jne G_M45259_IG17 + ;; size=16 bbWeight=1 PerfScore 3.75 +G_M45259_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref
; gcrRegs -[rcx]
- ; gcr arg pop 0 - mov rdi, bword ptr [rsp+0x20] - ; byrRegs +[rdi] - mov r14d, dword ptr [rsp+0x28] - ;; size=25 bbWeight=0 PerfScore 0.00 -G_M45259_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz - mov eax, dword ptr [rbx+0x08] - and eax, 0xD1FFAB1E - mov ebp, eax - mov ebx, dword ptr [rbx+0x0C]
; byrRegs -[rbx]
- mov eax, ebx - add rax, rbp - mov ecx, r14d - cmp rax, rcx - jbe SHORT G_M45259_IG19 - call [System.ThrowHelper:ThrowArgumentOutOfRangeException()] - ; byrRegs -[rdi] - ; gcr arg pop 0 - int3 - ;; size=33 bbWeight=0 PerfScore 0.00 -G_M45259_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref
...

+24 (+6.88%) : 128956.dasm - System.ReadOnlyMemory`1[ushort]:ToString():System.String:this (Tier1)

@@ -9,244 +9,259 @@ ; 3 inlinees with PGO data; 8 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 8, 5 ) byref -> rbx this single-def
+; V00 this [V00,T01] ( 8, 6 ) byref -> rbx this single-def
; V01 loc0 [V01,T03] ( 7, 4.46) ref -> rsi class-hnd exact <System.String>
-; V02 loc1 [V02 ] ( 3, 0 ) struct (16) [rsp+0x30] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.ReadOnlySpan`1[ushort]>
+; V02 loc1 [V02 ] ( 3, 0 ) struct (16) [rsp+0x38] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.ReadOnlySpan`1[ushort]>
;* V03 loc2 [V03 ] ( 0, 0 ) struct (40) zero-ref do-not-enreg[S] ld-addr-op <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler> ; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V05 tmp1 [V05,T04] ( 2, 4 ) ref -> rsi single-def "CASTCLASS eval op1" ;* V06 tmp2 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.String> ;* V07 tmp3 [V07 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-; V08 tmp4 [V08,T13] ( 7, 0 ) byref -> rdi "Inline stloc first use temp" -; V09 tmp5 [V09,T14] ( 6, 0 ) int -> r14 "Inline stloc first use temp" -; V10 tmp6 [V10,T12] ( 9, 0 ) ref -> rcx class-hnd single-def "Inline stloc first use temp" <System.Object>
+; V08 tmp4 [V08,T12] ( 7, 1 ) byref -> rdi "Inline stloc first use temp" +; V09 tmp5 [V09,T13] ( 6, 1 ) int -> rbp "Inline stloc first use temp" +; V10 tmp6 [V10,T07] ( 9, 2 ) ref -> rcx class-hnd single-def "Inline stloc first use temp" <System.Object>
;* V11 tmp7 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V12 tmp8 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>>
-; V13 tmp9 [V13 ] ( 3, 0 ) struct (16) [rsp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]> -; V14 tmp10 [V14,T15] ( 3, 0 ) long -> rbp "Inline stloc first use temp" -; V15 tmp11 [V15,T16] ( 3, 0 ) int -> rbx "Inline stloc first use temp"
+; V13 tmp9 [V13 ] ( 3, 0 ) struct (16) [rsp+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]> +; V14 tmp10 [V14,T15] ( 3, 0 ) long -> r14 "Inline stloc first use temp" +; V15 tmp11 [V15,T16] ( 3, 0 ) int -> r15 "Inline stloc first use temp"
;* V16 tmp12 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "updating class info" <<unknown class>> ;* V17 tmp13 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>> ;* V18 tmp14 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "updating class info" <System.String> ;* V19 tmp15 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.String> ; V20 tmp16 [V20,T17] ( 2, 0 ) byref -> rdx single-def "Inlining Arg" ;* V21 tmp17 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
-; V22 tmp18 [V22,T07] ( 4, 2.00) ref -> registers class-hnd "Inline return value spill temp" <System.String> -; V23 tmp19 [V23,T02] ( 4, 4.82) int -> rdi "Inlining Arg" -; V24 tmp20 [V24,T00] ( 7, 9.57) int -> rbp "Inlining Arg"
+; V22 tmp18 [V22,T08] ( 4, 2.00) ref -> registers class-hnd "Inline return value spill temp" <System.String> +; V23 tmp19 [V23,T02] ( 4, 4.82) int -> r14 "Inlining Arg" +; V24 tmp20 [V24,T00] ( 7, 9.57) int -> r15 "Inlining Arg"
;* V25 tmp21 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.String>
-; V26 tmp22 [V26,T08] ( 4, 1.65) ref -> rbx class-hnd exact single-def "Inline stloc first use temp" <System.String> -; V27 tmp23 [V27,T11] ( 2, 0.82) long -> r8 "Inline stloc first use temp" -; V28 tmp24 [V28,T09] ( 3, 1.65) byref -> rcx single-def "Inlining Arg" -; V29 tmp25 [V29,T10] ( 3, 1.65) byref -> rdx single-def "Inlining Arg"
+; V26 tmp22 [V26,T09] ( 4, 1.65) ref -> rdi class-hnd exact single-def "Inline stloc first use temp" <System.String> +; V27 tmp23 [V27,T14] ( 2, 0.82) long -> r8 "Inline stloc first use temp" +; V28 tmp24 [V28,T10] ( 3, 1.65) byref -> rcx single-def "Inlining Arg" +; V29 tmp25 [V29,T11] ( 3, 1.65) byref -> rdx single-def "Inlining Arg"
; V30 tmp26 [V30,T06] ( 3, 2.06) long -> r8 "spilling arg"
-; V31 tmp27 [V31 ] ( 2, 0 ) byref -> [rsp+0x30] do-not-enreg[X] addr-exposed "field V02._reference (fldOffset=0x0)" P-DEP -; V32 tmp28 [V32 ] ( 2, 0 ) int -> [rsp+0x38] do-not-enreg[X] addr-exposed "field V02._length (fldOffset=0x8)" P-DEP
+; V31 tmp27 [V31 ] ( 2, 0 ) byref -> [rsp+0x38] do-not-enreg[X] addr-exposed "field V02._reference (fldOffset=0x0)" P-DEP +; V32 tmp28 [V32 ] ( 2, 0 ) int -> [rsp+0x40] do-not-enreg[X] addr-exposed "field V02._length (fldOffset=0x8)" P-DEP
;* V33 tmp29 [V33 ] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP ;* V34 tmp30 [V34 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP ; V35 tmp31 [V35,T18] ( 2, 0 ) byref -> rdi single-def "field V11._reference (fldOffset=0x0)" P-INDEP
-; V36 tmp32 [V36,T20] ( 2, 0 ) int -> r14 "field V11._length (fldOffset=0x8)" P-INDEP -; V37 tmp33 [V37 ] ( 2, 0 ) byref -> [rsp+0x20] do-not-enreg[X] addr-exposed "field V13._reference (fldOffset=0x0)" P-DEP -; V38 tmp34 [V38 ] ( 2, 0 ) int -> [rsp+0x28] do-not-enreg[X] addr-exposed "field V13._length (fldOffset=0x8)" P-DEP
+; V36 tmp32 [V36,T20] ( 2, 0 ) int -> rbp "field V11._length (fldOffset=0x8)" P-INDEP +; V37 tmp33 [V37 ] ( 2, 0 ) byref -> [rsp+0x28] do-not-enreg[X] addr-exposed "field V13._reference (fldOffset=0x0)" P-DEP +; V38 tmp34 [V38 ] ( 2, 0 ) int -> [rsp+0x30] do-not-enreg[X] addr-exposed "field V13._length (fldOffset=0x8)" P-DEP
; V39 tmp35 [V39,T19] ( 2, 0 ) byref -> rdi single-def "field V21._reference (fldOffset=0x0)" P-INDEP ;* V40 tmp36 [V40 ] ( 0, 0 ) int -> zero-ref "field V21._length (fldOffset=0x8)" P-INDEP
-; V41 cse0 [V41,T05] ( 5, 2.96) int -> r14 multi-def "CSE - aggressive"
+; V41 cse0 [V41,T05] ( 5, 2.96) int -> rbp multi-def "CSE - aggressive"
;
-; Lcl frame size = 64
+; Lcl frame size = 72
G_M45259_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+ push r15
push r14 push rdi push rsi push rbp push rbx
- sub rsp, 64
+ sub rsp, 72 + xor eax, eax + mov qword ptr [rsp+0x28], rax
vxorps xmm4, xmm4, xmm4
- vmovdqu ymmword ptr [rsp+0x20], ymm4
+ vmovdqa xmmword ptr [rsp+0x30], xmm4 + mov qword ptr [rsp+0x40], rax
mov rbx, rcx ; byrRegs +[rbx]
- ;; size=23 bbWeight=1 PerfScore 7.83 -G_M45259_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
+ ;; size=37 bbWeight=1 PerfScore 11.08 +G_M45259_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
mov rsi, gword ptr [rbx] ; gcrRegs +[rsi] test rsi, rsi
- je G_M45259_IG13 - ;; size=12 bbWeight=1 PerfScore 3.25 -G_M45259_IG03: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref
+ je SHORT G_M45259_IG04 + ;; size=8 bbWeight=1 PerfScore 3.25 +G_M45259_IG03: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
mov rcx, 0xD1FFAB1E ; System.String cmp qword ptr [rsi], rcx
- jne G_M45259_IG13 - ;; size=19 bbWeight=0.50 PerfScore 2.12 -G_M45259_IG04: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz - mov edi, dword ptr [rbx+0x08] - mov ebp, dword ptr [rbx+0x0C] - mov ecx, edi - mov eax, ebp - add rcx, rax - mov r14d, dword ptr [rsi+0x08] - mov eax, r14d - cmp rcx, rax - ja G_M45259_IG21 - test ebp, ebp - je SHORT G_M45259_IG12 - ;; size=33 bbWeight=1 PerfScore 9.50 -G_M45259_IG05: ; bbWeight=0.96, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz - ; byrRegs -[rbx] - cmp r14d, ebp - jne SHORT G_M45259_IG08 - ;; size=5 bbWeight=0.96 PerfScore 1.20 -G_M45259_IG06: ; bbWeight=0.55, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref - mov rax, rsi - ; gcrRegs +[rax] - ;; size=3 bbWeight=0.55 PerfScore 0.14 -G_M45259_IG07: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
+ je SHORT G_M45259_IG07 + ;; size=15 bbWeight=0.50 PerfScore 2.12 +G_M45259_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
; gcrRegs -[rsi]
- add rsp, 64 - pop rbx - pop rbp - pop rsi - pop rdi - pop r14 - ret - ;; size=11 bbWeight=1 PerfScore 3.75 -G_M45259_IG08: ; bbWeight=0.41, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[rax] +[rsi] - mov ecx, ebp - call <unknown method> - ; gcrRegs +[rax] - ; gcr arg pop 0 - mov rbx, rax - ; gcrRegs +[rbx] - mov r8d, ebp - cmp byte ptr [rbx], bl - lea rcx, bword ptr [rbx+0x0C] - ; byrRegs +[rcx] - mov edx, edi - lea rdx, bword ptr [rsi+2*rdx+0x0C] - ; byrRegs +[rdx] - add r8, r8 - cmp r8, 6 - jne SHORT G_M45259_IG10 - ;; size=35 bbWeight=0.41 PerfScore 3.30 -G_M45259_IG09: ; bbWeight=0.21, gcrefRegs=0008 {rbx}, byrefRegs=0006 {rcx rdx}, byref, isz - ; gcrRegs -[rax rsi] - mov eax, dword ptr [rdx] - mov r8d, dword ptr [rdx+0x02] - mov dword ptr [rcx], eax - mov dword ptr [rcx+0x02], r8d - jmp SHORT G_M45259_IG11 - ;; size=14 bbWeight=0.21 PerfScore 1.65 -G_M45259_IG10: ; bbWeight=0.21, gcrefRegs=0008 {rbx}, byrefRegs=0006 {rcx rdx}, byref - call [<unknown method>] - ; byrRegs -[rcx rdx] - ; gcr arg pop 0 - ;; size=6 bbWeight=0.21 PerfScore 0.62 -G_M45259_IG11: ; bbWeight=0.41, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - mov rsi, rbx - ; gcrRegs +[rsi] - mov rax, rsi - ; gcrRegs +[rax] - jmp SHORT G_M45259_IG07 - ;; size=8 bbWeight=0.41 PerfScore 1.03 -G_M45259_IG12: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rax rbx rsi] - mov rax, 0xD1FFAB1E - ; gcrRegs +[rax] - jmp SHORT G_M45259_IG07 - ;; size=12 bbWeight=0.04 PerfScore 0.09 -G_M45259_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz - ; gcrRegs -[rax] - ; byrRegs +[rbx]
xor rdi, rdi ; byrRegs +[rdi]
- xor r14d, r14d
+ xor ebp, ebp
mov rcx, gword ptr [rbx] ; gcrRegs +[rcx] test rcx, rcx
- je SHORT G_M45259_IG19 - mov rdx, 0xD1FFAB1E ; System.String - cmp qword ptr [rcx], rdx - jne SHORT G_M45259_IG15 - lea rdi, bword ptr [rcx+0x0C] - ;; size=32 bbWeight=0 PerfScore 0.00 -G_M45259_IG14: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0088 {rbx rdi}, byref, isz - mov r14d, dword ptr [rcx+0x08] - jmp SHORT G_M45259_IG17 - ;; size=6 bbWeight=0 PerfScore 0.00 -G_M45259_IG15: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0008 {rbx}, byref, isz - ; byrRegs -[rdi] - mov rdx, qword ptr [rcx] - test dword ptr [rdx], 0xD1FFAB1E - je SHORT G_M45259_IG16 - lea rdi, bword ptr [rcx+0x10] - ; byrRegs +[rdi] - jmp SHORT G_M45259_IG14 - ;; size=17 bbWeight=0 PerfScore 0.00 -G_M45259_IG16: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0008 {rbx}, byref - ; byrRegs -[rdi] - lea rdx, [rsp+0x20] - mov rax, qword ptr [rcx] - mov rax, qword ptr [rax+0x40] - call [rax+0x28]<unknown method>
+ jne G_M45259_IG16 + ;; size=16 bbWeight=1 PerfScore 3.75 +G_M45259_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref
; gcrRegs -[rcx]
- ; gcr arg pop 0 - mov rdi, bword ptr [rsp+0x20] - ; byrRegs +[rdi] - mov r14d, dword ptr [rsp+0x28] - ;; size=25 bbWeight=0 PerfScore 0.00 -G_M45259_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz - mov eax, dword ptr [rbx+0x08] - and eax, 0xD1FFAB1E - mov ebp, eax - mov ebx, dword ptr [rbx+0x0C]
; byrRegs -[rbx]
- mov eax, ebx - add rax, rbp - mov ecx, r14d - cmp rax, rcx - jbe SHORT G_M45259_IG18 - call [System.ThrowHelper:ThrowArgumentOutOfRangeException()] - ; byrRegs -[rdi] - ; gcr arg pop 0 - int3 - ;; size=33 bbWeight=0 PerfScore 0.00 -G_M45259_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref - ; byrRegs +[rdi] - lea rdi, bword ptr [rdi+2*rbp] - mov r14d, ebx - ;; size=7 bbWeight=0 PerfScore 0.00
...

+26 (+6.97%) : 97782.dasm - System.ReadOnlyMemory`1[ushort]:ToString():System.String:this (Instrumented Tier1)

@@ -9,7 +9,7 @@ ; 3 inlinees with PGO data; 8 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 8, 5 ) byref -> rbx this single-def
+; V00 this [V00,T01] ( 8, 6 ) byref -> rbx this single-def
; V01 loc0 [V01,T03] ( 7, 4.46) ref -> rsi class-hnd exact <System.String> ; V02 loc1 [V02 ] ( 3, 0 ) struct (16) [rsp+0x38] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.ReadOnlySpan`1[ushort]> ;* V03 loc2 [V03 ] ( 0, 0 ) struct (40) zero-ref do-not-enreg[S] ld-addr-op <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler> @@ -17,44 +17,46 @@ ; V05 tmp1 [V05,T04] ( 2, 4 ) ref -> rsi single-def "CASTCLASS eval op1" ;* V06 tmp2 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.String> ;* V07 tmp3 [V07 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-; V08 tmp4 [V08,T13] ( 7, 0 ) byref -> rsi "Inline stloc first use temp" -; V09 tmp5 [V09,T14] ( 6, 0 ) int -> rdi "Inline stloc first use temp" -; V10 tmp6 [V10,T12] ( 9, 0 ) ref -> rcx class-hnd single-def "Inline stloc first use temp" <System.Object>
+; V08 tmp4 [V08,T12] ( 7, 1 ) byref -> rdi "Inline stloc first use temp" +; V09 tmp5 [V09,T13] ( 6, 1 ) int -> rbp "Inline stloc first use temp" +; V10 tmp6 [V10,T07] ( 9, 2 ) ref -> rcx class-hnd single-def "Inline stloc first use temp" <System.Object>
;* V11 tmp7 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V12 tmp8 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>> ; V13 tmp9 [V13 ] ( 3, 0 ) struct (16) [rsp+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]>
-; V14 tmp10 [V14,T15] ( 3, 0 ) long -> rbp "Inline stloc first use temp" -; V15 tmp11 [V15,T16] ( 3, 0 ) int -> rbx "Inline stloc first use temp"
+; V14 tmp10 [V14,T15] ( 3, 0 ) long -> rsi "Inline stloc first use temp" +; V15 tmp11 [V15,T16] ( 3, 0 ) int -> r14 "Inline stloc first use temp"
;* V16 tmp12 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "updating class info" <<unknown class>> ;* V17 tmp13 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>> ;* V18 tmp14 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "updating class info" <System.String> ;* V19 tmp15 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.String> ; V20 tmp16 [V20,T17] ( 2, 0 ) byref -> rdx single-def "Inlining Arg" ;* V21 tmp17 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
-; V22 tmp18 [V22,T07] ( 4, 2 ) ref -> rax class-hnd "Inline return value spill temp" <System.String> -; V23 tmp19 [V23,T02] ( 4, 4.93) int -> rdi "Inlining Arg" -; V24 tmp20 [V24,T00] ( 7, 9.79) int -> rbp "Inlining Arg"
+; V22 tmp18 [V22,T08] ( 4, 2 ) ref -> rax class-hnd "Inline return value spill temp" <System.String> +; V23 tmp19 [V23,T02] ( 4, 4.93) int -> r14 "Inlining Arg" +; V24 tmp20 [V24,T00] ( 7, 9.79) int -> r15 "Inlining Arg"
;* V25 tmp21 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.String>
-; V26 tmp22 [V26,T08] ( 4, 1.86) ref -> rbx class-hnd exact single-def "Inline stloc first use temp" <System.String> -; V27 tmp23 [V27,T11] ( 2, 0.93) long -> r8 "Inline stloc first use temp" -; V28 tmp24 [V28,T09] ( 3, 1.86) byref -> rcx single-def "Inlining Arg" -; V29 tmp25 [V29,T10] ( 3, 1.86) byref -> rdx single-def "Inlining Arg"
+; V26 tmp22 [V26,T09] ( 4, 1.86) ref -> rdi class-hnd exact single-def "Inline stloc first use temp" <System.String> +; V27 tmp23 [V27,T14] ( 2, 0.93) long -> r8 "Inline stloc first use temp" +; V28 tmp24 [V28,T10] ( 3, 1.86) byref -> rcx single-def "Inlining Arg" +; V29 tmp25 [V29,T11] ( 3, 1.86) byref -> rdx single-def "Inlining Arg"
; V30 tmp26 [V30,T06] ( 3, 2.32) long -> r8 "spilling arg" ; V31 tmp27 [V31 ] ( 2, 0 ) byref -> [rsp+0x38] do-not-enreg[X] addr-exposed "field V02._reference (fldOffset=0x0)" P-DEP ; V32 tmp28 [V32 ] ( 2, 0 ) int -> [rsp+0x40] do-not-enreg[X] addr-exposed "field V02._length (fldOffset=0x8)" P-DEP ;* V33 tmp29 [V33 ] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP ;* V34 tmp30 [V34 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP
-; V35 tmp31 [V35,T18] ( 2, 0 ) byref -> rsi single-def "field V11._reference (fldOffset=0x0)" P-INDEP -; V36 tmp32 [V36,T20] ( 2, 0 ) int -> rdi "field V11._length (fldOffset=0x8)" P-INDEP
+; V35 tmp31 [V35,T18] ( 2, 0 ) byref -> rdi single-def "field V11._reference (fldOffset=0x0)" P-INDEP +; V36 tmp32 [V36,T20] ( 2, 0 ) int -> rbp "field V11._length (fldOffset=0x8)" P-INDEP
; V37 tmp33 [V37 ] ( 2, 0 ) byref -> [rsp+0x28] do-not-enreg[X] addr-exposed "field V13._reference (fldOffset=0x0)" P-DEP ; V38 tmp34 [V38 ] ( 2, 0 ) int -> [rsp+0x30] do-not-enreg[X] addr-exposed "field V13._length (fldOffset=0x8)" P-DEP
-; V39 tmp35 [V39,T19] ( 2, 0 ) byref -> rsi single-def "field V21._reference (fldOffset=0x0)" P-INDEP
+; V39 tmp35 [V39,T19] ( 2, 0 ) byref -> rdi single-def "field V21._reference (fldOffset=0x0)" P-INDEP
;* V40 tmp36 [V40 ] ( 0, 0 ) int -> zero-ref "field V21._length (fldOffset=0x8)" P-INDEP ; V41 cse0 [V41,T05] ( 3, 2.96) int -> rax "CSE - aggressive" ; ; Lcl frame size = 72 G_M45259_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+ push r15 + push r14
push rdi push rsi push rbp @@ -67,190 +69,203 @@ G_M45259_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov qword ptr [rsp+0x40], rax mov rbx, rcx ; byrRegs +[rbx]
- ;; size=33 bbWeight=1 PerfScore 9.08 -G_M45259_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
+ ;; size=37 bbWeight=1 PerfScore 11.08 +G_M45259_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
mov rsi, gword ptr [rbx] ; gcrRegs +[rsi] test rsi, rsi
- je G_M45259_IG13 - ;; size=12 bbWeight=1 PerfScore 3.25 -G_M45259_IG03: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref
+ je SHORT G_M45259_IG04 + ;; size=8 bbWeight=1 PerfScore 3.25 +G_M45259_IG03: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
mov rcx, 0xD1FFAB1E ; System.String cmp qword ptr [rsi], rcx
- jne G_M45259_IG13 - ;; size=19 bbWeight=0.50 PerfScore 2.12 -G_M45259_IG04: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
+ je SHORT G_M45259_IG07 + ;; size=15 bbWeight=0.50 PerfScore 2.12 +G_M45259_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref + ; gcrRegs -[rsi]
mov rcx, 0xD1FFAB1E call CORINFO_HELP_COUNTPROFILE32 ; gcr arg pop 0
- mov edi, dword ptr [rbx+0x08] - mov ebp, dword ptr [rbx+0x0C] - mov ecx, edi - mov eax, ebp
+ xor rdi, rdi + ; byrRegs +[rdi] + xor ebp, ebp + mov rcx, gword ptr [rbx] + ; gcrRegs +[rcx] + test rcx, rcx + jne G_M45259_IG16 + ;; size=31 bbWeight=1 PerfScore 5.00 +G_M45259_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref + ; gcrRegs -[rcx] + ; byrRegs -[rbx] + mov bword ptr [rsp+0x38], rdi + mov dword ptr [rsp+0x40], ebp + lea rcx, [rsp+0x38] + call [<unknown method>] + ; gcrRegs +[rax] + ; byrRegs -[rdi] + ; gcr arg pop 0 + nop + ;; size=21 bbWeight=0 PerfScore 0.00 +G_M45259_IG06: ; bbWeight=0, epilog, nogc, extend + add rsp, 72 + pop rbx + pop rbp + pop rsi + pop rdi + pop r14 + pop r15 + ret + ;; size=13 bbWeight=0 PerfScore 0.00 +G_M45259_IG07: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, gcvars, byref, isz + ; gcrRegs -[rax] +[rsi] + ; byrRegs +[rbx] + mov rcx, 0xD1FFAB1E + call CORINFO_HELP_COUNTPROFILE32 + ; gcr arg pop 0 + mov r14d, dword ptr [rbx+0x08] + mov r15d, dword ptr [rbx+0x0C] + mov ecx, r14d + mov eax, r15d
add rcx, rax mov eax, dword ptr [rsi+0x08] mov edx, eax cmp rcx, rdx
- ja G_M45259_IG21 - test ebp, ebp - je SHORT G_M45259_IG12 - ;; size=46 bbWeight=1 PerfScore 10.75 -G_M45259_IG05: ; bbWeight=0.96, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+ ja G_M45259_IG22 + test r15d, r15d + je SHORT G_M45259_IG15 + ;; size=51 bbWeight=1 PerfScore 10.75 +G_M45259_IG08: ; bbWeight=0.96, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rbx]
- cmp eax, ebp - jne SHORT G_M45259_IG08 - ;; size=4 bbWeight=0.96 PerfScore 1.21 -G_M45259_IG06: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
+ cmp eax, r15d + jne SHORT G_M45259_IG11 + ;; size=5 bbWeight=0.96 PerfScore 1.21 +G_M45259_IG09: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
mov rax, rsi ; gcrRegs +[rax] ;; size=3 bbWeight=0.50 PerfScore 0.13
-G_M45259_IG07: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M45259_IG10: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rsi] add rsp, 72 pop rbx pop rbp pop rsi pop rdi
+ pop r14 + pop r15
ret
- ;; size=9 bbWeight=1 PerfScore 3.25 -G_M45259_IG08: ; bbWeight=0.46, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=13 bbWeight=1 PerfScore 4.25 +G_M45259_IG11: ; bbWeight=0.46, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax] +[rsi]
- mov ecx, ebp
+ mov ecx, r15d
call <unknown method> ; gcrRegs +[rax] ; gcr arg pop 0
- mov rbx, rax - ; gcrRegs +[rbx] - mov r8d, ebp - cmp byte ptr [rbx], bl - lea rcx, bword ptr [rbx+0x0C]
+ mov rdi, rax + ; gcrRegs +[rdi] + mov r8d, r15d + cmp byte ptr [rdi], dil + lea rcx, bword ptr [rdi+0x0C]
; byrRegs +[rcx]
- mov edx, edi
+ mov edx, r14d
lea rdx, bword ptr [rsi+2*rdx+0x0C] ; byrRegs +[rdx] add r8, r8 cmp r8, 6
- jne SHORT G_M45259_IG10 - ;; size=35 bbWeight=0.46 PerfScore 3.71 -G_M45259_IG09: ; bbWeight=0.23, gcrefRegs=0008 {rbx}, byrefRegs=0006 {rcx rdx}, byref, isz
+ jne SHORT G_M45259_IG13 + ;; size=38 bbWeight=0.46 PerfScore 3.71 +G_M45259_IG12: ; bbWeight=0.23, gcrefRegs=0080 {rdi}, byrefRegs=0006 {rcx rdx}, byref, isz
; gcrRegs -[rax rsi] mov eax, dword ptr [rdx] mov r8d, dword ptr [rdx+0x02] mov dword ptr [rcx], eax mov dword ptr [rcx+0x02], r8d
- jmp SHORT G_M45259_IG11
+ jmp SHORT G_M45259_IG14
;; size=14 bbWeight=0.23 PerfScore 1.86
-G_M45259_IG10: ; bbWeight=0.23, gcrefRegs=0008 {rbx}, byrefRegs=0006 {rcx rdx}, byref
+G_M45259_IG13: ; bbWeight=0.23, gcrefRegs=0080 {rdi}, byrefRegs=0006 {rcx rdx}, byref
call [<unknown method>] ; byrRegs -[rcx rdx] ; gcr arg pop 0 ;; size=6 bbWeight=0.23 PerfScore 0.70
-G_M45259_IG11: ; bbWeight=0.46, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - mov rax, rbx
+G_M45259_IG14: ; bbWeight=0.46, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz + mov rax, rdi
; gcrRegs +[rax]
- jmp SHORT G_M45259_IG07
+ jmp SHORT G_M45259_IG10
;; size=5 bbWeight=0.46 PerfScore 1.04
-G_M45259_IG12: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rax rbx]
+G_M45259_IG15: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rax rdi]
mov rax, 0xD1FFAB1E ; gcrRegs +[rax]
- jmp SHORT G_M45259_IG07
+ jmp SHORT G_M45259_IG10
;; size=12 bbWeight=0.04 PerfScore 0.08
-G_M45259_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz - ; gcrRegs -[rax]
+G_M45259_IG16: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0008 {rbx}, byref, isz + ; gcrRegs -[rax] +[rcx]
; byrRegs +[rbx] ...

benchmarks.run.windows.x64.checked.mch

-40 (-51.28%) : 13587.dasm - System.Int32:Equals(System.Object):ubyte:this (FullOpts)

@@ -8,75 +8,49 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 2.50) byref -> rcx this single-def
-; V01 arg1 [V01,T00] ( 5, 3.75) ref -> rbx class-hnd single-def <System.Object> -; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V01 arg1 [V01,T00] ( 4, 3.50) ref -> rdx class-hnd single-def <System.Object> +;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T01] ( 3, 4.50) ref -> rax class-hnd "spilling QMark2" <System.Int32>
-; V04 tmp2 [V04,T03] ( 2, 2 ) int -> rsi "impAppendStmt" -; V05 cse0 [V05,T04] ( 4, 1.25) long -> r8 "CSE - moderate" -; V06 cse1 [V06,T05] ( 3, 1 ) long -> rdx "CSE - moderate"
+; V04 tmp2 [V04,T03] ( 2, 2 ) int -> rax "impAppendStmt"
;
-; Lcl frame size = 40
+; Lcl frame size = 0
-G_M40448_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG - push rsi - push rbx - sub rsp, 40 - mov rbx, rdx - ; gcrRegs +[rbx] - ;; size=9 bbWeight=1 PerfScore 2.50 -G_M40448_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0002 {rcx}, byref, isz
+G_M40448_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG + ;; size=0 bbWeight=1 PerfScore 0.00 +G_M40448_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0002 {rcx}, byref, isz + ; gcrRegs +[rdx]
; byrRegs +[rcx]
- mov rax, rbx
+ mov rax, rdx
; gcrRegs +[rax] test rax, rax je SHORT G_M40448_IG04 ;; size=8 bbWeight=1 PerfScore 1.50
-G_M40448_IG03: ; bbWeight=0.25, gcrefRegs=0009 {rax rbx}, byrefRegs=0002 {rcx}, byref, isz - mov rdx, qword ptr [rax]
+G_M40448_IG03: ; bbWeight=0.25, gcrefRegs=0005 {rax rdx}, byrefRegs=0002 {rcx}, byref, isz
mov r8, 0xD1FFAB1E ; System.Int32
- cmp rdx, r8
+ cmp qword ptr [rax], r8
je SHORT G_M40448_IG06
- ;; size=18 bbWeight=0.25 PerfScore 0.88
+ ;; size=15 bbWeight=0.25 PerfScore 1.06
G_M40448_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax rbx]
+ ; gcrRegs -[rax rdx]
; byrRegs -[rcx] xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M40448_IG05: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 40 - pop rbx - pop rsi
ret
- ;; size=7 bbWeight=0.50 PerfScore 1.12 -G_M40448_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0002 {rcx}, gcvars, byref, isz - ; gcrRegs +[rbx] - ; byrRegs +[rcx] - mov esi, dword ptr [rcx] - cmp rdx, r8 - je SHORT G_M40448_IG08 - ;; size=7 bbWeight=0.50 PerfScore 1.62 -G_M40448_IG07: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - ; byrRegs -[rcx] - mov rdx, rbx
+ ;; size=1 bbWeight=0.50 PerfScore 0.50 +G_M40448_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0004 {rdx}, byrefRegs=0002 {rcx}, gcvars, byref
; gcrRegs +[rdx]
- mov rcx, r8 - call [CORINFO_HELP_UNBOX] - ; gcrRegs -[rdx] - ; gcr arg pop 0 - ;; size=12 bbWeight=0.25 PerfScore 0.88 -G_M40448_IG08: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - xor eax, eax - cmp esi, dword ptr [rbx+0x08]
+ ; byrRegs +[rcx] + mov eax, dword ptr [rcx] + cmp eax, dword ptr [rdx+0x08]
sete al
- ;; size=8 bbWeight=0.50 PerfScore 2.12 -G_M40448_IG09: ; bbWeight=0.50, epilog, nogc, extend - add rsp, 40 - pop rbx - pop rsi
+ movzx rax, al + ;; size=11 bbWeight=0.50 PerfScore 3.12 +G_M40448_IG07: ; bbWeight=0.50, epilog, nogc, extend
ret
- ;; size=7 bbWeight=0.50 PerfScore 1.12
+ ;; size=1 bbWeight=0.50 PerfScore 0.50
-; Total bytes of code 78, prolog size 6, PerfScore 11.88, instruction count 29, allocated bytes for code 78 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 38, prolog size 0, PerfScore 6.81, instruction count 13, allocated bytes for code 38 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -84,11 +58,8 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x06 - CountOfUnwindCodes: 3
+ SizeOfProlog : 0x00 + CountOfUnwindCodes: 0
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x06 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28 - CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)

-32 (-24.62%) : 2319.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan1[uint]):int (FullOpts)

@@ -9,108 +9,93 @@ ; ; V00 arg0 [V00,T03] ( 4, 8 ) byref -> rcx ld-addr-op single-def ; V01 arg1 [V01,T04] ( 4, 8 ) byref -> rdx ld-addr-op single-def
-; V02 loc0 [V02,T00] ( 7, 24.50) int -> registers
+; V02 loc0 [V02,T00] ( 7, 24.50) int -> r10
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T01] ( 6, 20 ) int -> r9 "dup spill" -; V05 tmp2 [V05,T07] ( 3, 5.50) byref -> r10 single-def "field V00._reference (fldOffset=0x0)" P-INDEP -; V06 tmp3 [V06,T06] ( 5, 7 ) int -> rcx "field V00._length (fldOffset=0x8)" P-INDEP -; V07 tmp4 [V07,T08] ( 3, 5.50) byref -> r8 single-def "field V01._reference (fldOffset=0x0)" P-INDEP -; V08 tmp5 [V08,T05] ( 6, 7.50) int -> rdx "field V01._length (fldOffset=0x8)" P-INDEP
+; V04 tmp1 [V04,T01] ( 2, 16 ) int -> r10 "dup spill" +; V05 tmp2 [V05,T09] ( 2, 5 ) byref -> r8 single-def "field V00._reference (fldOffset=0x0)" P-INDEP +; V06 tmp3 [V06,T08] ( 4, 6.50) int -> rcx "field V00._length (fldOffset=0x8)" P-INDEP +; V07 tmp4 [V07,T10] ( 2, 5 ) byref -> rax single-def "field V01._reference (fldOffset=0x0)" P-INDEP +; V08 tmp5 [V08,T07] ( 5, 7 ) int -> rdx "field V01._length (fldOffset=0x8)" P-INDEP
;* V09 tmp6 [V09 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[uint]> ;* V10 tmp7 [V10 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[uint]>
-; V11 cse0 [V11,T02] ( 6, 13.50) long -> r11 multi-def "CSE - aggressive"
+; V11 cse0 [V11,T05] ( 3, 8.50) int -> r11 "CSE - aggressive" +; V12 cse1 [V12,T06] ( 3, 8.50) int -> r9 "CSE - aggressive" +; V13 cse2 [V13,T02] ( 3, 12 ) long -> r9 "CSE - aggressive"
;
-; Lcl frame size = 32
+; Lcl frame size = 40
G_M264_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbx - sub rsp, 32 - ;; size=5 bbWeight=1 PerfScore 1.25
+ sub rsp, 40 + ;; size=4 bbWeight=1 PerfScore 0.25
G_M264_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0006 {rcx rdx}, byref, isz ; byrRegs +[rcx rdx]
- mov r8, bword ptr [rdx] - ; byrRegs +[r8]
+ mov rax, bword ptr [rdx] + ; byrRegs +[rax]
mov edx, dword ptr [rdx+0x08] ; byrRegs -[rdx]
- mov r10, bword ptr [rcx] - ; byrRegs +[r10]
+ mov r8, bword ptr [rcx] + ; byrRegs +[r8]
mov ecx, dword ptr [rcx+0x08] ; byrRegs -[rcx] cmp ecx, edx je SHORT G_M264_IG04 ;; size=16 bbWeight=1 PerfScore 9.25 G_M264_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[r8 r10]
+ ; byrRegs -[rax r8]
cmp ecx, edx
- jl SHORT G_M264_IG12 - jmp SHORT G_M264_IG10
+ jl SHORT G_M264_IG11 + jmp SHORT G_M264_IG07
;; size=6 bbWeight=0.50 PerfScore 1.62
-G_M264_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0500 {r8 r10}, byref - ; byrRegs +[r8 r10] - mov r9d, edx
+G_M264_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0101 {rax r8}, byref + ; byrRegs +[rax r8] + mov r10d, edx
;; size=3 bbWeight=0.50 PerfScore 0.12
-G_M264_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0500 {r8 r10}, byref, isz - dec r9d - mov eax, r9d - test eax, eax - jl SHORT G_M264_IG06 - cmp eax, ecx - jae SHORT G_M264_IG14 - mov r11d, eax - mov ebx, dword ptr [r10+4*r11] - cmp eax, edx - jae SHORT G_M264_IG14 - cmp ebx, dword ptr [r8+4*r11] - je SHORT G_M264_IG08 - ;; size=31 bbWeight=4 PerfScore 42.00 -G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0500 {r8 r10}, byref, isz - test r9d, r9d - jge SHORT G_M264_IG09 - xor eax, eax - ;; size=7 bbWeight=0.50 PerfScore 0.75 -G_M264_IG07: ; bbWeight=0.50, epilog, nogc, extend - add rsp, 32 - pop rbx - ret - ;; size=6 bbWeight=0.50 PerfScore 0.88 -G_M264_IG08: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0500 {r8 r10}, gcvars, byref, isz - mov r9d, eax - jmp SHORT G_M264_IG05 - ;; size=5 bbWeight=2 PerfScore 4.50 -G_M264_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0500 {r8 r10}, byref, isz - cmp r9d, ecx - jae SHORT G_M264_IG14 - mov r11d, r9d - mov eax, dword ptr [r10+4*r11] - cmp r9d, edx - jae SHORT G_M264_IG14 - cmp eax, dword ptr [r8+4*r11] - jb SHORT G_M264_IG12 - ;; size=23 bbWeight=0.50 PerfScore 4.38 -G_M264_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; byrRegs -[r8 r10]
+G_M264_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0101 {rax r8}, byref, isz + dec r10d + js SHORT G_M264_IG09 + cmp r10d, ecx + jae SHORT G_M264_IG13 + mov r9d, r10d + mov r11d, dword ptr [r8+4*r9] + cmp r10d, edx + jae SHORT G_M264_IG13 + mov r9d, dword ptr [rax+4*r9] + cmp r11d, r9d + je SHORT G_M264_IG05 + ;; size=31 bbWeight=4 PerfScore 37.00 +G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ; byrRegs -[rax r8] + cmp r9d, r11d + ja SHORT G_M264_IG11 + ;; size=5 bbWeight=0.50 PerfScore 0.62 +G_M264_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov eax, 1 ;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M264_IG11: ; bbWeight=0.50, epilog, nogc, extend - add rsp, 32 - pop rbx
+G_M264_IG08: ; bbWeight=0.50, epilog, nogc, extend + add rsp, 40
ret
- ;; size=6 bbWeight=0.50 PerfScore 0.88 -G_M264_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=5 bbWeight=0.50 PerfScore 0.62 +G_M264_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + xor eax, eax + ;; size=2 bbWeight=0.50 PerfScore 0.12 +G_M264_IG10: ; bbWeight=0.50, epilog, nogc, extend + add rsp, 40 + ret + ;; size=5 bbWeight=0.50 PerfScore 0.62 +G_M264_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov eax, -1 ;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M264_IG13: ; bbWeight=0.50, epilog, nogc, extend - add rsp, 32 - pop rbx
+G_M264_IG12: ; bbWeight=0.50, epilog, nogc, extend + add rsp, 40
ret
- ;; size=6 bbWeight=0.50 PerfScore 0.88 -G_M264_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=5 bbWeight=0.50 PerfScore 0.62 +G_M264_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 130, prolog size 5, PerfScore 66.75, instruction count 50, allocated bytes for code 130 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
+; Total bytes of code 98, prolog size 4, PerfScore 51.12, instruction count 35, allocated bytes for code 98 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
; ============================================================ Unwind Info: @@ -118,10 +103,9 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x05 - CountOfUnwindCodes: 2
+ SizeOfProlog : 0x04 + CountOfUnwindCodes: 1
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20 - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28

-18 (-8.82%) : 23168.dasm - Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (FullOpts)

@@ -7,19 +7,20 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T05] ( 6, 22 ) int -> rcx -; V01 arg1 [V01,T06] ( 6, 19 ) int -> rsi single-def -; V02 arg2 [V02,T02] ( 14, 60 ) ref -> rbx class-hnd single-def <int[]> -; V03 loc0 [V03,T00] ( 17,112 ) int -> rbp -; V04 loc1 [V04,T01] ( 13,100 ) int -> rdx
+; V00 arg0 [V00,T06] ( 6, 22 ) int -> rcx +; V01 arg1 [V01,T07] ( 6, 19 ) int -> rsi single-def +; V02 arg2 [V02,T02] ( 13, 58 ) ref -> rbx class-hnd single-def <int[]> +; V03 loc0 [V03,T00] ( 16,110 ) int -> rbp +; V04 loc1 [V04,T01] ( 10, 94 ) int -> rdx
; V05 loc2 [V05,T04] ( 4, 38 ) int -> rax
-; V06 loc3 [V06,T08] ( 4, 8 ) int -> r10
+; V06 loc3 [V06,T09] ( 4, 8 ) int -> r9
; V07 OutArgs [V07 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T09] ( 2, 8 ) int -> r9 "Strict ordering of exceptions for Array store" -; V09 tmp2 [V09,T07] ( 2, 16 ) int -> rcx "arg temp" -; V10 cse0 [V10,T03] ( 7, 46 ) int -> r8 "CSE - aggressive" -; V11 cse1 [V11,T10] ( 3, 7 ) long -> rdi hoist "CSE - aggressive" -; V12 cse2 [V12,T11] ( 3, 6 ) long -> rdx "CSE - aggressive"
+; V08 tmp1 [V08,T10] ( 2, 8 ) int -> r10 "Strict ordering of exceptions for Array store" +; V09 tmp2 [V09,T08] ( 2, 16 ) int -> rcx "arg temp" +; V10 cse0 [V10,T05] ( 3, 34 ) int -> r10 "CSE - aggressive" +; V11 cse1 [V11,T03] ( 6, 44 ) int -> r8 "CSE - aggressive" +; V12 cse2 [V12,T11] ( 3, 7 ) long -> rdi hoist "CSE - aggressive" +; V13 cse3 [V13,T12] ( 3, 6 ) long -> rdx "CSE - aggressive"
; ; Lcl frame size = 40 @@ -56,11 +57,11 @@ G_M36260_IG06: ; bbWeight=16, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, by cmp ebp, edx jge SHORT G_M36260_IG09 cmp ebp, r8d
- jae G_M36260_IG15
+ jae SHORT G_M36260_IG15
mov r10d, ebp cmp dword ptr [rbx+4*r10+0x10], eax jle SHORT G_M36260_IG05
- ;; size=23 bbWeight=16 PerfScore 108.00
+ ;; size=19 bbWeight=16 PerfScore 108.00
G_M36260_IG07: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz jmp SHORT G_M36260_IG09 ;; size=2 bbWeight=4 PerfScore 8.00 @@ -69,29 +70,24 @@ G_M36260_IG08: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ;; size=2 bbWeight=8 PerfScore 2.00 G_M36260_IG09: ; bbWeight=16, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz cmp edx, ebp
- jle SHORT G_M36260_IG10
+ jle SHORT G_M36260_IG11
cmp edx, r8d jae SHORT G_M36260_IG15 mov r10d, edx
- cmp dword ptr [rbx+4*r10+0x10], eax
+ mov r10d, dword ptr [rbx+4*r10+0x10] + cmp r10d, eax
jge SHORT G_M36260_IG08
- ;; size=19 bbWeight=16 PerfScore 108.00
+ ;; size=22 bbWeight=16 PerfScore 96.00
G_M36260_IG10: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- cmp ebp, edx - jge SHORT G_M36260_IG11
cmp ebp, r8d jae SHORT G_M36260_IG15
- mov r10d, ebp - mov r10d, dword ptr [rbx+4*r10+0x10] - cmp edx, r8d - jae SHORT G_M36260_IG15 - mov r9d, edx
+ mov r9d, ebp
mov r9d, dword ptr [rbx+4*r9+0x10] mov r11d, ebp
- mov dword ptr [rbx+4*r11+0x10], r9d - mov r9d, edx - mov dword ptr [rbx+4*r9+0x10], r10d - ;; size=46 bbWeight=2 PerfScore 21.50
+ mov dword ptr [rbx+4*r11+0x10], r10d + mov r10d, edx + mov dword ptr [rbx+4*r10+0x10], r9d + ;; size=29 bbWeight=2 PerfScore 12.00
G_M36260_IG11: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz cmp ebp, edx jl SHORT G_M36260_IG06 @@ -102,9 +98,9 @@ G_M36260_IG12: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr cmp ebp, r8d jae SHORT G_M36260_IG15 mov edx, ebp
- mov r10d, dword ptr [rbx+4*rdx+0x10]
+ mov r9d, dword ptr [rbx+4*rdx+0x10]
mov dword ptr [rbx+4*rdx+0x10], eax
- mov dword ptr [rbx+4*rdi+0x10], r10d
+ mov dword ptr [rbx+4*rdi+0x10], r9d
;; size=21 bbWeight=2 PerfScore 11.00 G_M36260_IG13: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref lea edx, [rbp-0x01] @@ -131,7 +127,7 @@ G_M36260_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 204, prolog size 13, PerfScore 344.75, instruction count 71, allocated bytes for code 204 (MethodHash=1870725b) for method Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (FullOpts)
+; Total bytes of code 186, prolog size 13, PerfScore 323.25, instruction count 66, allocated bytes for code 186 (MethodHash=1870725b) for method Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (FullOpts)
; ============================================================ Unwind Info:

+3 (+2.94%) : 16250.dasm - System.Runtime.Serialization.Json.JsonEncodingStreamWrapper:ReadEncoding(ubyte,ubyte):int (FullOpts)

@@ -10,9 +10,10 @@ ; V00 arg0 [V00,T01] ( 3, 3 ) ubyte -> rcx single-def ; V01 arg1 [V01,T00] ( 4, 3 ) ubyte -> rdx single-def ; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V04 tmp2 [V04,T04] ( 2, 0 ) ref -> rdx single-def "argument with side effect" -; V05 cse0 [V05,T02] ( 5, 2.50) int -> rcx multi-def "CSE - aggressive"
+; V03 tmp1 [V03,T04] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V04 tmp2 [V04,T05] ( 2, 0 ) ref -> rdx single-def "argument with side effect" +; V05 cse0 [V05,T03] ( 2, 2 ) int -> rax "CSE - aggressive" +; V06 cse1 [V06,T02] ( 5, 2.50) int -> rcx multi-def "CSE - aggressive"
; ; Lcl frame size = 32 @@ -21,9 +22,10 @@ G_M61710_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, sub rsp, 32 ;; size=5 bbWeight=1 PerfScore 1.25 G_M61710_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- test cl, cl
+ movzx rax, cl + test eax, eax
jne SHORT G_M61710_IG05
- ;; size=4 bbWeight=1 PerfScore 1.25
+ ;; size=7 bbWeight=1 PerfScore 1.50
G_M61710_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz movzx rcx, dl test ecx, ecx @@ -82,7 +84,7 @@ G_M61710_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { int3 ;; size=45 bbWeight=0 PerfScore 0.00
-; Total bytes of code 102, prolog size 5, PerfScore 7.62, instruction count 34, allocated bytes for code 102 (MethodHash=f5570ef1) for method System.Runtime.Serialization.Json.JsonEncodingStreamWrapper:ReadEncoding(ubyte,ubyte):int (FullOpts)
+; Total bytes of code 105, prolog size 5, PerfScore 7.88, instruction count 35, allocated bytes for code 105 (MethodHash=f5570ef1) for method System.Runtime.Serialization.Json.JsonEncodingStreamWrapper:ReadEncoding(ubyte,ubyte):int (FullOpts)
; ============================================================ Unwind Info:

+3 (+3.06%) : 4967.dasm - System.Net.Http.HttpConnection+HttpContentReadStream:Dispose(ubyte):this (FullOpts)

@@ -13,6 +13,7 @@ ; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 3, 3 ) ref -> rcx class-hnd exact single-def "Inlining Arg" <System.Net.Http.HttpConnection> ; V04 cse0 [V04,T03] ( 3, 1.50) ref -> rcx "CSE - moderate"
+; V05 cse1 [V05,T04] ( 2, 1 ) int -> rcx "CSE - moderate"
; ; Lcl frame size = 32 @@ -40,7 +41,8 @@ G_M41763_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr ;; size=6 bbWeight=0.50 PerfScore 0.88 G_M41763_IG04: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs +[rbx]
- test dl, dl
+ movzx rcx, dl + test ecx, ecx
je SHORT G_M41763_IG03 mov rcx, rbx ; gcrRegs +[rcx] @@ -57,7 +59,7 @@ G_M41763_IG04: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000 ; gcrRegs -[rcx rbx] +[rax] ; gcr arg pop 0 nop
- ;; size=31 bbWeight=0.50 PerfScore 6.62
+ ;; size=34 bbWeight=0.50 PerfScore 6.75
G_M41763_IG05: ; bbWeight=0.50, epilog, nogc, extend add rsp, 32 pop rbx @@ -80,7 +82,7 @@ G_M41763_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000 jmp SHORT G_M41763_IG03 ;; size=30 bbWeight=0.50 PerfScore 6.38
-; Total bytes of code 98, prolog size 5, PerfScore 41.25, instruction count 35, allocated bytes for code 98 (MethodHash=201e5cdc) for method System.Net.Http.HttpConnection+HttpContentReadStream:Dispose(ubyte):this (FullOpts)
+; Total bytes of code 101, prolog size 5, PerfScore 41.38, instruction count 36, allocated bytes for code 101 (MethodHash=201e5cdc) for method System.Net.Http.HttpConnection+HttpContentReadStream:Dispose(ubyte):this (FullOpts)
; ============================================================ Unwind Info:

+2 (+3.64%) : 4833.dasm - System.Net.Http.HttpConnectionPool:GetSslOptionsForRequest(System.Net.Http.HttpRequestMessage):System.Net.Security.SslClientAuthenticationOptions:this (FullOpts)

@@ -13,6 +13,7 @@ ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Version> ;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Version>
+; V05 cse0 [V05,T02] ( 2, 1 ) int -> rax "CSE - moderate"
; ; Lcl frame size = 0 @@ -26,12 +27,15 @@ G_M47920_IG02: ; bbWeight=1, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, G_M47920_IG03: ; bbWeight=0.50, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz mov rax, gword ptr [rdx+0x20] ; gcrRegs +[rax]
- cmp dword ptr [rax+0x08], 2
+ mov eax, dword ptr [rax+0x08] + ; gcrRegs -[rax] + cmp eax, 2
jl SHORT G_M47920_IG05 cmp dword ptr [rdx+0x3C], 0 je SHORT G_M47920_IG06 mov rax, gword ptr [rcx+0x98]
- ;; size=23 bbWeight=0.50 PerfScore 6.00
+ ; gcrRegs +[rax] + ;; size=25 bbWeight=0.50 PerfScore 5.62
G_M47920_IG04: ; bbWeight=0.50, epilog, nogc, extend ret ;; size=1 bbWeight=0.50 PerfScore 0.50 @@ -57,7 +61,7 @@ G_M47920_IG09: ; bbWeight=0.50, epilog, nogc, extend ret ;; size=1 bbWeight=0.50 PerfScore 0.50
-; Total bytes of code 55, prolog size 0, PerfScore 15.50, instruction count 15, allocated bytes for code 55 (MethodHash=a75444cf) for method System.Net.Http.HttpConnectionPool:GetSslOptionsForRequest(System.Net.Http.HttpRequestMessage):System.Net.Security.SslClientAuthenticationOptions:this (FullOpts)
+; Total bytes of code 57, prolog size 0, PerfScore 15.12, instruction count 16, allocated bytes for code 57 (MethodHash=a75444cf) for method System.Net.Http.HttpConnectionPool:GetSslOptionsForRequest(System.Net.Http.HttpRequestMessage):System.Net.Security.SslClientAuthenticationOptions:this (FullOpts)
; ============================================================ Unwind Info:

benchmarks.run_pgo.windows.x64.checked.mch

-42 (-50.60%) : 27201.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)

@@ -9,77 +9,54 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 3, 3 ) byref -> rsi this single-def -; V01 arg1 [V01,T00] ( 5, 4.50) ref -> rbx class-hnd single-def <System.Object> -; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V00 this [V00,T02] ( 3, 3 ) byref -> rcx this single-def +; V01 arg1 [V01,T00] ( 4, 4 ) ref -> rdx class-hnd single-def <System.Object> +;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> rax class-hnd "spilling QMark2" <System.Reflection.MetadataImport> ;* V04 tmp2 [V04 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Reflection.MetadataImport> ;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref "field V04.m_keepalive (fldOffset=0x0)" P-INDEP
-; V06 tmp4 [V06,T05] ( 2, 2 ) long -> rax "field V04.m_metadataImport2 (fldOffset=0x8)" P-INDEP -; V07 cse0 [V07,T03] ( 4, 2.50) long -> rcx "CSE - aggressive" -; V08 cse1 [V08,T04] ( 3, 2 ) long -> rdx "CSE - aggressive"
+; V06 tmp4 [V06,T03] ( 2, 2 ) long -> rax "field V04.m_metadataImport2 (fldOffset=0x8)" P-INDEP +; V07 cse0 [V07,T04] ( 2, 1 ) long -> r8 "CSE - moderate"
;
-; Lcl frame size = 40
+; Lcl frame size = 0
G_M38955_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rsi - push rbx - sub rsp, 40 - mov rsi, rcx - ; byrRegs +[rsi] - mov rbx, rdx - ; gcrRegs +[rbx] - ;; size=12 bbWeight=1 PerfScore 2.75 -G_M38955_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz - mov rax, rbx
+ ;; size=0 bbWeight=1 PerfScore 0.00 +G_M38955_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0002 {rcx}, byref, isz + ; gcrRegs +[rdx] + ; byrRegs +[rcx] + mov rax, rdx
; gcrRegs +[rax] test rax, rax
- je SHORT G_M38955_IG08
+ jne SHORT G_M38955_IG05
;; size=8 bbWeight=1 PerfScore 1.50
-G_M38955_IG03: ; bbWeight=0.50, gcrefRegs=0009 {rax rbx}, byrefRegs=0040 {rsi}, byref, isz - mov rdx, qword ptr [rax] - mov rcx, 0xD1FFAB1E ; System.Reflection.MetadataImport - cmp rdx, rcx - jne SHORT G_M38955_IG08 - ;; size=18 bbWeight=0.50 PerfScore 1.75 -G_M38955_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz
+G_M38955_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[rax rdx] + ; byrRegs -[rcx] + xor eax, eax + ;; size=2 bbWeight=1 PerfScore 0.25 +G_M38955_IG04: ; bbWeight=1, epilog, nogc, extend + ret + ;; size=1 bbWeight=1 PerfScore 1.00 +G_M38955_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0005 {rax rdx}, byrefRegs=0002 {rcx}, gcvars, byref, isz + ; gcrRegs +[rax rdx] + ; byrRegs +[rcx] + mov r8, 0xD1FFAB1E ; System.Reflection.MetadataImport + cmp qword ptr [rax], r8 + jne SHORT G_M38955_IG03 + ;; size=15 bbWeight=0.50 PerfScore 2.12 +G_M38955_IG06: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0002 {rcx}, byref
; gcrRegs -[rax]
- cmp rdx, rcx - jne SHORT G_M38955_IG07 - ;; size=5 bbWeight=1 PerfScore 1.25 -G_M38955_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref - mov rax, qword ptr [rbx+0x10] - cmp rax, qword ptr [rsi+0x08]
+ mov rax, qword ptr [rdx+0x10] + cmp rax, qword ptr [rcx+0x08]
sete al movzx rax, al ;; size=14 bbWeight=1 PerfScore 6.25
-G_M38955_IG06: ; bbWeight=1, epilog, nogc, extend - add rsp, 40 - pop rbx - pop rsi
+G_M38955_IG07: ; bbWeight=1, epilog, nogc, extend
ret
- ;; size=7 bbWeight=1 PerfScore 2.25 -G_M38955_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, gcvars, byref, isz - mov rdx, rbx - ; gcrRegs +[rdx] - call CORINFO_HELP_UNBOX - ; gcrRegs -[rdx] - ; gcr arg pop 0 - jmp SHORT G_M38955_IG05 - ;; size=10 bbWeight=0.50 PerfScore 1.62 -G_M38955_IG08: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[rbx] - ; byrRegs -[rsi] - xor eax, eax - ;; size=2 bbWeight=0.25 PerfScore 0.06 -G_M38955_IG09: ; bbWeight=0.25, epilog, nogc, extend - add rsp, 40 - pop rbx - pop rsi - ret - ;; size=7 bbWeight=0.25 PerfScore 0.56
+ ;; size=1 bbWeight=1 PerfScore 1.00
-; Total bytes of code 83, prolog size 6, PerfScore 18.00, instruction count 30, allocated bytes for code 83 (MethodHash=885867d4) for method System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 41, prolog size 0, PerfScore 12.12, instruction count 13, allocated bytes for code 41 (MethodHash=885867d4) for method System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -87,11 +64,8 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x06 - CountOfUnwindCodes: 3
+ SizeOfProlog : 0x00 + CountOfUnwindCodes: 0
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x06 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28 - CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)

-42 (-50.60%) : 34657.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)

@@ -9,77 +9,54 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 3, 3 ) byref -> rsi this single-def -; V01 arg1 [V01,T00] ( 5, 4.50) ref -> rbx class-hnd single-def <System.Object> -; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V00 this [V00,T02] ( 3, 3 ) byref -> rcx this single-def +; V01 arg1 [V01,T00] ( 4, 4 ) ref -> rdx class-hnd single-def <System.Object> +;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> rax class-hnd "spilling QMark2" <System.Reflection.MetadataImport> ;* V04 tmp2 [V04 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Reflection.MetadataImport> ;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref "field V04.m_keepalive (fldOffset=0x0)" P-INDEP
-; V06 tmp4 [V06,T05] ( 2, 2 ) long -> rax "field V04.m_metadataImport2 (fldOffset=0x8)" P-INDEP -; V07 cse0 [V07,T03] ( 4, 2.50) long -> rcx "CSE - aggressive" -; V08 cse1 [V08,T04] ( 3, 2 ) long -> rdx "CSE - aggressive"
+; V06 tmp4 [V06,T03] ( 2, 2 ) long -> rax "field V04.m_metadataImport2 (fldOffset=0x8)" P-INDEP +; V07 cse0 [V07,T04] ( 2, 1 ) long -> r8 "CSE - moderate"
;
-; Lcl frame size = 40
+; Lcl frame size = 0
G_M38955_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rsi - push rbx - sub rsp, 40 - mov rsi, rcx - ; byrRegs +[rsi] - mov rbx, rdx - ; gcrRegs +[rbx] - ;; size=12 bbWeight=1 PerfScore 2.75 -G_M38955_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz - mov rax, rbx
+ ;; size=0 bbWeight=1 PerfScore 0.00 +G_M38955_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0002 {rcx}, byref, isz + ; gcrRegs +[rdx] + ; byrRegs +[rcx] + mov rax, rdx
; gcrRegs +[rax] test rax, rax
- je SHORT G_M38955_IG08
+ jne SHORT G_M38955_IG05
;; size=8 bbWeight=1 PerfScore 1.50
-G_M38955_IG03: ; bbWeight=0.50, gcrefRegs=0009 {rax rbx}, byrefRegs=0040 {rsi}, byref, isz - mov rdx, qword ptr [rax] - mov rcx, 0xD1FFAB1E ; System.Reflection.MetadataImport - cmp rdx, rcx - jne SHORT G_M38955_IG08 - ;; size=18 bbWeight=0.50 PerfScore 1.75 -G_M38955_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz
+G_M38955_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[rax rdx] + ; byrRegs -[rcx] + xor eax, eax + ;; size=2 bbWeight=1 PerfScore 0.25 +G_M38955_IG04: ; bbWeight=1, epilog, nogc, extend + ret + ;; size=1 bbWeight=1 PerfScore 1.00 +G_M38955_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0005 {rax rdx}, byrefRegs=0002 {rcx}, gcvars, byref, isz + ; gcrRegs +[rax rdx] + ; byrRegs +[rcx] + mov r8, 0xD1FFAB1E ; System.Reflection.MetadataImport + cmp qword ptr [rax], r8 + jne SHORT G_M38955_IG03 + ;; size=15 bbWeight=0.50 PerfScore 2.12 +G_M38955_IG06: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0002 {rcx}, byref
; gcrRegs -[rax]
- cmp rdx, rcx - jne SHORT G_M38955_IG07 - ;; size=5 bbWeight=1 PerfScore 1.25 -G_M38955_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref - mov rax, qword ptr [rbx+0x10] - cmp rax, qword ptr [rsi+0x08]
+ mov rax, qword ptr [rdx+0x10] + cmp rax, qword ptr [rcx+0x08]
sete al movzx rax, al ;; size=14 bbWeight=1 PerfScore 6.25
-G_M38955_IG06: ; bbWeight=1, epilog, nogc, extend - add rsp, 40 - pop rbx - pop rsi
+G_M38955_IG07: ; bbWeight=1, epilog, nogc, extend
ret
- ;; size=7 bbWeight=1 PerfScore 2.25 -G_M38955_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, gcvars, byref, isz - mov rdx, rbx - ; gcrRegs +[rdx] - call CORINFO_HELP_UNBOX - ; gcrRegs -[rdx] - ; gcr arg pop 0 - jmp SHORT G_M38955_IG05 - ;; size=10 bbWeight=0.50 PerfScore 1.62 -G_M38955_IG08: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[rbx] - ; byrRegs -[rsi] - xor eax, eax - ;; size=2 bbWeight=0.25 PerfScore 0.06 -G_M38955_IG09: ; bbWeight=0.25, epilog, nogc, extend - add rsp, 40 - pop rbx - pop rsi - ret - ;; size=7 bbWeight=0.25 PerfScore 0.56
+ ;; size=1 bbWeight=1 PerfScore 1.00
-; Total bytes of code 83, prolog size 6, PerfScore 18.00, instruction count 30, allocated bytes for code 83 (MethodHash=885867d4) for method System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 41, prolog size 0, PerfScore 12.12, instruction count 13, allocated bytes for code 41 (MethodHash=885867d4) for method System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -87,11 +64,8 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x06 - CountOfUnwindCodes: 3
+ SizeOfProlog : 0x00 + CountOfUnwindCodes: 0
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x06 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28 - CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)

-40 (-49.38%) : 42920.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)

@@ -9,76 +9,53 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 3, 3 ) byref -> rsi this single-def -; V01 arg1 [V01,T00] ( 5, 4.50) ref -> rbx class-hnd single-def <System.Object> -; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" -; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> rdx class-hnd "spilling QMark2" <System.Reflection.MetadataImport>
+; V00 this [V00,T02] ( 3, 3 ) byref -> rcx this single-def +; V01 arg1 [V01,T00] ( 4, 4 ) ref -> rdx class-hnd single-def <System.Object> +;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" +; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> rax class-hnd "spilling QMark2" <System.Reflection.MetadataImport>
;* V04 tmp2 [V04 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Reflection.MetadataImport> ;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref "field V04.m_keepalive (fldOffset=0x0)" P-INDEP
-; V06 tmp4 [V06,T05] ( 2, 2 ) long -> rax "field V04.m_metadataImport2 (fldOffset=0x8)" P-INDEP -; V07 cse0 [V07,T03] ( 4, 2.50) long -> rcx "CSE - aggressive" -; V08 cse1 [V08,T04] ( 3, 2 ) long -> rdx "CSE - aggressive"
+; V06 tmp4 [V06,T03] ( 2, 2 ) long -> rax "field V04.m_metadataImport2 (fldOffset=0x8)" P-INDEP +; V07 cse0 [V07,T04] ( 2, 1 ) long -> r8 "CSE - moderate"
;
-; Lcl frame size = 40
+; Lcl frame size = 0
G_M38955_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- push rsi - push rbx - sub rsp, 40 - mov rsi, rcx - ; byrRegs +[rsi] - mov rbx, rdx - ; gcrRegs +[rbx] - ;; size=12 bbWeight=1 PerfScore 2.75 -G_M38955_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz - mov rdx, rbx
+ ;; size=0 bbWeight=1 PerfScore 0.00 +G_M38955_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0002 {rcx}, byref, isz
; gcrRegs +[rdx]
- test rdx, rdx - je SHORT G_M38955_IG08
+ ; byrRegs +[rcx] + mov rax, rdx + ; gcrRegs +[rax] + test rax, rax + je SHORT G_M38955_IG04
;; size=8 bbWeight=1 PerfScore 1.50
-G_M38955_IG03: ; bbWeight=0.50, gcrefRegs=000C {rdx rbx}, byrefRegs=0040 {rsi}, byref, isz - mov rdx, qword ptr [rdx] - ; gcrRegs -[rdx] - mov rcx, 0xD1FFAB1E ; System.Reflection.MetadataImport - cmp rdx, rcx - jne SHORT G_M38955_IG08 - ;; size=18 bbWeight=0.50 PerfScore 1.75 -G_M38955_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz - cmp rdx, rcx
+G_M38955_IG03: ; bbWeight=0.50, gcrefRegs=0005 {rax rdx}, byrefRegs=0002 {rcx}, byref, isz + mov r8, 0xD1FFAB1E ; System.Reflection.MetadataImport + cmp qword ptr [rax], r8
je SHORT G_M38955_IG06
- ;; size=5 bbWeight=1 PerfScore 1.25 -G_M38955_IG05: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref - mov rdx, rbx
+ ;; size=15 bbWeight=0.50 PerfScore 2.12 +G_M38955_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[rax rdx] + ; byrRegs -[rcx] + xor eax, eax + ;; size=2 bbWeight=1 PerfScore 0.25 +G_M38955_IG05: ; bbWeight=1, epilog, nogc, extend + ret + ;; size=1 bbWeight=1 PerfScore 1.00 +G_M38955_IG06: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0004 {rdx}, byrefRegs=0002 {rcx}, gcvars, byref
; gcrRegs +[rdx]
- call CORINFO_HELP_UNBOX - ; gcrRegs -[rdx] - ; gcr arg pop 0 - ;; size=8 bbWeight=0.50 PerfScore 0.62 -G_M38955_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref - mov rax, qword ptr [rbx+0x10] - cmp rax, qword ptr [rsi+0x08]
+ ; byrRegs +[rcx] + mov rax, qword ptr [rdx+0x10] + cmp rax, qword ptr [rcx+0x08]
sete al movzx rax, al ;; size=14 bbWeight=1 PerfScore 6.25 G_M38955_IG07: ; bbWeight=1, epilog, nogc, extend
- add rsp, 40 - pop rbx - pop rsi
ret
- ;; size=7 bbWeight=1 PerfScore 2.25 -G_M38955_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[rbx] - ; byrRegs -[rsi] - xor eax, eax - ;; size=2 bbWeight=0 PerfScore 0.00 -G_M38955_IG09: ; bbWeight=0, epilog, nogc, extend - add rsp, 40 - pop rbx - pop rsi - ret - ;; size=7 bbWeight=0 PerfScore 0.00
+ ;; size=1 bbWeight=1 PerfScore 1.00
-; Total bytes of code 81, prolog size 6, PerfScore 16.38, instruction count 29, allocated bytes for code 81 (MethodHash=885867d4) for method System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 41, prolog size 0, PerfScore 12.12, instruction count 13, allocated bytes for code 41 (MethodHash=885867d4) for method System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -86,11 +63,8 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x06 - CountOfUnwindCodes: 3
+ SizeOfProlog : 0x00 + CountOfUnwindCodes: 0
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x06 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28 - CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)

+25 (+8.59%) : 68340.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_IsDelaySigned():ubyte:this (Tier1)

@@ -20,16 +20,16 @@ ;* V08 tmp6 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions> ;* V09 tmp7 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V10 tmp8 [V10,T10] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
-; V11 tmp9 [V11,T03] ( 5, 5 ) ubyte -> rdi "Inline stloc first use temp"
+; V11 tmp9 [V11,T06] ( 5, 3 ) ubyte -> rdi "Inline stloc first use temp"
;* V12 tmp10 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]> ;* V13 tmp11 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
-; V14 tmp12 [V14,T06] ( 5, 4 ) ref -> rbp class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]> -; V15 tmp13 [V15,T04] ( 3, 4.50) ref -> rdx single-def "CASTCLASS eval op1"
+; V14 tmp12 [V14,T05] ( 5, 4 ) ref -> rbp class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]> +; V15 tmp13 [V15,T03] ( 3, 4.50) ref -> rdx single-def "CASTCLASS eval op1"
; V16 tmp14 [V16,T08] ( 3, 2.50) long -> rcx "fgMakeTemp is creating a new local variable"
-; V17 tmp15 [V17,T01] ( 5, 7.50) ref -> rax class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]> -; V18 tmp16 [V18,T05] ( 3, 4.50) ref -> rdx single-def "CASTCLASS eval op1"
+; V17 tmp15 [V17,T01] ( 5, 5.50) ref -> rax class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]> +; V18 tmp16 [V18,T04] ( 3, 4.50) ref -> rdx single-def "CASTCLASS eval op1"
; V19 tmp17 [V19,T09] ( 3, 2.50) long -> rcx "fgMakeTemp is creating a new local variable"
-; V20 tmp18 [V20,T02] ( 5, 7.50) ref -> rax class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
+; V20 tmp18 [V20,T02] ( 5, 5.50) ref -> r8 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
;* V21 tmp19 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]> ; V22 tmp20 [V22 ] ( 4, 2 ) ubyte -> [rsp+0x20] do-not-enreg[X] addr-exposed "field V01.hasValue (fldOffset=0x0)" P-DEP ; V23 tmp21 [V23 ] ( 3, 1 ) ubyte -> [rsp+0x21] do-not-enreg[X] addr-exposed "field V01.value (fldOffset=0x1)" P-DEP @@ -55,16 +55,16 @@ G_M43884_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcrRegs -[rcx] mov word ptr [rsp+0x20], cx cmp byte ptr [rsp+0x20], 0
- jne G_M43884_IG14
+ jne G_M43884_IG12
cmp byte ptr [rsi+0x88], 0
- jne G_M43884_IG16
+ jne G_M43884_IG14
xor edi, edi mov rbp, gword ptr [rbx+0x80] ; gcrRegs +[rbp] test rbp, rbp
- je G_M43884_IG18
+ je G_M43884_IG16
test byte ptr [rbp+0x18], 2
- je G_M43884_IG18
+ je G_M43884_IG16
;; size=72 bbWeight=1 PerfScore 21.50 G_M43884_IG03: ; bbWeight=1, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rsi] @@ -73,62 +73,60 @@ G_M43884_IG03: ; bbWeight=1, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, mov rax, rdx ; gcrRegs +[rax] test rax, rax
- je SHORT G_M43884_IG07
+ je SHORT G_M43884_IG06
;; size=12 bbWeight=1 PerfScore 3.50
-G_M43884_IG04: ; bbWeight=0.50, gcrefRegs=000D {rax rdx rbx}, byrefRegs=0000 {}, byref, isz
+G_M43884_IG04: ; bbWeight=0.50, gcrefRegs=000D {rax rdx rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rbp] mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol] cmp qword ptr [rax], rcx
- je SHORT G_M43884_IG06 - ;; size=15 bbWeight=0.50 PerfScore 2.12
+ je G_M43884_IG17 + ;; size=19 bbWeight=0.50 PerfScore 2.12
G_M43884_IG05: ; bbWeight=0.25, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref ; gcrRegs -[rax] call CORINFO_HELP_CHKCASTCLASS_SPECIAL ; gcrRegs -[rdx] +[rax] ; gcr arg pop 0
- ;; size=5 bbWeight=0.25 PerfScore 0.25 -G_M43884_IG06: ; bbWeight=1, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref - movzx rdi, byte ptr [rax+0x84] - ;; size=8 bbWeight=1 PerfScore 2.00 -G_M43884_IG07: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jmp G_M43884_IG17 + ;; size=10 bbWeight=0.25 PerfScore 0.75 +G_M43884_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax] test edi, edi
- jne SHORT G_M43884_IG12
+ jne SHORT G_M43884_IG10
cmp gword ptr [rbx+0x88], 0
- je G_M43884_IG19
+ je G_M43884_IG18
;; size=18 bbWeight=1 PerfScore 5.25
-G_M43884_IG08: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M43884_IG07: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rcx, gword ptr [rbx+0x88] ; gcrRegs +[rcx] mov rdx, gword ptr [rcx+0x08] ; gcrRegs +[rdx]
- mov rax, rdx - ; gcrRegs +[rax] - test rax, rax - je SHORT G_M43884_IG12
+ mov r8, rdx + ; gcrRegs +[r8] + test r8, r8 + je SHORT G_M43884_IG10
;; size=19 bbWeight=1 PerfScore 5.50
-G_M43884_IG09: ; bbWeight=0.50, gcrefRegs=0005 {rax rdx}, byrefRegs=0000 {}, byref, isz
+G_M43884_IG08: ; bbWeight=0.50, gcrefRegs=0104 {rdx r8}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx rbx] mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]
- cmp qword ptr [rax], rcx - je SHORT G_M43884_IG11 - ;; size=15 bbWeight=0.50 PerfScore 2.12 -G_M43884_IG10: ; bbWeight=0.25, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax]
+ cmp qword ptr [r8], rcx + je G_M43884_IG19 + ;; size=19 bbWeight=0.50 PerfScore 2.12 +G_M43884_IG09: ; bbWeight=0.25, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r8]
call CORINFO_HELP_CHKCASTCLASS_SPECIAL ; gcrRegs -[rdx] +[rax] ; gcr arg pop 0
- ;; size=5 bbWeight=0.25 PerfScore 0.25 -G_M43884_IG11: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref - movzx rdi, byte ptr [rax+0x84] - ;; size=8 bbWeight=1 PerfScore 2.00 -G_M43884_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax]
+ mov r8, rax + ; gcrRegs +[r8] + jmp SHORT G_M43884_IG19 + ;; size=10 bbWeight=0.25 PerfScore 0.81 +G_M43884_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[rax r8]
xor eax, eax cmp edi, 2 sete al ;; size=8 bbWeight=1 PerfScore 1.50
-G_M43884_IG13: ; bbWeight=1, epilog, nogc, extend
+G_M43884_IG11: ; bbWeight=1, epilog, nogc, extend
add rsp, 40 pop rbx pop rbp @@ -136,7 +134,7 @@ G_M43884_IG13: ; bbWeight=1, epilog, nogc, extend pop rdi ret ;; size=9 bbWeight=1 PerfScore 3.25
-G_M43884_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref
+G_M43884_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rsi] mov cx, word ptr [rsi+0x98] mov word ptr [rsp+0x20], cx @@ -146,6 +144,17 @@ G_M43884_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0040 { ; gcr arg pop 0 nop ;; size=24 bbWeight=0 PerfScore 0.00
+G_M43884_IG13: ; bbWeight=0, epilog, nogc, extend + add rsp, 40 + pop rbx + pop rbp + pop rsi + pop rdi + ret + ;; size=9 bbWeight=0 PerfScore 0.00 +G_M43884_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + xor eax, eax + ;; size=2 bbWeight=0 PerfScore 0.00
G_M43884_IG15: ; bbWeight=0, epilog, nogc, extend add rsp, 40 pop rbx @@ -154,18 +163,7 @@ G_M43884_IG15: ; bbWeight=0, epilog, nogc, extend pop rdi ret ;; size=9 bbWeight=0 PerfScore 0.00
-G_M43884_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - xor eax, eax - ;; size=2 bbWeight=0 PerfScore 0.00 -G_M43884_IG17: ; bbWeight=0, epilog, nogc, extend - add rsp, 40 - pop rbx - pop rbp - pop rsi - pop rdi - ret - ;; size=9 bbWeight=0 PerfScore 0.00 -G_M43884_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+G_M43884_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rbx] mov rcx, rbx ; gcrRegs +[rcx] @@ -176,8 +174,13 @@ G_M43884_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 { ; gcrRegs +[rbp] jmp G_M43884_IG03 ;; size=21 bbWeight=0 PerfScore 0.00
-G_M43884_IG19: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - ; gcrRegs -[rbp]
+G_M43884_IG17: ; bbWeight=0, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref + ; gcrRegs -[rbp] +[rax] + movzx rdi, byte ptr [rax+0x84] + jmp G_M43884_IG06 + ;; size=13 bbWeight=0 PerfScore 0.00 +G_M43884_IG18: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref + ; gcrRegs -[rax]
lea rdx, bword ptr [rbx+0x88] ; byrRegs +[rdx] mov rcx, rbx @@ -186,10 +189,15 @@ G_M43884_IG19: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcrRegs -[rcx] ; byrRegs -[rdx] ; gcr arg pop 0
- jmp G_M43884_IG08
+ jmp G_M43884_IG07
;; size=21 bbWeight=0 PerfScore 0.00
+G_M43884_IG19: ; bbWeight=0, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rbx] +[r8] + movzx rdi, byte ptr [r8+0x84] + jmp SHORT G_M43884_IG10 + ;; size=10 bbWeight=0 PerfScore 0.00
-; Total bytes of code 291, prolog size 8, PerfScore 53.75, instruction count 78, allocated bytes for code 291 (MethodHash=8b225493) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_IsDelaySigned():ubyte:this (Tier1)
+; Total bytes of code 316, prolog size 8, PerfScore 50.81, instruction count 83, allocated bytes for code 316 (MethodHash=8b225493) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_IsDelaySigned():ubyte:this (Tier1)
; ============================================================ Unwind Info:

+37 (+10.69%) : 27089.dasm - System.Text.Ascii:ChangeCaseushort,ushort,System.Text.Ascii+ToUpperConversion:int (Tier1)

@@ -12,8 +12,8 @@ ; V00 arg0 [V00,T00] ( 4, 8 ) byref -> rcx ld-addr-op single-def ; V01 arg1 [V01,T01] ( 4, 8 ) byref -> rdx ld-addr-op single-def ; V02 arg2 [V02,T04] ( 3, 3 ) byref -> rbx single-def
-; V03 loc0 [V03,T05] ( 5, 4 ) long -> r13 -; V04 loc1 [V04,T15] ( 3, 2 ) int -> r12
+; V03 loc0 [V03,T05] ( 5, 4 ) long -> r12 +; V04 loc1 [V04,T15] ( 3, 2 ) int -> r14
;* V05 loc2 [V05 ] ( 0, 0 ) long -> zero-ref ; V06 loc3 [V06 ] ( 1, 1 ) byref -> [rsp+0x30] must-init pinned single-def ;* V07 loc4 [V07 ] ( 0, 0 ) long -> zero-ref @@ -26,14 +26,14 @@ ;* V14 tmp4 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V15 tmp5 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]> ;* V16 tmp6 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-; V17 tmp7 [V17,T02] ( 4, 8 ) int -> r15 "Inlining Arg"
+; V17 tmp7 [V17,T03] ( 5, 8 ) int -> r15 "Inlining Arg"
;* V18 tmp8 [V18 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" ;* V19 tmp9 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V20 tmp10 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V21 tmp11 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V22 tmp12 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]> ;* V23 tmp13 [V23 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
-; V24 tmp14 [V24,T03] ( 4, 8 ) int -> r13 "Inlining Arg"
+; V24 tmp14 [V24,T02] ( 6, 8 ) int -> r13 "Inlining Arg"
;* V25 tmp15 [V25 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" ;* V26 tmp16 [V26 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V27 tmp17 [V27 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -57,7 +57,7 @@ ; V45 tmp35 [V45,T07] ( 4, 4 ) byref -> rbp single-def "field V00._reference (fldOffset=0x0)" P-INDEP ; V46 tmp36 [V46,T06] ( 5, 4 ) int -> r14 "field V00._length (fldOffset=0x8)" P-INDEP ; V47 tmp37 [V47,T08] ( 4, 4 ) byref -> rsi single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V48 tmp38 [V48,T13] ( 5, 3 ) int -> rdi "field V01._length (fldOffset=0x8)" P-INDEP
+; V48 tmp38 [V48,T13] ( 6, 3 ) int -> rdi "field V01._length (fldOffset=0x8)" P-INDEP
;* V49 tmp39 [V49 ] ( 0, 0 ) byref -> zero-ref single-def "field V11._reference (fldOffset=0x0)" P-INDEP ;* V50 tmp40 [V50 ] ( 0, 0 ) int -> zero-ref "field V11._length (fldOffset=0x8)" P-INDEP ;* V51 tmp41 [V51 ] ( 0, 0 ) byref -> zero-ref "field V12._reference (fldOffset=0x0)" P-INDEP @@ -128,33 +128,19 @@ G_M47258_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=000E {rcx rdx r jo G_M47258_IG10 test r15d, r15d jl G_M47258_IG11
- ;; size=32 bbWeight=1 PerfScore 12.25 -G_M47258_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0068 {rbx rbp rsi}, byref, isz - ; byrRegs -[rcx rdx]
imul r13d, edi, 2 jo G_M47258_IG10 test r13d, r13d
- jge SHORT G_M47258_IG04 - mov rcx, 0xD1FFAB1E - ; gcrRegs +[rcx] - mov rdx, 0xD1FFAB1E - ; gcrRegs +[rdx] - call [<unknown method>] - ; gcrRegs -[rcx rdx] - ; gcr arg pop 0 - mov rcx, 0xD1FFAB1E - ; gcrRegs +[rcx] - mov rdx, 0xD1FFAB1E - ; gcrRegs +[rdx] - call [<unknown method>] - ; gcrRegs -[rcx rdx] - ; gcr arg pop 0 - ;; size=67 bbWeight=1 PerfScore 11.25 -G_M47258_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0068 {rbx rbp rsi}, byref, isz
+ jl G_M47258_IG12 + ;; size=51 bbWeight=1 PerfScore 16.50 +G_M47258_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0068 {rbx rbp rsi}, byref + ; byrRegs -[rcx rdx]
test r15d, r15d
- je G_M47258_IG12
+ je G_M47258_IG13 + ;; size=9 bbWeight=1 PerfScore 1.25 +G_M47258_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0068 {rbx rbp rsi}, byref, isz
test r13d, r13d
- je G_M47258_IG12
+ je G_M47258_IG13
mov rdx, rsi ; byrRegs +[rdx] sub rdx, rbp @@ -167,9 +153,9 @@ G_M47258_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0068 {rbx rbp r cmp rcx, rdx jb SHORT G_M47258_IG05 cmp r14d, edi
- jg G_M47258_IG13
+ jg G_M47258_IG14
jmp SHORT G_M47258_IG06
- ;; size=54 bbWeight=1 PerfScore 9.50
+ ;; size=45 bbWeight=1 PerfScore 8.25
G_M47258_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs -[rbx rbp rsi] mov ecx, 72 @@ -179,27 +165,27 @@ G_M47258_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ;; size=12 bbWeight=0 PerfScore 0.00 G_M47258_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0068 {rbx rbp rsi}, byref ; byrRegs +[rbx rbp rsi]
- mov r13d, r14d - xor r12d, r12d
+ mov r12d, r14d + xor r14d, r14d
;; size=6 bbWeight=1 PerfScore 0.50
-G_M47258_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0068 {rbx rbp rsi}, byref, isz
+G_M47258_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0068 {rbx rbp rsi}, byref
mov bword ptr [rsp+0x30], rbp mov rcx, rbp mov bword ptr [rsp+0x28], rsi mov rdx, rsi
- mov r8, r13
+ mov r8, r12
call [<unknown method>] ; byrRegs -[rbp rsi] ; gcr arg pop 0 mov rsi, rax
- cmp rsi, r13 - ja SHORT G_M47258_IG14 - ;; size=33 bbWeight=1 PerfScore 7.25
+ cmp rsi, r12 + ja G_M47258_IG15 + ;; size=37 bbWeight=1 PerfScore 7.25
G_M47258_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref mov dword ptr [rbx], esi mov eax, 3
- cmp r13, rsi - cmove eax, r12d
+ cmp r12, rsi + cmove eax, r14d
;; size=14 bbWeight=1 PerfScore 1.75 G_M47258_IG09: ; bbWeight=1, epilog, nogc, extend add rsp, 56 @@ -218,7 +204,7 @@ G_M47258_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { call CORINFO_HELP_OVERFLOW ; gcr arg pop 0 ;; size=5 bbWeight=0 PerfScore 0.00
-G_M47258_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0068 {rbx rbp rsi}, byref
+G_M47258_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0068 {rbx rbp rsi}, byref, isz
; byrRegs +[rbx rbp rsi] mov rcx, 0xD1FFAB1E ; gcrRegs +[rcx] @@ -227,18 +213,39 @@ G_M47258_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0068 {rbx rbp r call [<unknown method>] ; gcrRegs -[rcx rdx] ; gcr arg pop 0
- jmp G_M47258_IG03 - ;; size=31 bbWeight=0 PerfScore 0.00 -G_M47258_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0068 {rbx rbp rsi}, byref, isz
+ imul r13d, edi, 2 + jo SHORT G_M47258_IG10 + test r13d, r13d + jge G_M47258_IG03 + ;; size=41 bbWeight=0 PerfScore 0.00 +G_M47258_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0068 {rbx rbp rsi}, byref + mov rcx, 0xD1FFAB1E + ; gcrRegs +[rcx] + mov rdx, 0xD1FFAB1E + ; gcrRegs +[rdx] + call [<unknown method>] + ; gcrRegs -[rcx rdx] + ; gcr arg pop 0 + mov rcx, 0xD1FFAB1E + ; gcrRegs +[rcx] + mov rdx, 0xD1FFAB1E + ; gcrRegs +[rdx] + call [<unknown method>] + ; gcrRegs -[rcx rdx] + ; gcr arg pop 0 + test r15d, r15d + jne G_M47258_IG04 + ;; size=61 bbWeight=0 PerfScore 0.00 +G_M47258_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0068 {rbx rbp rsi}, byref
cmp r14d, edi
- jle SHORT G_M47258_IG06 - ;; size=5 bbWeight=0 PerfScore 0.00 -G_M47258_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0068 {rbx rbp rsi}, byref, isz - mov r13d, edi - mov r12d, 1 - jmp SHORT G_M47258_IG07 - ;; size=11 bbWeight=0 PerfScore 0.00 -G_M47258_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+ jle G_M47258_IG06 + ;; size=9 bbWeight=0 PerfScore 0.00 +G_M47258_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0068 {rbx rbp rsi}, byref + mov r12d, edi + mov r14d, 1 + jmp G_M47258_IG07 + ;; size=14 bbWeight=0 PerfScore 0.00 +G_M47258_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
; byrRegs -[rbp rsi] mov rcx, 0xD1FFAB1E ; gcrRegs +[rcx] @@ -247,10 +254,10 @@ G_M47258_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr call [<unknown method>] ; gcrRegs -[rcx rdx] ; gcr arg pop 0
- jmp SHORT G_M47258_IG08 - ;; size=28 bbWeight=0 PerfScore 0.00
+ jmp G_M47258_IG08 + ;; size=31 bbWeight=0 PerfScore 0.00
-; Total bytes of code 346, prolog size 28, PerfScore 58.50, instruction count 89, allocated bytes for code 346 (MethodHash=ad1d4765) for method System.Text.Ascii:ChangeCase[ushort,ushort,System.Text.Ascii+ToUpperConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):int (Tier1)
+; Total bytes of code 383, prolog size 28, PerfScore 51.50, instruction count 94, allocated bytes for code 383 (MethodHash=ad1d4765) for method System.Text.Ascii:ChangeCase[ushort,ushort,System.Text.Ascii+ToUpperConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):int (Tier1)
; ============================================================ Unwind Info:

+20 (+11.83%) : 69696.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)

@@ -9,18 +9,18 @@ ; 3 inlinees with PGO data; 8 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 9, 5 ) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol> -; V01 loc0 [V01,T03] ( 5, 5 ) int -> rsi
+; V00 this [V00,T00] ( 10, 5 ) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol> +; V01 loc0 [V01,T08] ( 5, 2 ) int -> rsi
;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]> ; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
-; V05 tmp2 [V05,T06] ( 5, 4 ) ref -> rdi class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]> -; V06 tmp3 [V06,T04] ( 3, 4.50) ref -> rdx single-def "CASTCLASS eval op1" -; V07 tmp4 [V07,T07] ( 3, 2.50) long -> rcx "fgMakeTemp is creating a new local variable" -; V08 tmp5 [V08,T00] ( 5, 7.50) ref -> rax class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]> -; V09 tmp6 [V09,T05] ( 3, 4.50) ref -> rdx single-def "CASTCLASS eval op1" -; V10 tmp7 [V10,T08] ( 3, 2.50) long -> rcx "fgMakeTemp is creating a new local variable" -; V11 tmp8 [V11,T01] ( 5, 7.50) ref -> rax class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
+; V05 tmp2 [V05,T05] ( 5, 4 ) ref -> rdi class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]> +; V06 tmp3 [V06,T03] ( 3, 4.50) ref -> rdx single-def "CASTCLASS eval op1" +; V07 tmp4 [V07,T06] ( 3, 2.50) long -> rcx "fgMakeTemp is creating a new local variable" +; V08 tmp5 [V08,T01] ( 5, 5.50) ref -> rax class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]> +; V09 tmp6 [V09,T04] ( 3, 4.50) ref -> rdx single-def "CASTCLASS eval op1" +; V10 tmp7 [V10,T07] ( 3, 2.50) long -> rcx "fgMakeTemp is creating a new local variable" +; V11 tmp8 [V11,T02] ( 5, 5.50) ref -> r8 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
;* V12 tmp9 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]> ; ; Lcl frame size = 32 @@ -38,9 +38,9 @@ G_M4380_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byre mov rdi, gword ptr [rbx+0x80] ; gcrRegs +[rdi] test rdi, rdi
- je SHORT G_M4380_IG14
+ je SHORT G_M4380_IG12
test byte ptr [rdi+0x18], 2
- je SHORT G_M4380_IG14
+ je SHORT G_M4380_IG12
;; size=20 bbWeight=1 PerfScore 7.50 G_M4380_IG03: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz mov rdx, gword ptr [rdi+0x08] @@ -48,65 +48,63 @@ G_M4380_IG03: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, mov rax, rdx ; gcrRegs +[rax] test rax, rax
- je SHORT G_M4380_IG07
+ je SHORT G_M4380_IG06
;; size=12 bbWeight=1 PerfScore 3.50 G_M4380_IG04: ; bbWeight=0.50, gcrefRegs=000D {rax rdx rbx}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rdi] mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol] cmp qword ptr [rax], rcx
- je SHORT G_M4380_IG06
+ je SHORT G_M4380_IG13
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M4380_IG05: ; bbWeight=0.25, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref
+G_M4380_IG05: ; bbWeight=0.25, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax] call CORINFO_HELP_CHKCASTCLASS_SPECIAL ; gcrRegs -[rdx] +[rax] ; gcr arg pop 0
- ;; size=5 bbWeight=0.25 PerfScore 0.25 -G_M4380_IG06: ; bbWeight=1, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref - mov esi, dword ptr [rax+0x80] - ;; size=6 bbWeight=1 PerfScore 2.00 -G_M4380_IG07: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M4380_IG13 + ;; size=7 bbWeight=0.25 PerfScore 0.75 +G_M4380_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax] cmp gword ptr [rbx+0x88], 0
- je SHORT G_M4380_IG15
+ je SHORT G_M4380_IG14
;; size=10 bbWeight=1 PerfScore 4.00
-G_M4380_IG08: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M4380_IG07: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rcx, gword ptr [rbx+0x88] ; gcrRegs +[rcx] mov rdx, gword ptr [rcx+0x08] ; gcrRegs +[rdx]
- mov rax, rdx - ; gcrRegs +[rax] - test rax, rax - je SHORT G_M4380_IG12
+ mov r8, rdx + ; gcrRegs +[r8] + test r8, r8 + je SHORT G_M4380_IG10
;; size=19 bbWeight=1 PerfScore 5.50
-G_M4380_IG09: ; bbWeight=0.50, gcrefRegs=0005 {rax rdx}, byrefRegs=0000 {}, byref, isz
+G_M4380_IG08: ; bbWeight=0.50, gcrefRegs=0104 {rdx r8}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rcx rbx] mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]
- cmp qword ptr [rax], rcx - je SHORT G_M4380_IG11
+ cmp qword ptr [r8], rcx + je SHORT G_M4380_IG15
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M4380_IG10: ; bbWeight=0.25, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax]
+G_M4380_IG09: ; bbWeight=0.25, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r8]
call CORINFO_HELP_CHKCASTCLASS_SPECIAL ; gcrRegs -[rdx] +[rax] ; gcr arg pop 0
- ;; size=5 bbWeight=0.25 PerfScore 0.25 -G_M4380_IG11: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref - or esi, dword ptr [rax+0x80] - ;; size=6 bbWeight=1 PerfScore 3.00 -G_M4380_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax]
+ mov r8, rax + ; gcrRegs +[r8] + jmp SHORT G_M4380_IG15 + ;; size=10 bbWeight=0.25 PerfScore 0.81 +G_M4380_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[rax r8]
mov eax, esi ;; size=2 bbWeight=1 PerfScore 0.25
-G_M4380_IG13: ; bbWeight=1, epilog, nogc, extend
+G_M4380_IG11: ; bbWeight=1, epilog, nogc, extend
add rsp, 32 pop rbx pop rsi pop rdi ret ;; size=8 bbWeight=1 PerfScore 2.75
-G_M4380_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M4380_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rbx] mov rcx, rbx ; gcrRegs +[rcx] @@ -117,8 +115,14 @@ G_M4380_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {r ; gcrRegs +[rdi] jmp SHORT G_M4380_IG03 ;; size=18 bbWeight=0 PerfScore 0.00
-G_M4380_IG15: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rdi]
+G_M4380_IG13: ; bbWeight=0, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rdi] +[rax] + mov esi, dword ptr [rax+0x80] + cmp gword ptr [rbx+0x88], 0 + jne SHORT G_M4380_IG07 + ;; size=16 bbWeight=0 PerfScore 0.00 +G_M4380_IG14: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rax]
lea rdx, bword ptr [rbx+0x88] ; byrRegs +[rdx] mov rcx, rbx @@ -127,10 +131,15 @@ G_M4380_IG15: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byre ; gcrRegs -[rcx] ; byrRegs -[rdx] ; gcr arg pop 0
- jmp SHORT G_M4380_IG08
+ jmp SHORT G_M4380_IG07
;; size=18 bbWeight=0 PerfScore 0.00
+G_M4380_IG15: ; bbWeight=0, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rbx] +[r8] + or esi, dword ptr [r8+0x80] + jmp SHORT G_M4380_IG10 + ;; size=9 bbWeight=0 PerfScore 0.00
-; Total bytes of code 169, prolog size 7, PerfScore 36.75, instruction count 46, allocated bytes for code 169 (MethodHash=64b3eee3) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)
+; Total bytes of code 189, prolog size 7, PerfScore 32.81, instruction count 52, allocated bytes for code 189 (MethodHash=64b3eee3) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)
; ============================================================ Unwind Info:

benchmarks.run_tiered.windows.x64.checked.mch

-40 (-49.38%) : 20253.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)

@@ -8,77 +8,52 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 3, 2.50) byref -> rsi this single-def -; V01 arg1 [V01,T00] ( 5, 3.75) ref -> rbx class-hnd single-def <System.Object> -; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V00 this [V00,T02] ( 3, 2.50) byref -> rcx this single-def +; V01 arg1 [V01,T00] ( 4, 3.50) ref -> rdx class-hnd single-def <System.Object> +;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T01] ( 3, 4.50) ref -> rax class-hnd "spilling QMark2" <System.Reflection.MetadataImport> ;* V04 tmp2 [V04 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Reflection.MetadataImport> ;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref "field V04.m_keepalive (fldOffset=0x0)" P-INDEP
-; V06 tmp4 [V06,T05] ( 2, 1 ) long -> rax "field V04.m_metadataImport2 (fldOffset=0x8)" P-INDEP -; V07 cse0 [V07,T03] ( 4, 1.25) long -> rcx "CSE - moderate" -; V08 cse1 [V08,T04] ( 3, 1 ) long -> rdx "CSE - moderate"
+; V06 tmp4 [V06,T03] ( 2, 1 ) long -> rax "field V04.m_metadataImport2 (fldOffset=0x8)" P-INDEP
;
-; Lcl frame size = 40
+; Lcl frame size = 0
-G_M38955_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG - push rsi - push rbx - sub rsp, 40 - mov rsi, rcx - ; byrRegs +[rsi] - mov rbx, rdx - ; gcrRegs +[rbx] - ;; size=12 bbWeight=1 PerfScore 2.75 -G_M38955_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz - mov rax, rbx
+G_M38955_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG + ;; size=0 bbWeight=1 PerfScore 0.00 +G_M38955_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0002 {rcx}, byref, isz + ; gcrRegs +[rdx] + ; byrRegs +[rcx] + mov rax, rdx
; gcrRegs +[rax] test rax, rax je SHORT G_M38955_IG04 ;; size=8 bbWeight=1 PerfScore 1.50
-G_M38955_IG03: ; bbWeight=0.25, gcrefRegs=0009 {rax rbx}, byrefRegs=0040 {rsi}, byref, isz - mov rdx, qword ptr [rax] - mov rcx, 0xD1FFAB1E ; System.Reflection.MetadataImport - cmp rdx, rcx
+G_M38955_IG03: ; bbWeight=0.25, gcrefRegs=0005 {rax rdx}, byrefRegs=0002 {rcx}, byref, isz + mov r8, 0xD1FFAB1E ; System.Reflection.MetadataImport + cmp qword ptr [rax], r8
je SHORT G_M38955_IG06
- ;; size=18 bbWeight=0.25 PerfScore 0.88
+ ;; size=15 bbWeight=0.25 PerfScore 1.06
G_M38955_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax rbx] - ; byrRegs -[rsi]
+ ; gcrRegs -[rax rdx] + ; byrRegs -[rcx]
xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M38955_IG05: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 40 - pop rbx - pop rsi
ret
- ;; size=7 bbWeight=0.50 PerfScore 1.12 -G_M38955_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, gcvars, byref, isz - ; gcrRegs +[rbx] - ; byrRegs +[rsi] - cmp rdx, rcx - je SHORT G_M38955_IG08 - ;; size=5 bbWeight=0.50 PerfScore 0.62 -G_M38955_IG07: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref - mov rdx, rbx
+ ;; size=1 bbWeight=0.50 PerfScore 0.50 +G_M38955_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0004 {rdx}, byrefRegs=0002 {rcx}, gcvars, byref
; gcrRegs +[rdx]
- call CORINFO_HELP_UNBOX - ; gcrRegs -[rdx] - ; gcr arg pop 0 - ;; size=8 bbWeight=0.25 PerfScore 0.31 -G_M38955_IG08: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref - mov rax, qword ptr [rbx+0x10] - cmp rax, qword ptr [rsi+0x08]
+ ; byrRegs +[rcx] + mov rax, qword ptr [rdx+0x10] + cmp rax, qword ptr [rcx+0x08]
sete al movzx rax, al ;; size=14 bbWeight=0.50 PerfScore 3.12
-G_M38955_IG09: ; bbWeight=0.50, epilog, nogc, extend - add rsp, 40 - pop rbx - pop rsi
+G_M38955_IG07: ; bbWeight=0.50, epilog, nogc, extend
ret
- ;; size=7 bbWeight=0.50 PerfScore 1.12
+ ;; size=1 bbWeight=0.50 PerfScore 0.50
-; Total bytes of code 81, prolog size 6, PerfScore 11.56, instruction count 29, allocated bytes for code 81 (MethodHash=885867d4) for method System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 41, prolog size 0, PerfScore 6.81, instruction count 13, allocated bytes for code 41 (MethodHash=885867d4) for method System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -86,11 +61,8 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x06 - CountOfUnwindCodes: 3
+ SizeOfProlog : 0x00 + CountOfUnwindCodes: 0
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x06 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28 - CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)

-32 (-24.62%) : 50772.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan1[uint]):int (Tier1)

@@ -9,108 +9,93 @@ ; ; V00 arg0 [V00,T03] ( 4, 8 ) byref -> rcx ld-addr-op single-def ; V01 arg1 [V01,T04] ( 4, 8 ) byref -> rdx ld-addr-op single-def
-; V02 loc0 [V02,T00] ( 7, 24.50) int -> registers
+; V02 loc0 [V02,T00] ( 7, 24.50) int -> r10
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T01] ( 6, 20 ) int -> r9 "dup spill" -; V05 tmp2 [V05,T07] ( 3, 5.50) byref -> r10 single-def "field V00._reference (fldOffset=0x0)" P-INDEP -; V06 tmp3 [V06,T06] ( 5, 7 ) int -> rcx "field V00._length (fldOffset=0x8)" P-INDEP -; V07 tmp4 [V07,T08] ( 3, 5.50) byref -> r8 single-def "field V01._reference (fldOffset=0x0)" P-INDEP -; V08 tmp5 [V08,T05] ( 6, 7.50) int -> rdx "field V01._length (fldOffset=0x8)" P-INDEP
+; V04 tmp1 [V04,T01] ( 2, 16 ) int -> r10 "dup spill" +; V05 tmp2 [V05,T09] ( 2, 5 ) byref -> r8 single-def "field V00._reference (fldOffset=0x0)" P-INDEP +; V06 tmp3 [V06,T08] ( 4, 6.50) int -> rcx "field V00._length (fldOffset=0x8)" P-INDEP +; V07 tmp4 [V07,T10] ( 2, 5 ) byref -> rax single-def "field V01._reference (fldOffset=0x0)" P-INDEP +; V08 tmp5 [V08,T07] ( 5, 7 ) int -> rdx "field V01._length (fldOffset=0x8)" P-INDEP
;* V09 tmp6 [V09 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[uint]> ;* V10 tmp7 [V10 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[uint]>
-; V11 cse0 [V11,T02] ( 6, 13.50) long -> r11 multi-def "CSE - aggressive"
+; V11 cse0 [V11,T05] ( 3, 8.50) int -> r11 "CSE - aggressive" +; V12 cse1 [V12,T06] ( 3, 8.50) int -> r9 "CSE - aggressive" +; V13 cse2 [V13,T02] ( 3, 12 ) long -> r9 "CSE - aggressive"
;
-; Lcl frame size = 32
+; Lcl frame size = 40
G_M264_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbx - sub rsp, 32 - ;; size=5 bbWeight=1 PerfScore 1.25
+ sub rsp, 40 + ;; size=4 bbWeight=1 PerfScore 0.25
G_M264_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0006 {rcx rdx}, byref, isz ; byrRegs +[rcx rdx]
- mov r8, bword ptr [rdx] - ; byrRegs +[r8]
+ mov rax, bword ptr [rdx] + ; byrRegs +[rax]
mov edx, dword ptr [rdx+0x08] ; byrRegs -[rdx]
- mov r10, bword ptr [rcx] - ; byrRegs +[r10]
+ mov r8, bword ptr [rcx] + ; byrRegs +[r8]
mov ecx, dword ptr [rcx+0x08] ; byrRegs -[rcx] cmp ecx, edx je SHORT G_M264_IG04 ;; size=16 bbWeight=1 PerfScore 9.25 G_M264_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[r8 r10]
+ ; byrRegs -[rax r8]
cmp ecx, edx
- jl SHORT G_M264_IG12 - jmp SHORT G_M264_IG10
+ jl SHORT G_M264_IG11 + jmp SHORT G_M264_IG07
;; size=6 bbWeight=0.50 PerfScore 1.62
-G_M264_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0500 {r8 r10}, byref - ; byrRegs +[r8 r10] - mov r9d, edx
+G_M264_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0101 {rax r8}, byref + ; byrRegs +[rax r8] + mov r10d, edx
;; size=3 bbWeight=0.50 PerfScore 0.12
-G_M264_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0500 {r8 r10}, byref, isz - dec r9d - mov eax, r9d - test eax, eax - jl SHORT G_M264_IG06 - cmp eax, ecx - jae SHORT G_M264_IG14 - mov r11d, eax - mov ebx, dword ptr [r10+4*r11] - cmp eax, edx - jae SHORT G_M264_IG14 - cmp ebx, dword ptr [r8+4*r11] - je SHORT G_M264_IG08 - ;; size=31 bbWeight=4 PerfScore 42.00 -G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0500 {r8 r10}, byref, isz - test r9d, r9d - jge SHORT G_M264_IG09 - xor eax, eax - ;; size=7 bbWeight=0.50 PerfScore 0.75 -G_M264_IG07: ; bbWeight=0.50, epilog, nogc, extend - add rsp, 32 - pop rbx - ret - ;; size=6 bbWeight=0.50 PerfScore 0.88 -G_M264_IG08: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0500 {r8 r10}, gcvars, byref, isz - mov r9d, eax - jmp SHORT G_M264_IG05 - ;; size=5 bbWeight=2 PerfScore 4.50 -G_M264_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0500 {r8 r10}, byref, isz - cmp r9d, ecx - jae SHORT G_M264_IG14 - mov r11d, r9d - mov eax, dword ptr [r10+4*r11] - cmp r9d, edx - jae SHORT G_M264_IG14 - cmp eax, dword ptr [r8+4*r11] - jb SHORT G_M264_IG12 - ;; size=23 bbWeight=0.50 PerfScore 4.38 -G_M264_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; byrRegs -[r8 r10]
+G_M264_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0101 {rax r8}, byref, isz + dec r10d + js SHORT G_M264_IG09 + cmp r10d, ecx + jae SHORT G_M264_IG13 + mov r9d, r10d + mov r11d, dword ptr [r8+4*r9] + cmp r10d, edx + jae SHORT G_M264_IG13 + mov r9d, dword ptr [rax+4*r9] + cmp r11d, r9d + je SHORT G_M264_IG05 + ;; size=31 bbWeight=4 PerfScore 37.00 +G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ; byrRegs -[rax r8] + cmp r9d, r11d + ja SHORT G_M264_IG11 + ;; size=5 bbWeight=0.50 PerfScore 0.62 +G_M264_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov eax, 1 ;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M264_IG11: ; bbWeight=0.50, epilog, nogc, extend - add rsp, 32 - pop rbx
+G_M264_IG08: ; bbWeight=0.50, epilog, nogc, extend + add rsp, 40
ret
- ;; size=6 bbWeight=0.50 PerfScore 0.88 -G_M264_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=5 bbWeight=0.50 PerfScore 0.62 +G_M264_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + xor eax, eax + ;; size=2 bbWeight=0.50 PerfScore 0.12 +G_M264_IG10: ; bbWeight=0.50, epilog, nogc, extend + add rsp, 40 + ret + ;; size=5 bbWeight=0.50 PerfScore 0.62 +G_M264_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov eax, -1 ;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M264_IG13: ; bbWeight=0.50, epilog, nogc, extend - add rsp, 32 - pop rbx
+G_M264_IG12: ; bbWeight=0.50, epilog, nogc, extend + add rsp, 40
ret
- ;; size=6 bbWeight=0.50 PerfScore 0.88 -G_M264_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=5 bbWeight=0.50 PerfScore 0.62 +G_M264_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 130, prolog size 5, PerfScore 66.75, instruction count 50, allocated bytes for code 130 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
+; Total bytes of code 98, prolog size 4, PerfScore 51.12, instruction count 35, allocated bytes for code 98 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
; ============================================================ Unwind Info: @@ -118,10 +103,9 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x05 - CountOfUnwindCodes: 2
+ SizeOfProlog : 0x04 + CountOfUnwindCodes: 1
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20 - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28

-19 (-7.51%) : 28532.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)

@@ -8,17 +8,18 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T02] ( 14, 93.51) ref -> rbx class-hnd single-def <int[]> -; V01 arg1 [V01,T09] ( 3, 3 ) int -> rdx single-def -; V02 arg2 [V02,T05] ( 6, 12 ) int -> rsi single-def -; V03 loc0 [V03,T00] ( 14,227 ) int -> rdi -; V04 loc1 [V04,T01] ( 10,134 ) int -> r8
+; V00 arg0 [V00,T02] ( 13, 91.51) ref -> rbx class-hnd single-def <int[]> +; V01 arg1 [V01,T10] ( 3, 3 ) int -> rdx single-def +; V02 arg2 [V02,T06] ( 6, 12 ) int -> rsi single-def +; V03 loc0 [V03,T00] ( 13,219 ) int -> rdi +; V04 loc1 [V04,T01] ( 7,122 ) int -> r8
; V05 loc2 [V05,T04] ( 3, 80.50) int -> rcx
-; V06 loc3 [V06,T08] ( 4, 5 ) int -> r9
+; V06 loc3 [V06,T09] ( 4, 5 ) int -> r11
; V07 OutArgs [V07 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T06] ( 2, 8 ) int -> r11 "Strict ordering of exceptions for Array store" -; V09 cse0 [V09,T03] ( 7, 85.01) int -> rax hoist "CSE - aggressive" -; V10 cse1 [V10,T07] ( 6, 7.50) long -> r10 multi-def "CSE - aggressive"
+; V08 tmp1 [V08,T07] ( 2, 8 ) int -> r10 "Strict ordering of exceptions for Array store" +; V09 cse0 [V09,T05] ( 3, 34 ) int -> r10 "CSE - aggressive" +; V10 cse1 [V10,T03] ( 6, 83.01) int -> rax hoist "CSE - aggressive" +; V11 cse2 [V11,T08] ( 6, 7.50) long -> r9 multi-def "CSE - aggressive"
; ; Lcl frame size = 32 @@ -48,7 +49,7 @@ G_M63260_IG04: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ;; size=5 bbWeight=8 PerfScore 10.00 G_M63260_IG05: ; bbWeight=64, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz cmp edi, eax
- jae G_M63260_IG16
+ jae G_M63260_IG15
mov r10d, edi cmp dword ptr [rbx+4*r10+0x10], ecx jle SHORT G_M63260_IG03 @@ -61,49 +62,42 @@ G_M63260_IG07: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ;; size=3 bbWeight=8 PerfScore 2.00 G_M63260_IG08: ; bbWeight=64, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz cmp r8d, edi
- jle SHORT G_M63260_IG10
+ jle SHORT G_M63260_IG11
;; size=5 bbWeight=64 PerfScore 80.00 G_M63260_IG09: ; bbWeight=16, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz cmp r8d, eax
- jae G_M63260_IG16
+ jae SHORT G_M63260_IG15
mov r10d, r8d
- cmp dword ptr [rbx+4*r10+0x10], ecx
+ mov r10d, dword ptr [rbx+4*r10+0x10] + cmp r10d, ecx
jge SHORT G_M63260_IG07
- ;; size=19 bbWeight=16 PerfScore 88.00 -G_M63260_IG10: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - cmp edi, r8d - jge SHORT G_M63260_IG12 - ;; size=5 bbWeight=8 PerfScore 10.00 -G_M63260_IG11: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ;; size=18 bbWeight=16 PerfScore 76.00 +G_M63260_IG10: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp edi, eax
- jae SHORT G_M63260_IG16 - mov r10d, edi - mov r9d, dword ptr [rbx+4*r10+0x10] - cmp r8d, eax - jae SHORT G_M63260_IG16 - mov r11d, r8d - mov r11d, dword ptr [rbx+4*r11+0x10] - mov dword ptr [rbx+4*r10+0x10], r11d - mov r10d, r8d - mov dword ptr [rbx+4*r10+0x10], r9d
+ jae SHORT G_M63260_IG15 + mov r9d, edi + mov r11d, dword ptr [rbx+4*r9+0x10] + mov dword ptr [rbx+4*r9+0x10], r10d + mov r9d, r8d + mov dword ptr [rbx+4*r9+0x10], r11d
jmp SHORT G_M63260_IG04
- ;; size=40 bbWeight=2 PerfScore 22.50 -G_M63260_IG12: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ;; size=27 bbWeight=2 PerfScore 15.50 +G_M63260_IG11: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp edi, esi
- je SHORT G_M63260_IG14
+ je SHORT G_M63260_IG13
;; size=4 bbWeight=8 PerfScore 10.00
-G_M63260_IG13: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M63260_IG12: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp edi, eax
- jae SHORT G_M63260_IG16 - mov r10d, edi - mov r9d, dword ptr [rbx+4*r10+0x10] - mov dword ptr [rbx+4*r10+0x10], ecx
+ jae SHORT G_M63260_IG15 + mov r9d, edi + mov r11d, dword ptr [rbx+4*r9+0x10] + mov dword ptr [rbx+4*r9+0x10], ecx
cmp esi, eax
- jae SHORT G_M63260_IG16
+ jae SHORT G_M63260_IG15
mov r8d, esi
- mov dword ptr [rbx+4*r8+0x10], r9d
+ mov dword ptr [rbx+4*r8+0x10], r11d
;; size=29 bbWeight=0.50 PerfScore 3.50
-G_M63260_IG14: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M63260_IG13: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
lea r8d, [rdi-0x01] mov rcx, rbx ; gcrRegs +[rcx] @@ -119,7 +113,7 @@ G_M63260_IG14: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcr arg pop 0 nop ;; size=29 bbWeight=1 PerfScore 8.00
-G_M63260_IG15: ; bbWeight=1, epilog, nogc, extend
+G_M63260_IG14: ; bbWeight=1, epilog, nogc, extend
add rsp, 168 pop rbx pop rsi @@ -127,13 +121,13 @@ G_M63260_IG15: ; bbWeight=1, epilog, nogc, extend pop rbp ret ;; size=12 bbWeight=1 PerfScore 3.25
-G_M63260_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M63260_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 253, prolog size 69, PerfScore 593.94, instruction count 70, allocated bytes for code 253 (MethodHash=855f08e3) for method Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)
+; Total bytes of code 234, prolog size 69, PerfScore 564.94, instruction count 65, allocated bytes for code 234 (MethodHash=855f08e3) for method Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)
; ============================================================ Unwind Info:

+2 (+0.36%) : 16969.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)

@@ -107,12 +107,12 @@ G_M62513_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr mov rcx, gword ptr [rbp+0x10] ; gcrRegs +[rcx] cmp dword ptr [rcx+0x14], 0
- je G_M62513_IG18
+ je G_M62513_IG19
mov edx, dword ptr [rcx+0x18] test edx, edx jne SHORT G_M62513_IG10 mov dword ptr [rcx+0x18], edi
- jmp G_M62513_IG18
+ jmp G_M62513_IG19
;; size=29 bbWeight=0.50 PerfScore 5.62 G_M62513_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[rcx] @@ -132,7 +132,7 @@ G_M62513_IG10: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, ; gcrRegs +[rcx] sub edi, edx cmp edi, r14d
- jle G_M62513_IG18
+ jle G_M62513_IG19
mov rdx, 0xD1FFAB1E ; const ptr mov rdi, gword ptr [rdx] ; gcrRegs +[rdi] @@ -214,7 +214,7 @@ G_M62513_IG14: ; bbWeight=4, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byr ; gcrRegs +[rcx] mov esi, dword ptr [rcx+0x14] test esi, esi
- jle SHORT G_M62513_IG15
+ jle SHORT G_M62513_IG16
mov edx, r15d lea r15d, [rdx-0x01] test edx, edx @@ -222,12 +222,15 @@ G_M62513_IG14: ; bbWeight=4, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byr ;; size=26 bbWeight=4 PerfScore 25.00 G_M62513_IG15: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rdi]
- test esi, esi - jg SHORT G_M62513_IG16 - xor eax, eax
jmp SHORT G_M62513_IG17
+ ;; size=2 bbWeight=0.50 PerfScore 1.00 +G_M62513_IG16: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz + test esi, esi + jg SHORT G_M62513_IG17 + xor eax, eax + jmp SHORT G_M62513_IG18
;; size=8 bbWeight=0.50 PerfScore 1.75
-G_M62513_IG16: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
+G_M62513_IG17: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
mov eax, r14d sar eax, 31 and eax, 3 @@ -235,10 +238,10 @@ G_M62513_IG16: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, sar eax, 2 add eax, dword ptr [rcx+0x18] ;; size=18 bbWeight=0.50 PerfScore 2.38
-G_M62513_IG17: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
+G_M62513_IG18: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
mov dword ptr [rcx+0x18], eax ;; size=3 bbWeight=0.50 PerfScore 0.50
-G_M62513_IG18: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
+G_M62513_IG19: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
cmp byte ptr [rbp-0x30], 0 je G_M62513_IG03 ; GC ptr vars -{V00 V01} @@ -247,7 +250,7 @@ G_M62513_IG18: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, ; gcr arg pop 0 jmp G_M62513_IG03 ;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M62513_IG19: ; bbWeight=0, gcVars=0000000000000002 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+G_M62513_IG20: ; bbWeight=0, gcVars=0000000000000002 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
; GC ptr vars +{V00 V01} push rbp push r15 @@ -260,9 +263,9 @@ G_M62513_IG19: ; bbWeight=0, gcVars=0000000000000002 {V00}, gcrefRegs=000 mov qword ptr [rsp+0x28], rbp lea rbp, [rbp+0x60] ;; size=25 bbWeight=0 PerfScore 0.00
-G_M62513_IG20: ; bbWeight=0, gcVars=0000000000000002 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M62513_IG21: ; bbWeight=0, gcVars=0000000000000002 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
cmp byte ptr [rbp-0x30], 0
- je SHORT G_M62513_IG21
+ je SHORT G_M62513_IG22
mov rcx, gword ptr [rbp+0x10] ; gcrRegs +[rcx] ; GC ptr vars -{V00 V01} @@ -270,10 +273,10 @@ G_M62513_IG20: ; bbWeight=0, gcVars=0000000000000002 {V00}, gcrefRegs=000 ; gcrRegs -[rcx] ; gcr arg pop 0 ;; size=15 bbWeight=0 PerfScore 0.00
-G_M62513_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M62513_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop ;; size=1 bbWeight=0 PerfScore 0.00
-G_M62513_IG22: ; bbWeight=0, funclet epilog, nogc, extend
+G_M62513_IG23: ; bbWeight=0, funclet epilog, nogc, extend
add rsp, 56 pop rbx pop rsi @@ -284,7 +287,7 @@ G_M62513_IG22: ; bbWeight=0, funclet epilog, nogc, extend ret ;; size=13 bbWeight=0 PerfScore 0.00
-; Total bytes of code 548, prolog size 33, PerfScore 160.38, instruction count 155, allocated bytes for code 548 (MethodHash=d51a0bce) for method System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
+; Total bytes of code 550, prolog size 33, PerfScore 161.38, instruction count 156, allocated bytes for code 550 (MethodHash=d51a0bce) for method System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
; ============================================================ Unwind Info: @@ -323,4 +326,4 @@ Unwind Info: CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) *************** EH table for System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this 1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M62513_IG05..G_M62513_IG18) handled by [G_M62513_IG19..END) (fault)
+EH#0: try [G_M62513_IG05..G_M62513_IG19) handled by [G_M62513_IG20..END) (fault)
+2 (+0.45%) : 23866.dasm - System.Net.SocketAddress:.ctor(System.Net.IPAddress):this (Tier1)
@@ -15,7 +15,7 @@ ;* V04 loc2 [V04 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[ubyte]> ; V05 loc3 [V05,T23] ( 2, 1 ) int -> rbx ; V06 OutArgs [V06 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T04] ( 3, 5 ) int -> rdx "impAppendStmt"
+; V07 tmp1 [V07,T08] ( 3, 4 ) int -> rdx "impAppendStmt"
;* V08 tmp2 [V08 ] ( 0, 0 ) ref -> zero-ref single-def ptr ;* V09 tmp3 [V09 ] ( 0, 0 ) int -> zero-ref ptr ;* V10 tmp4 [V10 ] ( 0, 0 ) ref -> zero-ref single-def ptr @@ -26,7 +26,7 @@ ; V15 tmp9 [V15 ] ( 1, 0.50) struct (16) [rsp+0x28] do-not-enreg[XS] addr-exposed ld-addr-op unsafe-buffer "stackallocLocal" ;* V16 tmp10 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]> ;* V17 tmp11 [V17 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.Span`1[ubyte]>
-;* V18 tmp12 [V18,T22] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+;* V18 tmp12 [V18,T24] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
; V19 tmp13 [V19,T00] ( 4, 6 ) ref -> rcx class-hnd single-def "Inlining Arg" <ubyte[]> ;* V20 tmp14 [V20 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]> ;* V21 tmp15 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]> @@ -39,10 +39,10 @@ ;* V28 tmp22 [V28 ] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inline stloc first use temp" ;* V29 tmp23 [V29 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]> ;* V30 tmp24 [V30 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-;* V31 tmp25 [V31,T24] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" -; V32 tmp26 [V32,T07] ( 4, 4 ) ref -> rcx class-hnd single-def "Inlining Arg" <ubyte[]>
+;* V31 tmp25 [V31,T25] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" +; V32 tmp26 [V32,T06] ( 4, 4 ) ref -> rcx class-hnd single-def "Inlining Arg" <ubyte[]>
;* V33 tmp27 [V33 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
-; V34 tmp28 [V34,T08] ( 4, 4 ) ref -> rcx class-hnd single-def "Inlining Arg" <ubyte[]>
+; V34 tmp28 [V34,T07] ( 4, 4 ) ref -> rcx class-hnd single-def "Inlining Arg" <ubyte[]>
;* V35 tmp29 [V35 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]> ;* V36 tmp30 [V36 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]> ;* V37 tmp31 [V37 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]> @@ -62,8 +62,8 @@ ;* V51 tmp45 [V51 ] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0x8)" P-INDEP ;* V52 tmp46 [V52 ] ( 0, 0 ) byref -> zero-ref "field V14._reference (fldOffset=0x0)" P-INDEP ;* V53 tmp47 [V53 ] ( 0, 0 ) int -> zero-ref "field V14._length (fldOffset=0x8)" P-INDEP
-; V54 tmp48 [V54,T18] ( 3, 1.50) byref -> rdi single-def "field V16._reference (fldOffset=0x0)" P-INDEP -;* V55 tmp49 [V55,T25] ( 0, 0 ) int -> zero-ref ptr "field V16._length (fldOffset=0x8)" P-INDEP
+; V54 tmp48 [V54,T19] ( 3, 1.50) byref -> rdi single-def "field V16._reference (fldOffset=0x0)" P-INDEP +;* V55 tmp49 [V55,T26] ( 0, 0 ) int -> zero-ref ptr "field V16._length (fldOffset=0x8)" P-INDEP
;* V56 tmp50 [V56 ] ( 0, 0 ) byref -> zero-ref "field V17._reference (fldOffset=0x0)" P-INDEP ;* V57 tmp51 [V57 ] ( 0, 0 ) int -> zero-ref "field V17._length (fldOffset=0x8)" P-INDEP ; V58 tmp52 [V58,T14] ( 3, 2 ) byref -> rdi "field V20._reference (fldOffset=0x0)" P-INDEP @@ -78,9 +78,9 @@ ;* V67 tmp61 [V67 ] ( 0, 0 ) int -> zero-ref ptr "field V29._length (fldOffset=0x8)" P-INDEP ;* V68 tmp62 [V68 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V30._reference (fldOffset=0x0)" P-INDEP ;* V69 tmp63 [V69 ] ( 0, 0 ) int -> zero-ref "field V30._length (fldOffset=0x8)" P-INDEP
-; V70 tmp64 [V70,T19] ( 3, 1.50) byref -> rax "field V33._reference (fldOffset=0x0)" P-INDEP -; V71 tmp65 [V71,T21] ( 3, 1.50) int -> rdx "field V33._length (fldOffset=0x8)" P-INDEP -; V72 tmp66 [V72,T20] ( 3, 1.50) byref -> rsi "field V35._reference (fldOffset=0x0)" P-INDEP
+; V70 tmp64 [V70,T20] ( 3, 1.50) byref -> rax "field V33._reference (fldOffset=0x0)" P-INDEP +; V71 tmp65 [V71,T22] ( 3, 1.50) int -> rdx "field V33._length (fldOffset=0x8)" P-INDEP +; V72 tmp66 [V72,T21] ( 3, 1.50) byref -> rsi "field V35._reference (fldOffset=0x0)" P-INDEP
; V73 tmp67 [V73,T13] ( 4, 2 ) int -> rdi "field V35._length (fldOffset=0x8)" P-INDEP ;* V74 tmp68 [V74 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V36._reference (fldOffset=0x0)" P-INDEP ;* V75 tmp69 [V75 ] ( 0, 0 ) int -> zero-ref ptr "field V36._length (fldOffset=0x8)" P-INDEP @@ -94,11 +94,12 @@ ;* V83 tmp77 [V83 ] ( 0, 0 ) int -> zero-ref "field V45._length (fldOffset=0x8)" P-INDEP ; V84 tmp78 [V84 ] ( 6, 6 ) struct (16) [rsp+0x48] do-not-enreg[XSF] must-init addr-exposed ptr "by-value struct argument" <System.Span`1[ubyte]> ; V85 tmp79 [V85 ] ( 3, 3 ) struct (16) [rsp+0x38] do-not-enreg[XSF] must-init addr-exposed ptr "by-value struct argument" <System.Span`1[ubyte]>
-; V86 tmp80 [V86,T17] ( 2, 2 ) int -> r8 "argument with side effect"
+; V86 tmp80 [V86,T18] ( 2, 2 ) int -> r8 "argument with side effect"
; V87 GsCookie [V87 ] ( 1, 1 ) long -> [rsp+0x60] do-not-enreg[X] addr-exposed "GSSecurityCookie"
-; V88 tmp82 [V88,T06] ( 5, 4 ) ref -> rsi single-def "shadowVar" -; V89 tmp83 [V89,T05] ( 6, 4.50) ref -> rbx single-def "shadowVar" -; V90 cse0 [V90,T10] ( 6, 3 ) ref -> rdx multi-def "CSE - moderate"
+; V88 tmp82 [V88,T05] ( 5, 4 ) ref -> rsi single-def "shadowVar" +; V89 tmp83 [V89,T04] ( 6, 4.50) ref -> rbx single-def "shadowVar" +; V90 cse0 [V90,T17] ( 2, 2 ) ref -> rcx "CSE - moderate" +; V91 cse1 [V91,T10] ( 6, 3 ) ref -> rdx multi-def "CSE - moderate"
; ; Lcl frame size = 104 @@ -122,18 +123,19 @@ G_M12197_IG02: ; bbWeight=1, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, ; gcrRegs +[rbx] mov rsi, rcx ; gcrRegs +[rsi]
- cmp gword ptr [rbx+0x08], 0
+ mov rcx, gword ptr [rbx+0x08] + test rcx, rcx
je SHORT G_M12197_IG04
- ;; size=13 bbWeight=1 PerfScore 4.50
+ ;; size=15 bbWeight=1 PerfScore 3.75
G_M12197_IG03: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rcx rdx] mov edx, 23 jmp SHORT G_M12197_IG05 ;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M12197_IG04: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M12197_IG04: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
mov edx, 2 jmp SHORT G_M12197_IG06
- ;; size=7 bbWeight=1 PerfScore 2.25
+ ;; size=7 bbWeight=0.50 PerfScore 1.12
G_M12197_IG05: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz mov r8d, 28 jmp SHORT G_M12197_IG07 @@ -326,7 +328,7 @@ G_M12197_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 444, prolog size 45, PerfScore 70.08, instruction count 120, allocated bytes for code 444 (MethodHash=1104d05a) for method System.Net.SocketAddress:.ctor(System.Net.IPAddress):this (Tier1)
+; Total bytes of code 446, prolog size 45, PerfScore 68.21, instruction count 121, allocated bytes for code 446 (MethodHash=1104d05a) for method System.Net.SocketAddress:.ctor(System.Net.IPAddress):this (Tier1)
; ============================================================ Unwind Info:

+23 (+0.89%) : 45122.dasm - System.Text.Json.Tests.Perf_Segment:ReadMultiSegmentSequenceUsingSpan(int):this (Tier1-OSR)

@@ -90,19 +90,19 @@ ;* V78 tmp64 [V78 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V79 tmp65 [V79 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V80 tmp66 [V80,T01] ( 3, 80 ) int -> rax
-; V81 tmp67 [V81,T00] ( 3,192 ) ubyte -> rax "Inline stloc first use temp"
+; V81 tmp67 [V81,T00] ( 2,128 ) ubyte -> rax "Inline stloc first use temp"
;* V82 tmp68 [V82 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ubyte]>
-; V83 tmp69 [V83,T03] ( 2, 32 ) long -> rcx "impAppendStmt" -; V84 tmp70 [V84,T04] ( 2, 32 ) long -> rdx "impAppendStmt" -; V85 tmp71 [V85,T05] ( 2, 32 ) int -> rax "impAppendStmt" -; V86 tmp72 [V86,T06] ( 2, 32 ) int -> r8 "impAppendStmt"
+; V83 tmp69 [V83,T03] ( 2, 32 ) long -> rax "impAppendStmt" +; V84 tmp70 [V84,T04] ( 2, 32 ) long -> r15 "impAppendStmt" +; V85 tmp71 [V85,T05] ( 2, 32 ) int -> r14 "impAppendStmt" +; V86 tmp72 [V86,T06] ( 2, 32 ) int -> r12 "impAppendStmt"
;* V87 tmp73 [V87 ] ( 0, 0 ) struct (56) zero-ref do-not-enreg[SF] ld-addr-op "NewObj constructor temp" <System.Text.Json.JsonReaderState> ;* V88 tmp74 [V88 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V89 tmp75 [V89 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V90 tmp76 [V90,T07] ( 2, 32 ) ubyte -> r10 "Inlining Arg" -; V91 tmp77 [V91,T08] ( 2, 32 ) ubyte -> r9 "Inlining Arg" -; V92 tmp78 [V92,T09] ( 2, 32 ) ubyte -> r11 "Inlining Arg" -; V93 tmp79 [V93,T10] ( 2, 32 ) ubyte -> r15 "Inlining Arg"
+; V90 tmp76 [V90,T07] ( 2, 32 ) ubyte -> rcx "Inlining Arg" +; V91 tmp77 [V91,T08] ( 2, 32 ) ubyte -> rbp "Inlining Arg" +; V92 tmp78 [V92,T09] ( 2, 32 ) ubyte -> rdi "Inlining Arg" +; V93 tmp79 [V93,T10] ( 2, 32 ) ubyte -> r9 "Inlining Arg"
;* V94 tmp80 [V94 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Text.Json.JsonReaderOptions> ;* V95 tmp81 [V95 ] ( 0, 0 ) struct (24) zero-ref "Inlining Arg" <System.Text.Json.BitStack> ; V96 tmp82 [V96,T21] ( 4, 16 ) int -> rcx "Inlining Arg" @@ -121,7 +121,7 @@ ;* V109 tmp95 [V109 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]> ;* V110 tmp96 [V110 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V111 tmp97 [V111 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V112 tmp98 [V112,T58] ( 2, 8 ) long -> r8 "Inlining Arg"
+; V112 tmp98 [V112,T58] ( 2, 8 ) long -> rax "Inlining Arg"
; V113 tmp99 [V113,T39] ( 3, 12 ) ubyte -> registers "Inline return value spill temp" ;* V114 tmp100 [V114 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.SequencePosition> ;* V115 tmp101 [V115 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" @@ -139,7 +139,7 @@ ; V127 tmp113 [V127,T45] ( 3, 10 ) ref -> rcx class-hnd "spilling QMark2" <ubyte[]> ;* V128 tmp114 [V128 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlyMemory`1[ubyte]> ; V129 tmp115 [V129,T49] ( 3, 9 ) long -> rcx "fgMakeTemp is creating a new local variable"
-; V130 tmp116 [V130,T11] ( 8, 29 ) ref -> r8 class-hnd "spilling QMark2" <System.Buffers.ReadOnlySequenceSegment`1[ubyte]>
+; V130 tmp116 [V130,T11] ( 8, 29 ) ref -> r10 class-hnd "spilling QMark2" <System.Buffers.ReadOnlySequenceSegment`1[ubyte]>
;* V131 tmp117 [V131 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Buffers.ReadOnlySequenceSegment`1[ubyte]> ;* V132 tmp118 [V132 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlyMemory`1[ubyte]> ; V133 tmp119 [V133,T65] ( 3, 6 ) ref -> rbp class-hnd "Inline stloc first use temp" <System.Buffers.ReadOnlySequenceSegment`1[ubyte]> @@ -200,12 +200,12 @@ ;* V188 tmp174 [V188,T95] ( 0, 0 ) int -> zero-ref "field V75._length (fldOffset=0x8)" P-INDEP ; V189 tmp175 [V189,T103] ( 2, 0 ) byref -> r9 "field V82._reference (fldOffset=0x0)" P-INDEP ;* V190 tmp176 [V190,T104] ( 0, 0 ) int -> zero-ref "field V82._length (fldOffset=0x8)" P-INDEP
-; V191 tmp177 [V191,T24] ( 2, 16 ) int -> r14 "field V94._maxDepth (fldOffset=0x0)" P-INDEP -; V192 tmp178 [V192,T25] ( 2, 16 ) ubyte -> r12 "field V94._commentHandling (fldOffset=0x4)" P-INDEP -; V193 tmp179 [V193,T26] ( 2, 16 ) ubyte -> rbp "field V94.<AllowTrailingCommas>k__BackingField (fldOffset=0x5)" P-INDEP -; V194 tmp180 [V194,T23] ( 2, 16 ) ref -> rdi "field V95._array (fldOffset=0x0)" P-INDEP
+; V191 tmp177 [V191,T24] ( 2, 16 ) int -> [rsp+0xA0] spill-single-def "field V94._maxDepth (fldOffset=0x0)" P-INDEP +; V192 tmp178 [V192,T25] ( 2, 16 ) ubyte -> rbx "field V94._commentHandling (fldOffset=0x4)" P-INDEP +; V193 tmp179 [V193,T26] ( 2, 16 ) ubyte -> rdx "field V94.<AllowTrailingCommas>k__BackingField (fldOffset=0x5)" P-INDEP +; V194 tmp180 [V194,T23] ( 2, 16 ) ref -> [rsp+0x48] spill-single-def "field V95._array (fldOffset=0x0)" P-INDEP
; V195 tmp181 [V195,T27] ( 2, 16 ) long -> [rsp+0x98] spill-single-def "field V95._allocationFreeContainer (fldOffset=0x8)" P-INDEP
-; V196 tmp182 [V196,T28] ( 2, 16 ) int -> rbx "field V95._currentDepth (fldOffset=0x10)" P-INDEP
+; V196 tmp182 [V196,T28] ( 2, 16 ) int -> r11 "field V95._currentDepth (fldOffset=0x10)" P-INDEP
;* V197 tmp183 [V197 ] ( 0, 0 ) byref -> zero-ref "field V97._reference (fldOffset=0x0)" P-INDEP ;* V198 tmp184 [V198 ] ( 0, 0 ) int -> zero-ref "field V97._length (fldOffset=0x8)" P-INDEP ;* V199 tmp185 [V199 ] ( 0, 0 ) byref -> zero-ref "field V102._reference (fldOffset=0x0)" P-INDEP @@ -244,17 +244,17 @@ ;* V232 tmp218 [V232 ] ( 0, 0 ) ref -> zero-ref "field V158._object (fldOffset=0x0)" P-INDEP ;* V233 tmp219 [V233 ] ( 0, 0 ) int -> zero-ref "field V158._index (fldOffset=0x8)" P-INDEP ;* V234 tmp220 [V234 ] ( 0, 0 ) int -> zero-ref "field V158._length (fldOffset=0xc)" P-INDEP
-; V235 tmp221 [V235,T63] ( 5, 6.51) ref -> [rsp+0x48] spill-single-def "V02.[000..008)" -; V236 tmp222 [V236,T64] ( 5, 6.51) ref -> [rsp+0x40] spill-single-def "V02.[008..016)"
+; V235 tmp221 [V235,T63] ( 5, 6.51) ref -> [rsp+0x40] spill-single-def "V02.[000..008)" +; V236 tmp222 [V236,T64] ( 5, 6.51) ref -> [rsp+0x38] spill-single-def "V02.[008..016)"
; V237 tmp223 [V237,T90] ( 2, 2.01) int -> [rsp+0x94] spill-single-def "V02.[016..020)" ; V238 tmp224 [V238,T91] ( 2, 2.01) int -> [rsp+0x90] spill-single-def "V02.[020..024)" ;* V239 tmp225 [V239 ] ( 0, 0 ) ref -> zero-ref "V07.[000..008)" ; V240 tmp226 [V240,T13] ( 15, 25.01) ref -> r13 single-def "V07.[008..016)" ; V241 tmp227 [V241,T92] ( 2, 2.01) int -> [rsp+0x8C] spill-single-def "V07.[016..020)" ; V242 tmp228 [V242,T84] ( 3, 4.01) int -> [rsp+0x88] spill-single-def "V07.[020..024)"
-; V243 tmp229 [V243,T33] ( 6, 14.51) ref -> [rsp+0x38] "V07.[024..032)"
+; V243 tmp229 [V243,T33] ( 6, 14.51) ref -> [rsp+0x30] "V07.[024..032)"
; V244 tmp230 [V244,T12] ( 15, 28.01) int -> [rsp+0x84] "V07.[032..036)"
-; V245 tmp231 [V245,T14] ( 13, 24.01) ref -> [rsp+0x30] "V07.[040..048)"
+; V245 tmp231 [V245,T14] ( 13, 24.01) ref -> [rsp+0x28] "V07.[040..048)"
; V246 tmp232 [V246,T46] ( 6, 10.01) int -> [rsp+0x80] "V07.[048..052)" ; V247 tmp233 [V247,T35] ( 7, 12.01) int -> [rsp+0x7C] "V07.[052..056)" ;* V248 tmp234 [V248 ] ( 0, 0 ) ref -> zero-ref "V08.[000..008)" @@ -262,21 +262,21 @@ ;* V250 tmp236 [V250 ] ( 0, 0 ) int -> zero-ref "V08.[012..016)" ;* V251 tmp237 [V251 ] ( 0, 0 ) byref -> zero-ref "V09.[000..008)" ;* V252 tmp238 [V252 ] ( 0, 0 ) int -> zero-ref "V09.[008..012)"
-; V253 tmp239 [V253,T50] ( 4, 6.01) byref -> [rsp+0x28] "V10.[000..008)"
+; V253 tmp239 [V253,T50] ( 4, 6.01) byref -> [rsp+0x20] "V10.[000..008)"
; V254 tmp240 [V254,T15] ( 7, 18.01) int -> rsi "V10.[008..012)" ;* V255 tmp241 [V255 ] ( 0, 0 ) byref -> zero-ref "V13.[000..008)" ;* V256 tmp242 [V256 ] ( 0, 0 ) int -> zero-ref "V13.[008..012)" ;* V257 tmp243 [V257 ] ( 0, 0 ) long -> zero-ref "V87.[000..008)" ;* V258 tmp244 [V258 ] ( 0, 0 ) long -> zero-ref "V87.[008..016)"
-; V259 tmp245 [V259,T29] ( 2, 16 ) ubyte -> rax "V87.[016..017)" -; V260 tmp246 [V260,T30] ( 2, 16 ) ubyte -> r8 "V87.[017..018)"
+; V259 tmp245 [V259,T29] ( 2, 16 ) ubyte -> r14 "V87.[016..017)" +; V260 tmp246 [V260,T30] ( 2, 16 ) ubyte -> r12 "V87.[017..018)"
;* V261 tmp247 [V261 ] ( 0, 0 ) ubyte -> zero-ref "V87.[018..019)" ;* V262 tmp248 [V262 ] ( 0, 0 ) ubyte -> zero-ref "V87.[019..020)" ;* V263 tmp249 [V263 ] ( 0, 0 ) ubyte -> zero-ref "V87.[020..021)" ;* V264 tmp250 [V264 ] ( 0, 0 ) ubyte -> zero-ref "V87.[021..022)" ;* V265 tmp251 [V265 ] ( 0, 0 ) int -> zero-ref "V87.[024..028)"
-; V266 tmp252 [V266,T31] ( 2, 16 ) ubyte -> r12 "V87.[028..029)" -; V267 tmp253 [V267,T32] ( 2, 16 ) ubyte -> rbp "V87.[029..030)"
+; V266 tmp252 [V266,T31] ( 2, 16 ) ubyte -> rbx "V87.[028..029)" +; V267 tmp253 [V267,T32] ( 2, 16 ) ubyte -> rdx "V87.[029..030)"
;* V268 tmp254 [V268 ] ( 0, 0 ) ref -> zero-ref "V87.[032..040)" ;* V269 tmp255 [V269 ] ( 0, 0 ) long -> zero-ref "V87.[040..048)" ;* V270 tmp256 [V270 ] ( 0, 0 ) int -> zero-ref "V87.[048..052)" @@ -323,11 +323,11 @@ G_M49915_IG02: ; bbWeight=0.01, gcVars=00000000000000000000000400000000 { ; GC ptr vars +{V03} mov rdi, gword ptr [rsp+0x3C0] ; gcrRegs +[rdi]
- mov gword ptr [rsp+0x48], rdi
+ mov gword ptr [rsp+0x40], rdi
; GC ptr vars +{V235} mov rbp, gword ptr [rsp+0x3C8] ; gcrRegs +[rbp]
- mov gword ptr [rsp+0x40], rbp
+ mov gword ptr [rsp+0x38], rbp
; GC ptr vars +{V236} mov r14d, dword ptr [rsp+0x3D0] mov dword ptr [rsp+0x94], r14d @@ -341,13 +341,13 @@ G_M49915_IG02: ; bbWeight=0.01, gcVars=00000000000000000000000400000000 { mov dword ptr [rsp+0x88], eax mov rdx, gword ptr [rsp+0x358] ; gcrRegs +[rdx]
- mov gword ptr [rsp+0x38], rdx
+ mov gword ptr [rsp+0x30], rdx
; GC ptr vars +{V243} mov r8d, dword ptr [rsp+0x360] mov dword ptr [rsp+0x84], r8d mov r10, gword ptr [rsp+0x368] ; gcrRegs +[r10]
- mov gword ptr [rsp+0x30], r10
+ mov gword ptr [rsp+0x28], r10
; GC ptr vars +{V245} mov r9d, dword ptr [rsp+0x370] mov dword ptr [rsp+0x80], r9d @@ -355,7 +355,7 @@ G_M49915_IG02: ; bbWeight=0.01, gcVars=00000000000000000000000400000000 { mov dword ptr [rsp+0x7C], r11d mov rcx, bword ptr [rsp+0x310] ; byrRegs +[rcx]
- mov bword ptr [rsp+0x28], rcx
+ mov bword ptr [rsp+0x20], rcx
; GC ptr vars +{V253} mov esi, dword ptr [rsp+0x318] jmp G_M49915_IG25 @@ -366,20 +366,20 @@ G_M49915_IG03: ; bbWeight=2, gcVars=00000000000000018000000000004000 {V23 ; GC ptr vars -{V03 V243 V253} xor rbp, rbp ; byrRegs +[rbp]
- xor r10d, r10d - mov r9, gword ptr [rsp+0x30] - ; gcrRegs +[r9] - test r9, r9
+ xor r9d, r9d + mov r10, gword ptr [rsp+0x28] + ; gcrRegs +[r10] + test r10, r10
je G_M49915_IG08
- mov rdx, qword ptr [r9]
+ mov rdx, qword ptr [r10]
test dword ptr [rdx], 0xD1FFAB1E je SHORT G_M49915_IG05
- mov gword ptr [rsp+0x30], r9 - mov rdx, r9
+ mov gword ptr [rsp+0x28], r10 + mov rdx, r10
; gcrRegs +[rdx] mov rcx, 0xD1FFAB1E ; ubyte[] call [CORINFO_HELP_ISINSTANCEOFARRAY]
- ; gcrRegs -[rdx r9] +[rax]
+ ; gcrRegs -[rdx r10] +[rax]
; byrRegs -[rbp] ; gcr arg pop 0 test rax, rax @@ -396,27 +396,27 @@ G_M49915_IG03: ; bbWeight=2, gcVars=00000000000000018000000000004000 {V23 ; gcr arg pop 0 ;; size=84 bbWeight=2 PerfScore 37.00 G_M49915_IG04: ; bbWeight=2, gcrefRegs=2088 {rbx rdi r13}, byrefRegs=0000 {}, byref, isz
- mov rbp, gword ptr [rsp+0x30]
+ mov rbp, gword ptr [rsp+0x28]
; gcrRegs +[rbp] lea rdx, bword ptr [rbp+0x10] ; byrRegs +[rdx] mov rax, rdx ; byrRegs +[rax]
- mov r10d, dword ptr [rbp+0x08] - mov r8d, r10d
+ mov r9d, dword ptr [rbp+0x08] + mov r8d, r9d
jmp SHORT G_M49915_IG07 ;; size=21 bbWeight=2 PerfScore 12.00
-G_M49915_IG05: ; bbWeight=2, gcVars=00000000000000018000000000000000 {V235 V236}, gcrefRegs=2288 {rbx rdi r9 r13}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[rbp] +[r9]
+G_M49915_IG05: ; bbWeight=2, gcVars=00000000000000018000000000000000 {V235 V236}, gcrefRegs=2488 {rbx rdi r10 r13}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs -[rbp] +[r10]
; byrRegs -[rax rdx] ; GC ptr vars -{V245}
- mov gword ptr [rsp+0x30], r9
+ mov gword ptr [rsp+0x28], r10
; GC ptr vars +{V245}
- mov rdx, r9
+ mov rdx, r10
; gcrRegs +[rdx] mov rcx, 0xD1FFAB1E ; <unknown class> call CORINFO_HELP_ISINSTANCEOFCLASS
- ; gcrRegs -[rdx r9] +[rax]
+ ; gcrRegs -[rdx r10] +[rax]
; gcr arg pop 0 test rax, rax jne SHORT G_M49915_IG06 @@ -432,9 +432,9 @@ G_M49915_IG05: ; bbWeight=2, gcVars=00000000000000018000000000000000 {V23 ;; size=50 bbWeight=2 PerfScore 15.00 G_M49915_IG06: ; bbWeight=2, gcrefRegs=2088 {rbx rdi r13}, byrefRegs=0000 {}, byref lea rdx, [rsp+0xD0]
- mov rcx, gword ptr [rsp+0x30]
+ mov rcx, gword ptr [rsp+0x28]
; gcrRegs +[rcx]
- mov gword ptr [rsp+0x30], rcx
+ mov gword ptr [rsp+0x28], rcx
mov rax, qword ptr [rcx] mov rax, qword ptr [rax+0x48] call [rax+0x28]<unknown method> @@ -450,7 +450,7 @@ G_M49915_IG06: ; bbWeight=2, gcrefRegs=2088 {rbx rdi r13}, byrefRegs=0000 mov r8d, eax mov rax, rbp ; byrRegs +[rax]
- mov rbp, gword ptr [rsp+0x30]
+ mov rbp, gword ptr [rsp+0x28]
; gcrRegs +[rbp] ; byrRegs -[rbp] ;; size=61 bbWeight=2 PerfScore 27.00 @@ -464,24 +464,24 @@ G_M49915_IG07: ; bbWeight=2, gcVars=00000000000000018000000000000000 {V23 add rdx, rcx mov r8d, r8d cmp rdx, r8
- ja G_M49915_IG67
+ ja G_M49915_IG66
add rax, rcx mov dword ptr [rsp+0x7C], r10d mov r8d, r10d mov dword ptr [rsp+0x80], r15d
- mov r9, rbp
...

coreclr_tests.run.windows.x64.checked.mch

-42 (-52.50%) : 211893.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)

@@ -9,74 +9,51 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 3 ) byref -> rcx this single-def
-; V01 arg1 [V01,T00] ( 5, 4.50) ref -> rbx class-hnd single-def <System.Object> -; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V01 arg1 [V01,T00] ( 4, 4 ) ref -> rdx class-hnd single-def <System.Object> +;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> rax class-hnd "spilling QMark2" <System.Int32>
-; V04 tmp2 [V04,T03] ( 2, 4 ) int -> rsi "impAppendStmt" -; V05 cse0 [V05,T04] ( 4, 2.50) long -> r8 "CSE - aggressive" -; V06 cse1 [V06,T05] ( 3, 2 ) long -> rdx "CSE - aggressive"
+; V04 tmp2 [V04,T03] ( 2, 4 ) int -> rax "impAppendStmt" +; V05 cse0 [V05,T04] ( 2, 1 ) long -> r8 "CSE - moderate"
;
-; Lcl frame size = 40
+; Lcl frame size = 0
G_M40448_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rsi - push rbx - sub rsp, 40 - mov rbx, rdx - ; gcrRegs +[rbx] - ;; size=9 bbWeight=1 PerfScore 2.50 -G_M40448_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0002 {rcx}, byref, isz
+ ;; size=0 bbWeight=1 PerfScore 0.00 +G_M40448_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0002 {rcx}, byref, isz + ; gcrRegs +[rdx]
; byrRegs +[rcx]
- mov rax, rbx
+ mov rax, rdx
; gcrRegs +[rax] test rax, rax
- je SHORT G_M40448_IG08
+ jne SHORT G_M40448_IG05
;; size=8 bbWeight=1 PerfScore 1.50
-G_M40448_IG03: ; bbWeight=0.50, gcrefRegs=0009 {rax rbx}, byrefRegs=0002 {rcx}, byref, isz - mov rdx, qword ptr [rax] - mov r8, 0xD1FFAB1E ; System.Int32 - cmp rdx, r8 - jne SHORT G_M40448_IG08 - ;; size=18 bbWeight=0.50 PerfScore 1.75 -G_M40448_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0002 {rcx}, byref, isz - ; gcrRegs -[rax] - mov esi, dword ptr [rcx] - cmp rdx, r8 - jne SHORT G_M40448_IG07 - ;; size=7 bbWeight=1 PerfScore 3.25 -G_M40448_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M40448_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[rax rdx]
; byrRegs -[rcx] xor eax, eax
- cmp esi, dword ptr [rbx+0x08]
+ ;; size=2 bbWeight=1 PerfScore 0.25 +G_M40448_IG04: ; bbWeight=1, epilog, nogc, extend + ret + ;; size=1 bbWeight=1 PerfScore 1.00 +G_M40448_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0005 {rax rdx}, byrefRegs=0002 {rcx}, gcvars, byref, isz + ; gcrRegs +[rax rdx] + ; byrRegs +[rcx] + mov r8, 0xD1FFAB1E ; System.Int32 + cmp qword ptr [rax], r8 + jne SHORT G_M40448_IG03 + ;; size=15 bbWeight=0.50 PerfScore 2.12 +G_M40448_IG06: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0002 {rcx}, byref + ; gcrRegs -[rax] + mov eax, dword ptr [rcx] + cmp eax, dword ptr [rdx+0x08]
sete al
- ;; size=8 bbWeight=1 PerfScore 4.25 -G_M40448_IG06: ; bbWeight=1, epilog, nogc, extend - add rsp, 40 - pop rbx - pop rsi
+ movzx rax, al + ;; size=11 bbWeight=1 PerfScore 6.25 +G_M40448_IG07: ; bbWeight=1, epilog, nogc, extend
ret
- ;; size=7 bbWeight=1 PerfScore 2.25 -G_M40448_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz - mov rdx, rbx - ; gcrRegs +[rdx] - mov rcx, r8 - call [CORINFO_HELP_UNBOX] - ; gcrRegs -[rdx] - ; gcr arg pop 0 - jmp SHORT G_M40448_IG05 - ;; size=14 bbWeight=0.50 PerfScore 2.75 -G_M40448_IG08: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[rbx] - xor eax, eax - ;; size=2 bbWeight=0.25 PerfScore 0.06 -G_M40448_IG09: ; bbWeight=0.25, epilog, nogc, extend - add rsp, 40 - pop rbx - pop rsi - ret - ;; size=7 bbWeight=0.25 PerfScore 0.56
+ ;; size=1 bbWeight=1 PerfScore 1.00
-; Total bytes of code 80, prolog size 6, PerfScore 18.88, instruction count 30, allocated bytes for code 80 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 38, prolog size 0, PerfScore 12.12, instruction count 13, allocated bytes for code 38 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -84,11 +61,8 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x06 - CountOfUnwindCodes: 3
+ SizeOfProlog : 0x00 + CountOfUnwindCodes: 0
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x06 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28 - CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)

-42 (-52.50%) : 23990.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)

@@ -9,74 +9,51 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 3 ) byref -> rcx this single-def
-; V01 arg1 [V01,T00] ( 5, 4.50) ref -> rbx class-hnd single-def <System.Object> -; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V01 arg1 [V01,T00] ( 4, 4 ) ref -> rdx class-hnd single-def <System.Object> +;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> rax class-hnd "spilling QMark2" <System.Int32>
-; V04 tmp2 [V04,T03] ( 2, 4 ) int -> rsi "impAppendStmt" -; V05 cse0 [V05,T04] ( 4, 2.50) long -> r8 "CSE - aggressive" -; V06 cse1 [V06,T05] ( 3, 2 ) long -> rdx "CSE - aggressive"
+; V04 tmp2 [V04,T03] ( 2, 4 ) int -> rax "impAppendStmt" +; V05 cse0 [V05,T04] ( 2, 1 ) long -> r8 "CSE - moderate"
;
-; Lcl frame size = 40
+; Lcl frame size = 0
G_M40448_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rsi - push rbx - sub rsp, 40 - mov rbx, rdx - ; gcrRegs +[rbx] - ;; size=9 bbWeight=1 PerfScore 2.50 -G_M40448_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0002 {rcx}, byref, isz
+ ;; size=0 bbWeight=1 PerfScore 0.00 +G_M40448_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0002 {rcx}, byref, isz + ; gcrRegs +[rdx]
; byrRegs +[rcx]
- mov rax, rbx
+ mov rax, rdx
; gcrRegs +[rax] test rax, rax
- je SHORT G_M40448_IG08
+ jne SHORT G_M40448_IG05
;; size=8 bbWeight=1 PerfScore 1.50
-G_M40448_IG03: ; bbWeight=0.50, gcrefRegs=0009 {rax rbx}, byrefRegs=0002 {rcx}, byref, isz - mov rdx, qword ptr [rax] - mov r8, 0xD1FFAB1E ; System.Int32 - cmp rdx, r8 - jne SHORT G_M40448_IG08 - ;; size=18 bbWeight=0.50 PerfScore 1.75 -G_M40448_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0002 {rcx}, byref, isz - ; gcrRegs -[rax] - mov esi, dword ptr [rcx] - cmp rdx, r8 - jne SHORT G_M40448_IG07 - ;; size=7 bbWeight=1 PerfScore 3.25 -G_M40448_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M40448_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[rax rdx]
; byrRegs -[rcx] xor eax, eax
- cmp esi, dword ptr [rbx+0x08]
+ ;; size=2 bbWeight=1 PerfScore 0.25 +G_M40448_IG04: ; bbWeight=1, epilog, nogc, extend + ret + ;; size=1 bbWeight=1 PerfScore 1.00 +G_M40448_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0005 {rax rdx}, byrefRegs=0002 {rcx}, gcvars, byref, isz + ; gcrRegs +[rax rdx] + ; byrRegs +[rcx] + mov r8, 0xD1FFAB1E ; System.Int32 + cmp qword ptr [rax], r8 + jne SHORT G_M40448_IG03 + ;; size=15 bbWeight=0.50 PerfScore 2.12 +G_M40448_IG06: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0002 {rcx}, byref + ; gcrRegs -[rax] + mov eax, dword ptr [rcx] + cmp eax, dword ptr [rdx+0x08]
sete al
- ;; size=8 bbWeight=1 PerfScore 4.25 -G_M40448_IG06: ; bbWeight=1, epilog, nogc, extend - add rsp, 40 - pop rbx - pop rsi
+ movzx rax, al + ;; size=11 bbWeight=1 PerfScore 6.25 +G_M40448_IG07: ; bbWeight=1, epilog, nogc, extend
ret
- ;; size=7 bbWeight=1 PerfScore 2.25 -G_M40448_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz - mov rdx, rbx - ; gcrRegs +[rdx] - mov rcx, r8 - call [CORINFO_HELP_UNBOX] - ; gcrRegs -[rdx] - ; gcr arg pop 0 - jmp SHORT G_M40448_IG05 - ;; size=14 bbWeight=0.50 PerfScore 2.75 -G_M40448_IG08: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[rbx] - xor eax, eax - ;; size=2 bbWeight=0.25 PerfScore 0.06 -G_M40448_IG09: ; bbWeight=0.25, epilog, nogc, extend - add rsp, 40 - pop rbx - pop rsi - ret - ;; size=7 bbWeight=0.25 PerfScore 0.56
+ ;; size=1 bbWeight=1 PerfScore 1.00
-; Total bytes of code 80, prolog size 6, PerfScore 18.88, instruction count 30, allocated bytes for code 80 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 38, prolog size 0, PerfScore 12.12, instruction count 13, allocated bytes for code 38 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -84,11 +61,8 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x06 - CountOfUnwindCodes: 3
+ SizeOfProlog : 0x00 + CountOfUnwindCodes: 0
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x06 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28 - CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)

-40 (-51.28%) : 6765.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)

@@ -9,73 +9,49 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 3 ) byref -> rcx this single-def
-; V01 arg1 [V01,T00] ( 5, 4.50) ref -> rbx class-hnd single-def <System.Object> -; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V01 arg1 [V01,T00] ( 4, 4 ) ref -> rdx class-hnd single-def <System.Object> +;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> rax class-hnd "spilling QMark2" <System.Int32>
-; V04 tmp2 [V04,T03] ( 2, 4 ) int -> rsi "impAppendStmt" -; V05 cse0 [V05,T04] ( 4, 2.50) long -> r8 "CSE - aggressive" -; V06 cse1 [V06,T05] ( 3, 2 ) long -> rdx "CSE - aggressive"
+; V04 tmp2 [V04,T03] ( 2, 4 ) int -> rax "impAppendStmt" +; V05 cse0 [V05,T04] ( 2, 1 ) long -> r8 "CSE - moderate"
;
-; Lcl frame size = 40
+; Lcl frame size = 0
G_M40448_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- push rsi - push rbx - sub rsp, 40 - mov rbx, rdx - ; gcrRegs +[rbx] - ;; size=9 bbWeight=1 PerfScore 2.50 -G_M40448_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0002 {rcx}, byref, isz
+ ;; size=0 bbWeight=1 PerfScore 0.00 +G_M40448_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0002 {rcx}, byref, isz + ; gcrRegs +[rdx]
; byrRegs +[rcx]
- mov rax, rbx
+ mov rax, rdx
; gcrRegs +[rax] test rax, rax
- je SHORT G_M40448_IG08 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M40448_IG03: ; bbWeight=0.50, gcrefRegs=0009 {rax rbx}, byrefRegs=0002 {rcx}, byref, isz - mov rdx, qword ptr [rax] - mov r8, 0xD1FFAB1E ; System.Int32 - cmp rdx, r8 - jne SHORT G_M40448_IG08 - ;; size=18 bbWeight=0.50 PerfScore 1.75 -G_M40448_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0002 {rcx}, byref, isz - ; gcrRegs -[rax] - mov esi, dword ptr [rcx] - cmp rdx, r8
je SHORT G_M40448_IG06
- ;; size=7 bbWeight=1 PerfScore 3.25 -G_M40448_IG05: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - ; byrRegs -[rcx] - mov rdx, rbx - ; gcrRegs +[rdx] - mov rcx, r8 - call [CORINFO_HELP_UNBOX] - ; gcrRegs -[rdx] - ; gcr arg pop 0 - ;; size=12 bbWeight=0.50 PerfScore 1.75 -G_M40448_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - xor eax, eax - cmp esi, dword ptr [rbx+0x08]
+ ;; size=8 bbWeight=1 PerfScore 1.50 +G_M40448_IG03: ; bbWeight=0.50, gcrefRegs=0005 {rax rdx}, byrefRegs=0002 {rcx}, byref, isz + mov r8, 0xD1FFAB1E ; System.Int32 + cmp qword ptr [rax], r8 + jne SHORT G_M40448_IG06 + ;; size=15 bbWeight=0.50 PerfScore 2.12 +G_M40448_IG04: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0002 {rcx}, byref + ; gcrRegs -[rax] + mov eax, dword ptr [rcx] + cmp eax, dword ptr [rdx+0x08]
sete al
- ;; size=8 bbWeight=1 PerfScore 4.25 -G_M40448_IG07: ; bbWeight=1, epilog, nogc, extend - add rsp, 40 - pop rbx - pop rsi
+ movzx rax, al + ;; size=11 bbWeight=1 PerfScore 6.25 +G_M40448_IG05: ; bbWeight=1, epilog, nogc, extend
ret
- ;; size=7 bbWeight=1 PerfScore 2.25 -G_M40448_IG08: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[rbx]
+ ;; size=1 bbWeight=1 PerfScore 1.00 +G_M40448_IG06: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[rdx] + ; byrRegs -[rcx]
xor eax, eax
- ;; size=2 bbWeight=0.25 PerfScore 0.06 -G_M40448_IG09: ; bbWeight=0.25, epilog, nogc, extend - add rsp, 40 - pop rbx - pop rsi
+ ;; size=2 bbWeight=1 PerfScore 0.25 +G_M40448_IG07: ; bbWeight=1, epilog, nogc, extend
ret
- ;; size=7 bbWeight=0.25 PerfScore 0.56
+ ;; size=1 bbWeight=1 PerfScore 1.00
-; Total bytes of code 78, prolog size 6, PerfScore 17.88, instruction count 29, allocated bytes for code 78 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 38, prolog size 0, PerfScore 12.12, instruction count 13, allocated bytes for code 38 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -83,11 +59,8 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x06 - CountOfUnwindCodes: 3
+ SizeOfProlog : 0x00 + CountOfUnwindCodes: 0
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x06 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28 - CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)

+20 (+4.31%) : 218733.dasm - System.Reflection.TypeNameParser:Parse():System.Type:this (Tier1)

@@ -10,20 +10,20 @@ ; Final local variable assignments ; ; V00 this [V00,T00] ( 28, 16.41) byref -> rbx this single-def
-; V01 loc0 [V01,T03] ( 6, 4 ) ref -> rsi class-hnd single-def <System.Reflection.TypeNameParser+TypeName>
+; V01 loc0 [V01,T03] ( 7, 4 ) ref -> rsi class-hnd single-def <System.Reflection.TypeNameParser+TypeName>
; V02 loc1 [V02,T14] ( 5, 2 ) ref -> rdi class-hnd <System.String> ;* V03 loc2 [V03 ] ( 0, 0 ) int -> zero-ref ; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V05 tmp1 [V05,T15] ( 3, 2 ) ref -> rax "guarded devirt return temp" ;* V06 tmp2 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Reflection.TypeNameParser+NamespaceTypeName> ;* V07 tmp3 [V07 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V08 tmp4 [V08,T04] ( 4, 4 ) int -> rbp "Inline stloc first use temp"
+; V08 tmp4 [V08,T10] ( 4, 3 ) int -> rbp "Inline stloc first use temp"
; V09 tmp5 [V09,T22] ( 3, 0.28) int -> rcx "Span.get_Item index" ; V10 tmp6 [V10,T21] ( 3, 0.28) byref -> rax single-def "Span.get_Item ptrToSpan" ; V11 tmp7 [V11,T16] ( 3, 2.00) int -> rcx ;* V12 tmp8 [V12 ] ( 0, 0 ) ushort -> zero-ref "Inline stloc first use temp"
-; V13 tmp9 [V13,T09] ( 3, 3.96) int -> rcx "Span.get_Item index" -; V14 tmp10 [V14,T07] ( 3, 3.96) byref -> rax "Span.get_Item ptrToSpan"
+; V13 tmp9 [V13,T08] ( 3, 3.96) int -> rcx "Span.get_Item index" +; V14 tmp10 [V14,T06] ( 3, 3.96) byref -> rax "Span.get_Item ptrToSpan"
; V15 tmp11 [V15,T18] ( 2, 1.32) ubyte -> rax "Inline return value spill temp" ; V16 tmp12 [V16,T01] ( 4, 5.28) ushort -> rcx "Inlining Arg" ;* V17 tmp13 [V17 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]> @@ -33,8 +33,8 @@ ;* V21 tmp17 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]> ;* V22 tmp18 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V23 tmp19 [V23 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-; V24 tmp20 [V24,T10] ( 3, 3.96) int -> rcx "Span.get_Item index" -; V25 tmp21 [V25,T08] ( 3, 3.96) byref -> rax "Span.get_Item ptrToSpan"
+; V24 tmp20 [V24,T09] ( 3, 3.96) int -> rcx "Span.get_Item index" +; V25 tmp21 [V25,T07] ( 3, 3.96) byref -> rax "Span.get_Item ptrToSpan"
; V26 tmp22 [V26,T19] ( 2, 1.32) ubyte -> rax "Inline return value spill temp" ; V27 tmp23 [V27,T02] ( 4, 5.28) ushort -> rcx "Inlining Arg" ;* V28 tmp24 [V28 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]> @@ -45,8 +45,8 @@ ;* V33 tmp29 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V34 tmp30 [V34 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]> ;* V35 tmp31 [V35 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[System.String]>
-; V36 tmp32 [V36,T05] ( 2, 4 ) ref -> rdx class-hnd exact single-def "impAppendStmt" <System.String> -; V37 tmp33 [V37,T06] ( 2, 4 ) ref -> rax single-def "Single return block return value"
+; V36 tmp32 [V36,T04] ( 2, 4 ) ref -> rdx class-hnd exact single-def "impAppendStmt" <System.String> +; V37 tmp33 [V37,T05] ( 2, 4 ) ref -> rax single-def "Single return block return value"
;* V38 tmp34 [V38 ] ( 0, 0 ) byref -> zero-ref "field V17._reference (fldOffset=0x0)" P-INDEP ;* V39 tmp35 [V39 ] ( 0, 0 ) int -> zero-ref "field V17._length (fldOffset=0x8)" P-INDEP ;* V40 tmp36 [V40 ] ( 0, 0 ) byref -> zero-ref "field V18._reference (fldOffset=0x0)" P-INDEP @@ -74,7 +74,7 @@ ; V62 tmp58 [V62,T17] ( 2, 2 ) byref -> r8 single-def "field V35._reference (fldOffset=0x0)" P-INDEP ;* V63 tmp59 [V63,T20] ( 0, 0 ) int -> zero-ref "field V35._length (fldOffset=0x8)" P-INDEP ; V64 tmp60 [V64 ] ( 3, 6 ) struct (16) [rsp+0x28] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[System.String]>
-; V65 cse0 [V65,T11] ( 3, 3 ) int -> r8 "CSE - moderate"
+; V65 cse0 [V65,T11] ( 3, 3 ) int -> rcx "CSE - moderate"
; V66 cse1 [V66,T12] ( 3, 2.66) int -> rcx "CSE - moderate" ; V67 cse2 [V67,T13] ( 3, 2.66) int -> rcx "CSE - moderate" ; @@ -101,7 +101,7 @@ G_M8635_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byre mov rsi, rax ; gcrRegs +[rsi] test rsi, rsi
- je G_M8635_IG18
+ je G_M8635_IG24
xor rdi, rdi ; gcrRegs +[rdi] mov ecx, dword ptr [rbx+0x20] @@ -117,7 +117,7 @@ G_M8635_IG04: ; bbWeight=0.66, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 { lea rax, bword ptr [rbx+0x30] ; byrRegs +[rax] cmp ecx, dword ptr [rax+0x08]
- jae G_M8635_IG24
+ jae G_M8635_IG19
mov rax, bword ptr [rax] mov ecx, ecx movzx rcx, word ptr [rax+2*rcx] @@ -127,7 +127,7 @@ G_M8635_IG04: ; bbWeight=0.66, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 { ; byrRegs -[rax] ; gcr arg pop 0 test eax, eax
- jne G_M8635_IG25
+ jne G_M8635_IG20
;; size=44 bbWeight=0.66 PerfScore 9.40 G_M8635_IG05: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref, isz jmp SHORT G_M8635_IG07 @@ -136,12 +136,12 @@ G_M8635_IG06: ; bbWeight=0.66, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 { mov ecx, ecx mov rax, 0xD1FFAB1E ; static handle test byte ptr [rcx+rax], 128
- jne G_M8635_IG25
+ jne G_M8635_IG20
;; size=22 bbWeight=0.66 PerfScore 2.97 G_M8635_IG07: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref, isz mov ecx, dword ptr [rbx+0x20] cmp ecx, dword ptr [rbx+0x38]
- jl SHORT G_M8635_IG10
+ jl SHORT G_M8635_IG13
;; size=8 bbWeight=1 PerfScore 6.00 G_M8635_IG08: ; bbWeight=0.95, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref xor ecx, ecx @@ -152,115 +152,58 @@ G_M8635_IG09: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx ; gcr arg pop 0 mov ebp, eax test ebp, ebp
- je G_M8635_IG21
+ je SHORT G_M8635_IG14
cmp ebp, 7
- jne SHORT G_M8635_IG11 - jmp SHORT G_M8635_IG16 - ;; size=26 bbWeight=1 PerfScore 8.00 -G_M8635_IG10: ; bbWeight=0.05, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref, isz - mov ecx, dword ptr [rbx+0x20] - lea rax, bword ptr [rbx+0x30] - ; byrRegs +[rax] - cmp ecx, dword ptr [rax+0x08] - jae G_M8635_IG24 - mov rax, bword ptr [rax] - movzx rcx, word ptr [rax+2*rcx] - jmp SHORT G_M8635_IG09 - ;; size=25 bbWeight=0.05 PerfScore 0.59 -G_M8635_IG11: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
+ je G_M8635_IG22 + ;; size=24 bbWeight=1 PerfScore 6.00 +G_M8635_IG10: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
; gcrRegs -[rdi]
- ; byrRegs -[rax]
mov ecx, dword ptr [rbx+0x20] cmp ecx, dword ptr [rbx+0x38]
- jge SHORT G_M8635_IG15
+ jge SHORT G_M8635_IG12
;; size=8 bbWeight=1 PerfScore 6.00
-G_M8635_IG12: ; bbWeight=0.66, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
+G_M8635_IG11: ; bbWeight=0.66, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
lea rax, bword ptr [rbx+0x30] ; byrRegs +[rax] cmp ecx, dword ptr [rax+0x08]
- jae G_M8635_IG24
+ jae G_M8635_IG19
mov rax, bword ptr [rax] mov ecx, ecx movzx rcx, word ptr [rax+2*rcx] cmp ecx, 256
- jb SHORT G_M8635_IG14
+ jb SHORT G_M8635_IG18
call [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte] ; byrRegs -[rax] ; gcr arg pop 0 test eax, eax
- jne G_M8635_IG26
+ jne G_M8635_IG21
;; size=44 bbWeight=0.66 PerfScore 9.40
-G_M8635_IG13: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz - jmp SHORT G_M8635_IG15 - ;; size=2 bbWeight=1 PerfScore 2.00 -G_M8635_IG14: ; bbWeight=0.66, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref - mov ecx, ecx - mov rax, 0xD1FFAB1E ; static handle - test byte ptr [rcx+rax], 128 - jne G_M8635_IG26 - ;; size=22 bbWeight=0.66 PerfScore 2.97 -G_M8635_IG15: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz - mov r8d, dword ptr [rbx+0x20] - cmp r8d, dword ptr [rbx+0x38] - jge SHORT G_M8635_IG16 - inc r8d - mov dword ptr [rbx+0x20], r8d - ;; size=17 bbWeight=1 PerfScore 7.25 -G_M8635_IG16: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref - cmp ebp, 3 - jne G_M8635_IG27 - ;; size=9 bbWeight=1 PerfScore 1.25 -G_M8635_IG17: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz - mov rcx, rbx - ; byrRegs +[rcx] - call [System.Reflection.TypeNameParser:CheckTopLevelAssemblyQualifiedName():ubyte:this] - ; byrRegs -[rcx] - ; gcr arg pop 0 - test eax, eax - je SHORT G_M8635_IG18 - mov rcx, rbx - ; byrRegs +[rcx] - call [System.Reflection.TypeNameParser:GetNextAssemblyName():System.String:this] - ; gcrRegs +[rax] - ; byrRegs -[rcx] - ; gcr arg pop 0 - mov rdi, rax
+G_M8635_IG12: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref + mov ecx, dword ptr [rbx+0x20] + cmp ecx, dword ptr [rbx+0x38] + jge G_M8635_IG22 + inc ecx + mov dword ptr [rbx+0x20], ecx + jmp G_M8635_IG22 + ;; size=22 bbWeight=1 PerfScore 9.25 +G_M8635_IG13: ; bbWeight=0.05, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref, isz
; gcrRegs +[rdi]
- test rdi, rdi - jne SHORT G_M8635_IG20 - ;; size=30 bbWeight=0 PerfScore 0.00 -G_M8635_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax rsi rdi] - ; byrRegs -[rbx] - xor rax, rax - ; gcrRegs +[rax] - ;; size=2 bbWeight=0 PerfScore 0.00 -G_M8635_IG19: ; bbWeight=0, epilog, nogc, extend - add rsp, 56 - pop rbx - pop rbp - pop rsi - pop rdi - ret - ;; size=9 bbWeight=0 PerfScore 0.00 -G_M8635_IG20: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, gcvars, byref - ; gcrRegs -[rax] +[rsi rdi] - ; byrRegs +[rbx] - mov rcx, rbx - ; byrRegs +[rcx] - call [System.Reflection.TypeNameParser:get_Peek():int:this] - ; byrRegs -[rcx] - ; gcr arg pop 0 - xor ecx, ecx - test eax, eax - sete cl - call [System.Diagnostics.Debug:Assert(ubyte)] - ; gcr arg pop 0 - ;; size=22 bbWeight=0 PerfScore 0.00 -G_M8635_IG21: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref, isz
+ mov ecx, dword ptr [rbx+0x20] + lea rax, bword ptr [rbx+0x30] + ; byrRegs +[rax] + cmp ecx, dword ptr [rax+0x08] + jae SHORT G_M8635_IG19 + mov rax, bword ptr [rax] + movzx rcx, word ptr [rax+2*rcx] + jmp SHORT G_M8635_IG09 + ;; size=21 bbWeight=0.05 PerfScore 0.59 +G_M8635_IG14: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref + ; byrRegs -[rax]
mov r8, 0xD1FFAB1E ; System.Reflection.TypeNameParser+NamespaceTypeName cmp qword ptr [rsi], r8
- jne SHORT G_M8635_IG28
+ jne G_M8635_IG27 + ;; size=19 bbWeight=1 PerfScore 4.25 +G_M8635_IG15: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref
mov rdx, gword ptr [rsi+0x08] ; gcrRegs +[rdx] xor r8, r8 @@ -278,11 +221,11 @@ G_M8635_IG21: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx ; gcrRegs -[rdx rsi rdi r9] +[rax] ; byrRegs -[rcx rbx] ; gcr arg pop 0 ...

+6 (+6.67%) : 369697.dasm - System.Collections.Generic.List`1+Enumerator[ILCompiler.DependencyAnalysis.ReadyToRun.MethodWithGCInfo+FixupCell]:MoveNext():ubyte:this (Tier1)

@@ -9,12 +9,13 @@ ; 1 inlinees with PGO data; 0 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 11, 8 ) byref -> rcx this single-def
+; V00 this [V00,T00] ( 10, 7.70) byref -> rcx this single-def
; V01 loc0 [V01,T03] ( 4, 3.70) ref -> rax class-hnd single-def <<unknown class>> ; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T01] ( 3, 4.17) ref -> rax single-def "arr expr"
-; V04 tmp2 [V04,T02] ( 3, 4.17) int -> rdx "index expr" -; V05 cse0 [V05,T04] ( 3, 2.70) int -> rdx "CSE - aggressive"
+; V04 tmp2 [V04,T02] ( 3, 4.17) int -> r8 "index expr" +; V05 cse0 [V05,T04] ( 3, 2.70) int -> r8 "CSE - aggressive" +; V06 cse1 [V06,T05] ( 3, 2.30) ref -> rdx "CSE - aggressive"
; ; Lcl frame size = 40 @@ -23,41 +24,43 @@ G_M8167_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=4 bbWeight=1 PerfScore 0.25 G_M8167_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz ; byrRegs +[rcx]
- mov rax, gword ptr [rcx]
+ mov rdx, gword ptr [rcx] + ; gcrRegs +[rdx] + mov rax, rdx
; gcrRegs +[rax]
- mov edx, dword ptr [rcx+0x0C] - cmp edx, dword ptr [rax+0x14]
+ mov r8d, dword ptr [rcx+0x0C] + cmp r8d, dword ptr [rax+0x14]
jne SHORT G_M8167_IG08
- mov edx, dword ptr [rcx+0x08] - cmp edx, dword ptr [rax+0x10]
+ mov r8d, dword ptr [rcx+0x08] + cmp r8d, dword ptr [rax+0x10]
jae SHORT G_M8167_IG05
- ;; size=19 bbWeight=1 PerfScore 14.00
+ ;; size=26 bbWeight=1 PerfScore 14.25
G_M8167_IG03: ; bbWeight=0.70, gcrefRegs=0001 {rax}, byrefRegs=0002 {rcx}, byref, isz
+ ; gcrRegs -[rdx]
mov rax, gword ptr [rax+0x08]
- cmp edx, dword ptr [rax+0x08]
+ cmp r8d, dword ptr [rax+0x08]
jae SHORT G_M8167_IG07
- mov edx, edx
+ mov edx, r8d
mov rax, qword ptr [rax+8*rdx+0x10] ; gcrRegs -[rax] mov qword ptr [rcx+0x10], rax inc dword ptr [rcx+0x08] mov eax, 1
- ;; size=28 bbWeight=0.70 PerfScore 8.70
+ ;; size=30 bbWeight=0.70 PerfScore 8.70
G_M8167_IG04: ; bbWeight=0.70, epilog, nogc, extend add rsp, 40 ret ;; size=5 bbWeight=0.70 PerfScore 0.87
-G_M8167_IG05: ; bbWeight=0.30, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, gcvars, byref - mov rax, gword ptr [rcx] - ; gcrRegs +[rax] - mov eax, dword ptr [rax+0x10] - ; gcrRegs -[rax]
+G_M8167_IG05: ; bbWeight=0.30, gcVars=0000000000000000 {}, gcrefRegs=0004 {rdx}, byrefRegs=0002 {rcx}, gcvars, byref + ; gcrRegs +[rdx] + mov eax, dword ptr [rdx+0x10]
inc eax mov dword ptr [rcx+0x08], eax xor eax, eax mov qword ptr [rcx+0x10], rax
- ;; size=17 bbWeight=0.30 PerfScore 1.98
+ ;; size=14 bbWeight=0.30 PerfScore 1.37
G_M8167_IG06: ; bbWeight=0.30, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[rdx]
; byrRegs -[rcx] add rsp, 40 ret @@ -72,7 +75,7 @@ G_M8167_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 90, prolog size 4, PerfScore 26.17, instruction count 29, allocated bytes for code 90 (MethodHash=c1bfe018) for method System.Collections.Generic.List`1+Enumerator[ILCompiler.DependencyAnalysis.ReadyToRun.MethodWithGCInfo+FixupCell]:MoveNext():ubyte:this (Tier1)
+; Total bytes of code 96, prolog size 4, PerfScore 25.82, instruction count 29, allocated bytes for code 96 (MethodHash=c1bfe018) for method System.Collections.Generic.List`1+Enumerator[ILCompiler.DependencyAnalysis.ReadyToRun.MethodWithGCInfo+FixupCell]:MoveNext():ubyte:this (Tier1)
; ============================================================ Unwind Info:

+6 (+6.67%) : 372146.dasm - System.Collections.Generic.List`1+Enumerator[ILCompiler.DependencyAnalysis.ReadyToRun.MethodWithGCInfo+FixupCell]:MoveNext():ubyte:this (Tier1)

@@ -9,12 +9,14 @@ ; 1 inlinees with PGO data; 0 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 11, 8.00) byref -> rcx this single-def
+; V00 this [V00,T00] ( 10, 7.68) byref -> rcx this single-def
; V01 loc0 [V01,T03] ( 4, 3.68) ref -> rax class-hnd single-def <<unknown class>> ; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T01] ( 3, 4.07) ref -> rax single-def "arr expr"
-; V04 tmp2 [V04,T02] ( 3, 4.07) int -> rdx "index expr" -; V05 cse0 [V05,T04] ( 3, 2.68) int -> rdx "CSE - aggressive"
+; V04 tmp2 [V04,T02] ( 3, 4.07) int -> r8 "index expr" +; V05 cse0 [V05,T04] ( 3, 2.68) int -> r8 "CSE - aggressive" +; V06 cse1 [V06,T06] ( 2, 2 ) int -> r8 "CSE - aggressive" +; V07 cse2 [V07,T05] ( 3, 2.32) ref -> rdx "CSE - aggressive"
; ; Lcl frame size = 40 @@ -23,41 +25,43 @@ G_M8167_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=4 bbWeight=1 PerfScore 0.25 G_M8167_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz ; byrRegs +[rcx]
- mov rax, gword ptr [rcx]
+ mov rdx, gword ptr [rcx] + ; gcrRegs +[rdx] + mov rax, rdx
; gcrRegs +[rax]
- mov edx, dword ptr [rcx+0x0C] - cmp edx, dword ptr [rax+0x14]
+ mov r8d, dword ptr [rcx+0x0C] + cmp r8d, dword ptr [rax+0x14]
jne SHORT G_M8167_IG08
- mov edx, dword ptr [rcx+0x08] - cmp edx, dword ptr [rax+0x10]
+ mov r8d, dword ptr [rcx+0x08] + cmp r8d, dword ptr [rax+0x10]
jae SHORT G_M8167_IG05
- ;; size=19 bbWeight=1 PerfScore 14.00
+ ;; size=26 bbWeight=1 PerfScore 14.25
G_M8167_IG03: ; bbWeight=0.68, gcrefRegs=0001 {rax}, byrefRegs=0002 {rcx}, byref, isz
+ ; gcrRegs -[rdx]
mov rax, gword ptr [rax+0x08]
- cmp edx, dword ptr [rax+0x08]
+ cmp r8d, dword ptr [rax+0x08]
jae SHORT G_M8167_IG07
- mov edx, edx
+ mov edx, r8d
mov rax, qword ptr [rax+8*rdx+0x10] ; gcrRegs -[rax] mov qword ptr [rcx+0x10], rax inc dword ptr [rcx+0x08] mov eax, 1
- ;; size=28 bbWeight=0.68 PerfScore 8.47
+ ;; size=30 bbWeight=0.68 PerfScore 8.47
G_M8167_IG04: ; bbWeight=0.68, epilog, nogc, extend add rsp, 40 ret ;; size=5 bbWeight=0.68 PerfScore 0.85
-G_M8167_IG05: ; bbWeight=0.32, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, gcvars, byref - mov rax, gword ptr [rcx] - ; gcrRegs +[rax] - mov eax, dword ptr [rax+0x10] - ; gcrRegs -[rax]
+G_M8167_IG05: ; bbWeight=0.32, gcVars=0000000000000000 {}, gcrefRegs=0004 {rdx}, byrefRegs=0002 {rcx}, gcvars, byref + ; gcrRegs +[rdx] + mov eax, dword ptr [rdx+0x10]
inc eax mov dword ptr [rcx+0x08], eax xor eax, eax mov qword ptr [rcx+0x10], rax
- ;; size=17 bbWeight=0.32 PerfScore 2.09
+ ;; size=14 bbWeight=0.32 PerfScore 1.45
G_M8167_IG06: ; bbWeight=0.32, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[rdx]
; byrRegs -[rcx] add rsp, 40 ret @@ -72,7 +76,7 @@ G_M8167_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 90, prolog size 4, PerfScore 26.07, instruction count 29, allocated bytes for code 90 (MethodHash=c1bfe018) for method System.Collections.Generic.List`1+Enumerator[ILCompiler.DependencyAnalysis.ReadyToRun.MethodWithGCInfo+FixupCell]:MoveNext():ubyte:this (Tier1)
+; Total bytes of code 96, prolog size 4, PerfScore 25.67, instruction count 29, allocated bytes for code 96 (MethodHash=c1bfe018) for method System.Collections.Generic.List`1+Enumerator[ILCompiler.DependencyAnalysis.ReadyToRun.MethodWithGCInfo+FixupCell]:MoveNext():ubyte:this (Tier1)
; ============================================================ Unwind Info:

libraries.crossgen2.windows.x64.checked.mch

-32 (-26.02%) : 127433.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)

@@ -8,15 +8,17 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T04] ( 5, 7.50) ref -> rcx class-hnd single-def <System.String> -; V01 arg1 [V01,T02] ( 6, 11 ) ref -> rdx class-hnd single-def <System.String> -; V02 arg2 [V02,T05] ( 4, 6.50) int -> r8 single-def -; V03 arg3 [V03,T07] ( 5, 4.50) int -> r9 single-def -; V04 loc0 [V04,T03] ( 6, 13 ) int -> r10 -; V05 loc1 [V05,T00] ( 11, 27.50) int -> r11
+; V00 arg0 [V00,T04] ( 4, 7 ) ref -> rcx class-hnd single-def <System.String> +; V01 arg1 [V01,T02] ( 4, 10 ) ref -> rdx class-hnd single-def <System.String> +; V02 arg2 [V02,T07] ( 3, 6 ) int -> r8 single-def +; V03 arg3 [V03,T08] ( 5, 4.50) int -> r9 single-def +; V04 loc0 [V04,T01] ( 5, 12 ) int -> r10 +; V05 loc1 [V05,T00] ( 7, 25 ) int -> r11
; V06 OutArgs [V06 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 cse0 [V07,T06] ( 5, 7 ) int -> rax "CSE - aggressive" -; V08 cse1 [V08,T01] ( 6, 13.50) int -> rsi multi-def "CSE - aggressive"
+; V07 cse0 [V07,T05] ( 3, 8.50) int -> rsi "CSE - aggressive" +; V08 cse1 [V08,T06] ( 3, 8.50) int -> rbx "CSE - aggressive" +; V09 cse2 [V09,T09] ( 4, 6.50) int -> rax "CSE - aggressive" +; V10 cse3 [V10,T03] ( 3, 12 ) int -> rsi "CSE - aggressive"
; ; Lcl frame size = 40 @@ -39,59 +41,47 @@ G_M6389_IG03: ; bbWeight=2, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, ;; size=3 bbWeight=2 PerfScore 0.50 G_M6389_IG04: ; bbWeight=8, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz cmp r11d, r10d
- jge SHORT G_M6389_IG06
+ jge SHORT G_M6389_IG08
;; size=5 bbWeight=8 PerfScore 10.00 G_M6389_IG05: ; bbWeight=4, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz cmp r11d, eax
- jae SHORT G_M6389_IG11
+ jae SHORT G_M6389_IG10
mov ebx, r11d movzx rbx, word ptr [rcx+2*rbx+0x0C] lea esi, [r8+r11] cmp esi, dword ptr [rdx+0x08]
- jae SHORT G_M6389_IG11 - cmp bx, word ptr [rdx+2*rsi+0x0C]
+ jae SHORT G_M6389_IG10 + movzx rsi, word ptr [rdx+2*rsi+0x0C] + cmp ebx, esi
je SHORT G_M6389_IG03
- ;; size=29 bbWeight=4 PerfScore 48.00 -G_M6389_IG06: ; bbWeight=1, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz - cmp r11d, r10d - jge SHORT G_M6389_IG09 - ;; size=5 bbWeight=1 PerfScore 1.25 -G_M6389_IG07: ; bbWeight=0.50, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz - cmp r11d, eax - jae SHORT G_M6389_IG11 - mov eax, r11d - movzx rax, word ptr [rcx+2*rax+0x0C] - lea esi, [r8+r11] - cmp esi, dword ptr [rdx+0x08] - jae SHORT G_M6389_IG11 - mov r9d, esi - movzx rcx, word ptr [rdx+2*r9+0x0C] - ; gcrRegs -[rcx] - sub eax, ecx - ;; size=33 bbWeight=0.50 PerfScore 5.25 -G_M6389_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=31 bbWeight=4 PerfScore 45.00 +G_M6389_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[rcx rdx] + mov eax, ebx + sub eax, esi + ;; size=4 bbWeight=0.50 PerfScore 0.25 +G_M6389_IG07: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40 pop rbx pop rsi ret ;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M6389_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[rdx]
+G_M6389_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
sub eax, r9d ;; size=3 bbWeight=0.50 PerfScore 0.12
-G_M6389_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M6389_IG09: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40 pop rbx pop rsi ret ;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M6389_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M6389_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call [CORINFO_HELP_RNGCHKFAIL] ; gcr arg pop 0 int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 123, prolog size 6, PerfScore 74.62, instruction count 44, allocated bytes for code 123 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
+; Total bytes of code 91, prolog size 6, PerfScore 65.38, instruction count 35, allocated bytes for code 91 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
; ============================================================ Unwind Info:

-32 (-24.43%) : 241359.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan1[uint]):int (FullOpts)

@@ -10,108 +10,93 @@ ; ; V00 arg0 [V00,T03] ( 4, 8 ) byref -> rcx ld-addr-op single-def ; V01 arg1 [V01,T04] ( 4, 8 ) byref -> rdx ld-addr-op single-def
-; V02 loc0 [V02,T00] ( 7, 24.50) int -> registers
+; V02 loc0 [V02,T00] ( 7, 24.50) int -> r10
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T01] ( 6, 20 ) int -> r9 "dup spill" -; V05 tmp2 [V05,T07] ( 3, 5.50) byref -> r10 single-def "field V00._reference (fldOffset=0x0)" P-INDEP -; V06 tmp3 [V06,T06] ( 5, 7 ) int -> rcx "field V00._length (fldOffset=0x8)" P-INDEP -; V07 tmp4 [V07,T08] ( 3, 5.50) byref -> r8 single-def "field V01._reference (fldOffset=0x0)" P-INDEP -; V08 tmp5 [V08,T05] ( 6, 7.50) int -> rdx "field V01._length (fldOffset=0x8)" P-INDEP
+; V04 tmp1 [V04,T01] ( 2, 16 ) int -> r10 "dup spill" +; V05 tmp2 [V05,T09] ( 2, 5 ) byref -> r8 single-def "field V00._reference (fldOffset=0x0)" P-INDEP +; V06 tmp3 [V06,T08] ( 4, 6.50) int -> rcx "field V00._length (fldOffset=0x8)" P-INDEP +; V07 tmp4 [V07,T10] ( 2, 5 ) byref -> rax single-def "field V01._reference (fldOffset=0x0)" P-INDEP +; V08 tmp5 [V08,T07] ( 5, 7 ) int -> rdx "field V01._length (fldOffset=0x8)" P-INDEP
;* V09 tmp6 [V09 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[uint]> ;* V10 tmp7 [V10 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[uint]>
-; V11 cse0 [V11,T02] ( 6, 13.50) long -> r11 multi-def "CSE - aggressive"
+; V11 cse0 [V11,T05] ( 3, 8.50) int -> r11 "CSE - aggressive" +; V12 cse1 [V12,T06] ( 3, 8.50) int -> r9 "CSE - aggressive" +; V13 cse2 [V13,T02] ( 3, 12 ) long -> r9 "CSE - aggressive"
;
-; Lcl frame size = 32
+; Lcl frame size = 40
G_M264_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbx - sub rsp, 32 - ;; size=5 bbWeight=1 PerfScore 1.25
+ sub rsp, 40 + ;; size=4 bbWeight=1 PerfScore 0.25
G_M264_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0006 {rcx rdx}, byref, isz ; byrRegs +[rcx rdx]
- mov r8, bword ptr [rdx] - ; byrRegs +[r8]
+ mov rax, bword ptr [rdx] + ; byrRegs +[rax]
mov edx, dword ptr [rdx+0x08] ; byrRegs -[rdx]
- mov r10, bword ptr [rcx] - ; byrRegs +[r10]
+ mov r8, bword ptr [rcx] + ; byrRegs +[r8]
mov ecx, dword ptr [rcx+0x08] ; byrRegs -[rcx] cmp ecx, edx je SHORT G_M264_IG04 ;; size=16 bbWeight=1 PerfScore 9.25 G_M264_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[r8 r10]
+ ; byrRegs -[rax r8]
cmp ecx, edx
- jl SHORT G_M264_IG12 - jmp SHORT G_M264_IG10
+ jl SHORT G_M264_IG11 + jmp SHORT G_M264_IG07
;; size=6 bbWeight=0.50 PerfScore 1.62
-G_M264_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0500 {r8 r10}, byref - ; byrRegs +[r8 r10] - mov r9d, edx
+G_M264_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0101 {rax r8}, byref + ; byrRegs +[rax r8] + mov r10d, edx
;; size=3 bbWeight=0.50 PerfScore 0.12
-G_M264_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0500 {r8 r10}, byref, isz - dec r9d - mov eax, r9d - test eax, eax - jl SHORT G_M264_IG06 - cmp eax, ecx - jae SHORT G_M264_IG14 - mov r11d, eax - mov ebx, dword ptr [r10+4*r11] - cmp eax, edx - jae SHORT G_M264_IG14 - cmp ebx, dword ptr [r8+4*r11] - je SHORT G_M264_IG08 - ;; size=31 bbWeight=4 PerfScore 42.00 -G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0500 {r8 r10}, byref, isz - test r9d, r9d - jge SHORT G_M264_IG09 - xor eax, eax - ;; size=7 bbWeight=0.50 PerfScore 0.75 -G_M264_IG07: ; bbWeight=0.50, epilog, nogc, extend - add rsp, 32 - pop rbx - ret - ;; size=6 bbWeight=0.50 PerfScore 0.88 -G_M264_IG08: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0500 {r8 r10}, gcvars, byref, isz - mov r9d, eax - jmp SHORT G_M264_IG05 - ;; size=5 bbWeight=2 PerfScore 4.50 -G_M264_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0500 {r8 r10}, byref, isz - cmp r9d, ecx - jae SHORT G_M264_IG14 - mov r11d, r9d - mov eax, dword ptr [r10+4*r11] - cmp r9d, edx - jae SHORT G_M264_IG14 - cmp eax, dword ptr [r8+4*r11] - jb SHORT G_M264_IG12 - ;; size=23 bbWeight=0.50 PerfScore 4.38 -G_M264_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; byrRegs -[r8 r10]
+G_M264_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0101 {rax r8}, byref, isz + dec r10d + js SHORT G_M264_IG09 + cmp r10d, ecx + jae SHORT G_M264_IG13 + mov r9d, r10d + mov r11d, dword ptr [r8+4*r9] + cmp r10d, edx + jae SHORT G_M264_IG13 + mov r9d, dword ptr [rax+4*r9] + cmp r11d, r9d + je SHORT G_M264_IG05 + ;; size=31 bbWeight=4 PerfScore 37.00 +G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ; byrRegs -[rax r8] + cmp r9d, r11d + ja SHORT G_M264_IG11 + ;; size=5 bbWeight=0.50 PerfScore 0.62 +G_M264_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov eax, 1 ;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M264_IG11: ; bbWeight=0.50, epilog, nogc, extend - add rsp, 32 - pop rbx
+G_M264_IG08: ; bbWeight=0.50, epilog, nogc, extend + add rsp, 40
ret
- ;; size=6 bbWeight=0.50 PerfScore 0.88 -G_M264_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=5 bbWeight=0.50 PerfScore 0.62 +G_M264_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + xor eax, eax + ;; size=2 bbWeight=0.50 PerfScore 0.12 +G_M264_IG10: ; bbWeight=0.50, epilog, nogc, extend + add rsp, 40 + ret + ;; size=5 bbWeight=0.50 PerfScore 0.62 +G_M264_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov eax, -1 ;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M264_IG13: ; bbWeight=0.50, epilog, nogc, extend - add rsp, 32 - pop rbx
+G_M264_IG12: ; bbWeight=0.50, epilog, nogc, extend + add rsp, 40
ret
- ;; size=6 bbWeight=0.50 PerfScore 0.88 -G_M264_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=5 bbWeight=0.50 PerfScore 0.62 +G_M264_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call [CORINFO_HELP_RNGCHKFAIL] ; gcr arg pop 0 int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 131, prolog size 5, PerfScore 66.75, instruction count 50, allocated bytes for code 131 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
+; Total bytes of code 99, prolog size 4, PerfScore 51.12, instruction count 35, allocated bytes for code 99 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
; ============================================================ Unwind Info: @@ -119,10 +104,9 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x05 - CountOfUnwindCodes: 2
+ SizeOfProlog : 0x04 + CountOfUnwindCodes: 1
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20 - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28

-18 (-9.73%) : 179166.dasm - Microsoft.CodeAnalysis.CommandLineParser:g_processSlashes|430(System.Text.StringBuilder,System.ReadOnlySpan`1[ushort],byref) (FullOpts)

@@ -13,12 +13,13 @@ ; V02 arg2 [V02,T03] ( 6, 13 ) byref -> rbx single-def ; V03 loc0 [V03,T00] ( 11, 26 ) int -> rdi ; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T08] ( 3, 3 ) int -> rdx "Span.get_Item index"
+;* V05 tmp1 [V05,T09] ( 0, 0 ) int -> zero-ref "Span.get_Item index"
; V06 tmp2 [V06,T01] ( 3, 24 ) int -> rax "Span.get_Item index"
-; V07 tmp3 [V07,T07] ( 3, 5.50) byref -> rcx single-def "field V01._reference (fldOffset=0x0)" P-INDEP -; V08 tmp4 [V08,T04] ( 5, 14.50) int -> r11 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V07 tmp3 [V07,T08] ( 2, 5 ) byref -> rcx single-def "field V01._reference (fldOffset=0x0)" P-INDEP +; V08 tmp4 [V08,T04] ( 3, 13 ) int -> r11 single-def "field V01._length (fldOffset=0x8)" P-INDEP
;* V09 tmp5 [V09 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ushort]>
-; V10 cse0 [V10,T02] ( 6, 23.50) int -> rdx "CSE - aggressive"
+; V10 cse0 [V10,T07] ( 3, 8.50) int -> rax "CSE - aggressive" +; V11 cse1 [V11,T02] ( 4, 22 ) int -> rdx "CSE - aggressive"
; ; Lcl frame size = 32 @@ -49,30 +50,24 @@ G_M39664_IG03: ; bbWeight=2, gcrefRegs=0040 {rsi}, byrefRegs=000A {rcx rb G_M39664_IG04: ; bbWeight=8, gcrefRegs=0040 {rsi}, byrefRegs=000A {rcx rbx}, byref, isz mov edx, dword ptr [rbx] cmp edx, r11d
- jge SHORT G_M39664_IG06
+ jge SHORT G_M39664_IG12
;; size=7 bbWeight=8 PerfScore 26.00 G_M39664_IG05: ; bbWeight=4, gcrefRegs=0040 {rsi}, byrefRegs=000A {rcx rbx}, byref, isz mov eax, edx cmp eax, r11d
- jae G_M39664_IG15 - cmp word ptr [rcx+2*rax], 92
+ jae SHORT G_M39664_IG14 + movzx rax, word ptr [rcx+2*rax] + cmp eax, 92
je SHORT G_M39664_IG03
- ;; size=18 bbWeight=4 PerfScore 22.00 -G_M39664_IG06: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=000A {rcx rbx}, byref, isz - cmp edx, r11d - jge SHORT G_M39664_IG13 - ;; size=5 bbWeight=1 PerfScore 1.25 -G_M39664_IG07: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=000A {rcx rbx}, byref, isz - cmp edx, r11d - jae SHORT G_M39664_IG15 - mov r11d, edx - cmp word ptr [rcx+2*r11], 34 - jne SHORT G_M39664_IG13 - cmp edi, 2 - jl SHORT G_M39664_IG09 - ;; size=21 bbWeight=0.50 PerfScore 3.38 -G_M39664_IG08: ; bbWeight=4, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
+ ;; size=16 bbWeight=4 PerfScore 19.00 +G_M39664_IG06: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
; byrRegs -[rcx]
+ cmp eax, 34 + jne SHORT G_M39664_IG12 + cmp edi, 2 + jl SHORT G_M39664_IG08 + ;; size=10 bbWeight=0.50 PerfScore 1.25 +G_M39664_IG07: ; bbWeight=4, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
mov rcx, rsi ; gcrRegs +[rcx] lea r11, [(reloc)] ; function address @@ -83,12 +78,12 @@ G_M39664_IG08: ; bbWeight=4, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, ; gcr arg pop 0 add edi, -2 cmp edi, 2
- jge SHORT G_M39664_IG08
+ jge SHORT G_M39664_IG07
;; size=28 bbWeight=4 PerfScore 34.00
-G_M39664_IG09: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
+G_M39664_IG08: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
; gcrRegs -[rax] cmp edi, 1
- jne SHORT G_M39664_IG10
+ jne SHORT G_M39664_IG09
mov rcx, rsi ; gcrRegs +[rcx] lea r11, [(reloc)] ; function address @@ -98,18 +93,18 @@ G_M39664_IG09: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx ; gcrRegs -[rcx rsi] +[rax] ; gcr arg pop 0 ;; size=25 bbWeight=0.50 PerfScore 4.12
-G_M39664_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
+G_M39664_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
; gcrRegs -[rax] inc dword ptr [rbx] ;; size=2 bbWeight=0.50 PerfScore 1.50
-G_M39664_IG11: ; bbWeight=0.50, epilog, nogc, extend
+G_M39664_IG10: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 32 pop rbx pop rsi pop rdi ret ;; size=8 bbWeight=0.50 PerfScore 1.38
-G_M39664_IG12: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref
+G_M39664_IG11: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rsi] ; byrRegs -[rbx] mov rcx, rsi @@ -122,12 +117,12 @@ G_M39664_IG12: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0040 { ; gcr arg pop 0 dec edi ;; size=22 bbWeight=2 PerfScore 14.50
-G_M39664_IG13: ; bbWeight=4, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+G_M39664_IG12: ; bbWeight=4, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax] test edi, edi
- jg SHORT G_M39664_IG12
+ jg SHORT G_M39664_IG11
;; size=4 bbWeight=4 PerfScore 5.00
-G_M39664_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M39664_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rsi] add rsp, 32 pop rbx @@ -135,13 +130,13 @@ G_M39664_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr pop rdi ret ;; size=8 bbWeight=0.50 PerfScore 1.38
-G_M39664_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M39664_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call [CORINFO_HELP_RNGCHKFAIL] ; gcr arg pop 0 int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 185, prolog size 13, PerfScore 127.50, instruction count 66, allocated bytes for code 185 (MethodHash=95cd650f) for method Microsoft.CodeAnalysis.CommandLineParser:<RemoveQuotesAndSlashesEx>g__processSlashes|43_0(System.Text.StringBuilder,System.ReadOnlySpan`1[ushort],byref) (FullOpts)
+; Total bytes of code 167, prolog size 13, PerfScore 121.12, instruction count 62, allocated bytes for code 167 (MethodHash=95cd650f) for method Microsoft.CodeAnalysis.CommandLineParser:<RemoveQuotesAndSlashesEx>g__processSlashes|43_0(System.Text.StringBuilder,System.ReadOnlySpan`1[ushort],byref) (FullOpts)
; ============================================================ Unwind Info:

+3 (+8.82%) : 148307.dasm - System.Security.Cryptography.SHA384CryptoServiceProvider:Dispose(ubyte):this (FullOpts)

@@ -9,9 +9,10 @@ ; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 4, 4 ) ref -> rbx this class-hnd single-def <System.Security.Cryptography.SHA384CryptoServiceProvider>
+; V00 this [V00,T00] ( 4, 3 ) ref -> rbx this class-hnd single-def <System.Security.Cryptography.SHA384CryptoServiceProvider>
; V01 arg1 [V01,T01] ( 3, 3 ) ubyte -> rdx single-def ; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V03 cse0 [V03,T02] ( 2, 2 ) int -> rcx "CSE - aggressive"
; ; Lcl frame size = 32 @@ -22,8 +23,11 @@ G_M59236_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[rbx] ;; size=8 bbWeight=1 PerfScore 1.50 G_M59236_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- test dl, dl - je SHORT G_M59236_IG03
+ movzx rcx, dl + test ecx, ecx + je SHORT G_M59236_IG04 + ;; size=7 bbWeight=1 PerfScore 1.50 +G_M59236_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rcx, gword ptr [rbx+0x20] ; gcrRegs +[rcx] cmp dword ptr [rcx], ecx @@ -31,15 +35,15 @@ G_M59236_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcrRegs -[rcx] ; gcr arg pop 0 mov byte ptr [rbx+0x18], 1
- ;; size=20 bbWeight=1 PerfScore 10.25 -G_M59236_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=16 bbWeight=0.50 PerfScore 4.50 +G_M59236_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rbx] add rsp, 32 pop rbx ret ;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 34, prolog size 5, PerfScore 13.50, instruction count 12, allocated bytes for code 34 (MethodHash=ebc3189b) for method System.Security.Cryptography.SHA384CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
+; Total bytes of code 37, prolog size 5, PerfScore 9.25, instruction count 13, allocated bytes for code 37 (MethodHash=ebc3189b) for method System.Security.Cryptography.SHA384CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
; ============================================================ Unwind Info:

+3 (+8.82%) : 148276.dasm - System.Security.Cryptography.SHA256CryptoServiceProvider:Dispose(ubyte):this (FullOpts)

@@ -9,9 +9,10 @@ ; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 4, 4 ) ref -> rbx this class-hnd single-def <System.Security.Cryptography.SHA256CryptoServiceProvider>
+; V00 this [V00,T00] ( 4, 3 ) ref -> rbx this class-hnd single-def <System.Security.Cryptography.SHA256CryptoServiceProvider>
; V01 arg1 [V01,T01] ( 3, 3 ) ubyte -> rdx single-def ; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V03 cse0 [V03,T02] ( 2, 2 ) int -> rcx "CSE - aggressive"
; ; Lcl frame size = 32 @@ -22,8 +23,11 @@ G_M57738_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[rbx] ;; size=8 bbWeight=1 PerfScore 1.50 G_M57738_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- test dl, dl - je SHORT G_M57738_IG03
+ movzx rcx, dl + test ecx, ecx + je SHORT G_M57738_IG04 + ;; size=7 bbWeight=1 PerfScore 1.50 +G_M57738_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rcx, gword ptr [rbx+0x20] ; gcrRegs +[rcx] cmp dword ptr [rcx], ecx @@ -31,15 +35,15 @@ G_M57738_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcrRegs -[rcx] ; gcr arg pop 0 mov byte ptr [rbx+0x18], 1
- ;; size=20 bbWeight=1 PerfScore 10.25 -G_M57738_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=16 bbWeight=0.50 PerfScore 4.50 +G_M57738_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rbx] add rsp, 32 pop rbx ret ;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 34, prolog size 5, PerfScore 13.50, instruction count 12, allocated bytes for code 34 (MethodHash=76961e75) for method System.Security.Cryptography.SHA256CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
+; Total bytes of code 37, prolog size 5, PerfScore 9.25, instruction count 13, allocated bytes for code 37 (MethodHash=76961e75) for method System.Security.Cryptography.SHA256CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
; ============================================================ Unwind Info:

+44 (+9.76%) : 135762.dasm - System.ComponentModel.AttributeCollection:FromExisting(System.ComponentModel.AttributeCollection,System.Attribute[]):System.ComponentModel.AttributeCollection (FullOpts)

@@ -9,26 +9,28 @@ ; 0 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T06] ( 8, 26 ) ref -> rsi class-hnd single-def <System.ComponentModel.AttributeCollection> -; V01 arg1 [V01,T03] ( 11, 35.50) ref -> rbx class-hnd <System.Attribute[]> -; V02 loc0 [V02,T04] ( 10, 30 ) ref -> rdi class-hnd exact single-def <System.Attribute[]> -; V03 loc1 [V03,T13] ( 6, 7 ) int -> registers -; V04 loc2 [V04,T15] ( 4, 2.50) ref -> rbx class-hnd <System.Attribute[]> -; V05 loc3 [V05,T08] ( 5, 17 ) int -> r14 -;* V06 loc4 [V06,T12] ( 0, 0 ) ubyte -> zero-ref -; V07 loc5 [V07,T00] ( 7, 88 ) int -> r13
+; V00 arg0 [V00,T05] ( 8, 26 ) ref -> rsi class-hnd single-def <System.ComponentModel.AttributeCollection> +; V01 arg1 [V01,T03] ( 9, 28.50) ref -> rbx class-hnd <System.Attribute[]> +; V02 loc0 [V02,T04] ( 10, 28 ) ref -> rbp class-hnd exact single-def <System.Attribute[]> +; V03 loc1 [V03,T12] ( 6, 7 ) int -> [rsp+0x34] +; V04 loc2 [V04,T17] ( 4, 2.50) ref -> rbx class-hnd <System.Attribute[]> +; V05 loc3 [V05,T08] ( 5, 17 ) int -> r15 +;* V06 loc4 [V06,T15] ( 0, 0 ) ubyte -> zero-ref +; V07 loc5 [V07,T00] ( 7, 86 ) int -> [rsp+0x30]
; V08 OutArgs [V08 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V09 tmp1 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <<unknown class>>
-; V10 tmp2 [V10,T10] ( 2, 16 ) ref -> rdx class-hnd "Strict ordering of exceptions for Array store" <System.Attribute> -; V11 tmp3 [V11,T09] ( 4, 16 ) int -> rbp "impSpillLclRefs"
+; V10 tmp2 [V10,T10] ( 2, 8 ) ref -> rax class-hnd "Strict ordering of exceptions for Array store" <System.Attribute> +; V11 tmp3 [V11,T09] ( 4, 16 ) int -> r14 "impSpillLclRefs"
; V12 tmp4 [V12,T11] ( 2, 8 ) ref -> rdx class-hnd "Strict ordering of exceptions for Array store" <System.Attribute> ; V13 tmp5 [V13,T14] ( 3, 6 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <System.ComponentModel.AttributeCollection> ; V14 tmp6 [V14,T01] ( 2, 64 ) ref -> [rsp+0x20] spill-single-def "argument with side effect" ; V15 tmp7 [V15,T02] ( 2, 64 ) ref -> rdx "argument with side effect"
-; V16 cse0 [V16,T07] ( 6, 24 ) int -> r12 hoist multi-def "CSE - aggressive" -; V17 cse1 [V17,T05] ( 5, 30 ) long -> r15 "CSE - aggressive"
+; V16 cse0 [V16,T16] ( 2, 5 ) ref -> r13 hoist "CSE - moderate" +; V17 cse1 [V17,T07] ( 6, 24 ) int -> [rsp+0x2C] hoist multi-def "CSE - aggressive" +; V18 cse2 [V18,T13] ( 4, 7 ) int -> rdi "CSE - moderate" +; V19 cse3 [V19,T06] ( 5, 28 ) long -> r12 "CSE - aggressive"
;
-; Lcl frame size = 40
+; Lcl frame size = 56
G_M10252_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push r15 @@ -39,7 +41,7 @@ G_M10252_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, push rsi push rbp push rbx
- sub rsp, 40
+ sub rsp, 56
mov rsi, rcx ; gcrRegs +[rsi] mov rbx, rdx @@ -76,42 +78,46 @@ G_M10252_IG04: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, ; gcrRegs -[rcx] +[rax] ; gcr arg pop 0 mov ecx, dword ptr [rax+0x08]
- add ecx, dword ptr [rbx+0x08]
+ mov edi, dword ptr [rbx+0x08] + add ecx, edi
movsxd rcx, ecx call [CORINFO_HELP_READYTORUN_NEWARR_1] ; gcr arg pop 0
- mov rdi, rax - ; gcrRegs +[rdi]
+ mov rbp, rax + ; gcrRegs +[rbp]
mov rcx, rsi ; gcrRegs +[rcx] lea r11, [(reloc)] ; function address call [r11]<unknown method> ; gcrRegs -[rcx] ; gcr arg pop 0
- mov ebp, dword ptr [rax+0x08]
+ mov r14d, dword ptr [rax+0x08]
mov rcx, rsi ; gcrRegs +[rcx]
- mov rdx, rdi
+ mov rdx, rbp
; gcrRegs +[rdx] xor r8d, r8d call [System.ComponentModel.AttributeCollection:CopyTo(System.Array,int):this] ; gcrRegs -[rax rcx rdx] ; gcr arg pop 0
- xor r14d, r14d - cmp dword ptr [rbx+0x08], 0
+ xor r15d, r15d + test edi, edi
jle G_M10252_IG12
- ;; size=77 bbWeight=1 PerfScore 29.00 -G_M10252_IG05: ; bbWeight=4, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref - mov r15d, r14d - mov rcx, gword ptr [rbx+8*r15+0x10]
+ mov rcx, qword ptr [(reloc)] + mov r13, gword ptr [rcx] + ; gcrRegs +[r13] + ;; size=88 bbWeight=1 PerfScore 29.50 +G_M10252_IG05: ; bbWeight=4, gcrefRegs=2068 {rbx rbp rsi r13}, byrefRegs=0000 {}, byref + mov r12d, r15d + mov rcx, gword ptr [rbx+8*r12+0x10]
; gcrRegs +[rcx]
- mov rdx, qword ptr [(reloc)] ; const ptr - mov rdx, gword ptr [rdx]
+ mov rdx, r13
; gcrRegs +[rdx] call [<unknown method>] ; gcrRegs -[rcx rdx] ; gcr arg pop 0
- xor r13d, r13d
+ xor eax, eax + mov dword ptr [rsp+0x30], eax
mov rcx, rsi ; gcrRegs +[rcx] lea r11, [(reloc)] @@ -120,16 +126,19 @@ G_M10252_IG05: ; bbWeight=4, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 ; gcr arg pop 0 cmp dword ptr [rax+0x08], 0 jle G_M10252_IG10
- ;; size=50 bbWeight=4 PerfScore 69.00 -G_M10252_IG06: ; bbWeight=2, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
+ ;; size=46 bbWeight=4 PerfScore 58.00 +G_M10252_IG06: ; bbWeight=2, gcrefRegs=2068 {rbx rbp rsi r13}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
- mov r12d, dword ptr [rdi+0x08] - ;; size=4 bbWeight=2 PerfScore 4.00 -G_M10252_IG07: ; bbWeight=16, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz - cmp r13d, r12d
+ mov eax, dword ptr [rbp+0x08] + ;; size=3 bbWeight=2 PerfScore 4.00 +G_M10252_IG07: ; bbWeight=16, gcrefRegs=2068 {rbx rbp rsi r13}, byrefRegs=0000 {}, byref, isz + mov edx, dword ptr [rsp+0x30] + mov dword ptr [rsp+0x2C], eax + cmp edx, eax
jae G_M10252_IG17
- mov ecx, r13d - mov rcx, gword ptr [rdi+8*rcx+0x10]
+ mov dword ptr [rsp+0x30], edx + mov ecx, edx + mov rcx, gword ptr [rbp+8*rcx+0x10]
; gcrRegs +[rcx] lea r11, [(reloc)] ; function address cmp dword ptr [rcx], ecx @@ -138,7 +147,7 @@ G_M10252_IG07: ; bbWeight=16, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=000 ; gcr arg pop 0 mov gword ptr [rsp+0x20], rax ; GC ptr vars +{V14}
- mov rcx, gword ptr [rbx+8*r15+0x10]
+ mov rcx, gword ptr [rbx+8*r12+0x10]
; gcrRegs +[rcx] lea r11, [(reloc)] ; function address cmp dword ptr [rcx], ecx @@ -157,82 +166,90 @@ G_M10252_IG07: ; bbWeight=16, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=000 ; gcr arg pop 0 test eax, eax jne SHORT G_M10252_IG09
- inc r13d
+ mov edx, dword ptr [rsp+0x30] + inc edx + mov dword ptr [rsp+0x30], edx
mov rcx, rsi ; gcrRegs +[rcx] lea r11, [(reloc)] ; function address call [r11]<unknown method> ; gcrRegs -[rcx] +[rax] ; gcr arg pop 0
- cmp dword ptr [rax+0x08], r13d - jg SHORT G_M10252_IG07 - ;; size=97 bbWeight=16 PerfScore 584.00 -G_M10252_IG08: ; bbWeight=2, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+ mov edx, dword ptr [rsp+0x30] + cmp dword ptr [rax+0x08], edx + mov dword ptr [rsp+0x30], edx + mov eax, dword ptr [rsp+0x2C]
; gcrRegs -[rax]
+ jg SHORT G_M10252_IG07 + ;; size=125 bbWeight=16 PerfScore 712.00 +G_M10252_IG08: ; bbWeight=2, gcrefRegs=2068 {rbx rbp rsi r13}, byrefRegs=0000 {}, byref, isz
jmp SHORT G_M10252_IG10 ;; size=2 bbWeight=2 PerfScore 4.00
-G_M10252_IG09: ; bbWeight=4, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz - mov rdx, gword ptr [rbx+8*r15+0x10] - ; gcrRegs +[rdx] - mov ecx, r13d - lea rcx, bword ptr [rdi+8*rcx+0x10]
+G_M10252_IG09: ; bbWeight=2, gcrefRegs=2068 {rbx rbp rsi r13}, byrefRegs=0000 {}, byref, isz + mov rax, gword ptr [rbx+8*r12+0x10] + ; gcrRegs +[rax] + mov ecx, dword ptr [rsp+0x30] + lea rcx, bword ptr [rbp+8*rcx+0x10]
; byrRegs +[rcx]
+ mov rdx, rax + ; gcrRegs +[rdx]
call [CORINFO_HELP_ASSIGN_REF]
- ; gcrRegs -[rdx]
+ ; gcrRegs -[rax rdx]
; byrRegs -[rcx] jmp SHORT G_M10252_IG11
- ;; size=21 bbWeight=4 PerfScore 33.00 -G_M10252_IG10: ; bbWeight=2, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz - lea ecx, [rbp+0x01] - mov r13d, ecx - mov rdx, gword ptr [rbx+8*r15+0x10]
+ ;; size=25 bbWeight=2 PerfScore 20.50 +G_M10252_IG10: ; bbWeight=2, gcrefRegs=2068 {rbx rbp rsi r13}, byrefRegs=0000 {}, byref, isz + lea ecx, [r14+0x01] + mov dword ptr [rsp+0x34], ecx + mov rdx, gword ptr [rbx+8*r12+0x10]
; gcrRegs +[rdx]
- mov r12d, dword ptr [rdi+0x08] - cmp ebp, r12d
+ mov ecx, dword ptr [rbp+0x08] + mov r12d, ecx + cmp r14d, r12d
jae SHORT G_M10252_IG17
- mov ecx, ebp - lea rcx, bword ptr [rdi+8*rcx+0x10]
+ mov ecx, r14d + lea rcx, bword ptr [rbp+8*rcx+0x10]
; byrRegs +[rcx] call [CORINFO_HELP_ASSIGN_REF] ; gcrRegs -[rdx] ; byrRegs -[rcx]
- mov ebp, r13d - ;; size=36 bbWeight=2 PerfScore 21.00 -G_M10252_IG11: ; bbWeight=4, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref - inc r14d - cmp dword ptr [rbx+0x08], r14d
+ mov r14d, dword ptr [rsp+0x34] + ;; size=43 bbWeight=2 PerfScore 26.50 +G_M10252_IG11: ; bbWeight=4, gcrefRegs=2068 {rbx rbp rsi r13}, byrefRegs=0000 {}, byref + inc r15d + cmp edi, r15d
jg G_M10252_IG05
- ;; size=13 bbWeight=4 PerfScore 17.00 -G_M10252_IG12: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rbx rsi] - mov r12d, dword ptr [rdi+0x08] - cmp r12d, ebp
+ ;; size=12 bbWeight=4 PerfScore 6.00 +G_M10252_IG12: ; bbWeight=1, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rbx rsi r13] + mov r12d, dword ptr [rbp+0x08] + cmp r12d, r14d
jle SHORT G_M10252_IG14 ;; size=9 bbWeight=1 PerfScore 3.25
-G_M10252_IG13: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz - movsxd rcx, ebp
+G_M10252_IG13: ; bbWeight=0.50, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref, isz + movsxd rcx, r14d
call [CORINFO_HELP_READYTORUN_NEWARR_1] ; gcrRegs +[rax] ; gcr arg pop 0 ...

libraries.pmi.windows.x64.checked.mch

-41 (-45.56%) : 240269.dasm - ILCompiler.IBC.IBCProfileParser+IBCBlobKey:Equals(System.Object):ubyte:this (FullOpts)

@@ -8,87 +8,62 @@ ; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 4, 3 ) byref -> rsi this single-def -; V01 arg1 [V01,T00] ( 6, 4.25) ref -> rbx class-hnd single-def <System.Object> -; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V00 this [V00,T01] ( 4, 3 ) byref -> rcx this single-def +; V01 arg1 [V01,T00] ( 5, 4 ) ref -> rdx class-hnd single-def <System.Object> +;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T02] ( 3, 4.50) ref -> rax class-hnd "spilling QMark2" <ILCompiler.IBC.IBCProfileParser+IBCBlobKey> ; V04 tmp2 [V04,T03] ( 3, 1.50) ubyte -> rax "Inline return value spill temp" ;* V05 tmp3 [V05 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <ILCompiler.IBC.IBCProfileParser+IBCBlobKey>
-; V06 tmp4 [V06,T06] ( 2, 1 ) int -> rax "field V05.Token (fldOffset=0x0)" P-INDEP -; V07 tmp5 [V07,T07] ( 2, 1 ) int -> rcx "field V05.Type (fldOffset=0x4)" P-INDEP -; V08 cse0 [V08,T04] ( 4, 1.25) long -> rcx "CSE - moderate" -; V09 cse1 [V09,T05] ( 3, 1 ) long -> rdx "CSE - moderate"
+; V06 tmp4 [V06,T04] ( 2, 1 ) int -> rax "field V05.Token (fldOffset=0x0)" P-INDEP +; V07 tmp5 [V07,T05] ( 2, 1 ) int -> rdx "field V05.Type (fldOffset=0x4)" P-INDEP
;
-; Lcl frame size = 40
+; Lcl frame size = 0
G_M25636_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rsi - push rbx - sub rsp, 40 - mov rsi, rcx - ; byrRegs +[rsi] - mov rbx, rdx - ; gcrRegs +[rbx] - ;; size=12 bbWeight=1 PerfScore 2.75 -G_M25636_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz - mov rax, rbx
+ ;; size=0 bbWeight=1 PerfScore 0.00 +G_M25636_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0002 {rcx}, byref, isz + ; gcrRegs +[rdx] + ; byrRegs +[rcx] + mov rax, rdx
; gcrRegs +[rax] test rax, rax je SHORT G_M25636_IG04 ;; size=8 bbWeight=1 PerfScore 1.50
-G_M25636_IG03: ; bbWeight=0.25, gcrefRegs=0009 {rax rbx}, byrefRegs=0040 {rsi}, byref, isz - mov rdx, qword ptr [rax] - mov rcx, 0xD1FFAB1E ; ILCompiler.IBC.IBCProfileParser+IBCBlobKey - cmp rdx, rcx
+G_M25636_IG03: ; bbWeight=0.25, gcrefRegs=0005 {rax rdx}, byrefRegs=0002 {rcx}, byref, isz + mov r8, 0xD1FFAB1E ; ILCompiler.IBC.IBCProfileParser+IBCBlobKey + cmp qword ptr [rax], r8
je SHORT G_M25636_IG06
- ;; size=18 bbWeight=0.25 PerfScore 0.88
+ ;; size=15 bbWeight=0.25 PerfScore 1.06
G_M25636_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax rbx] - ; byrRegs -[rsi]
+ ; gcrRegs -[rax rdx] + ; byrRegs -[rcx]
xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M25636_IG05: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 40 - pop rbx - pop rsi
ret
- ;; size=7 bbWeight=0.50 PerfScore 1.12 -G_M25636_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, gcvars, byref, isz - ; gcrRegs +[rbx] - ; byrRegs +[rsi] - cmp rdx, rcx - je SHORT G_M25636_IG08 - ;; size=5 bbWeight=0.50 PerfScore 0.62 -G_M25636_IG07: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref - mov rdx, rbx
+ ;; size=1 bbWeight=0.50 PerfScore 0.50 +G_M25636_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0004 {rdx}, byrefRegs=0002 {rcx}, gcvars, byref, isz
; gcrRegs +[rdx]
- call [CORINFO_HELP_UNBOX]
+ ; byrRegs +[rcx] + mov eax, dword ptr [rdx+0x08] + mov edx, dword ptr [rdx+0x0C]
; gcrRegs -[rdx]
- ; gcr arg pop 0 - ;; size=9 bbWeight=0.25 PerfScore 0.81 -G_M25636_IG08: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz - mov eax, dword ptr [rbx+0x08] - mov ecx, dword ptr [rbx+0x0C] - cmp eax, dword ptr [rsi] - jne SHORT G_M25636_IG09
+ cmp eax, dword ptr [rcx] + jne SHORT G_M25636_IG07
xor eax, eax
- cmp ecx, dword ptr [rsi+0x04]
+ cmp edx, dword ptr [rcx+0x04]
sete al
- jmp SHORT G_M25636_IG10
+ jmp SHORT G_M25636_IG08
;; size=20 bbWeight=0.50 PerfScore 7.12
-G_M25636_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[rbx] - ; byrRegs -[rsi]
+G_M25636_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; byrRegs -[rcx]
xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M25636_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - add rsp, 40 - pop rbx - pop rsi
+G_M25636_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ret
- ;; size=7 bbWeight=0.50 PerfScore 1.12
+ ;; size=1 bbWeight=0.50 PerfScore 0.50
-; Total bytes of code 90, prolog size 6, PerfScore 16.19, instruction count 34, allocated bytes for code 90 (MethodHash=acaf9bdb) for method ILCompiler.IBC.IBCProfileParser+IBCBlobKey:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 49, prolog size 0, PerfScore 10.94, instruction count 18, allocated bytes for code 49 (MethodHash=acaf9bdb) for method ILCompiler.IBC.IBCProfileParser+IBCBlobKey:Equals(System.Object):ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -96,11 +71,8 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x06 - CountOfUnwindCodes: 3
+ SizeOfProlog : 0x00 + CountOfUnwindCodes: 0
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x06 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28 - CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)

-41 (-44.57%) : 56052.dasm - Microsoft.Diagnostics.Tracing.CLRRuntimeActivityComputer+IdOfIncompleteAction:Equals(System.Object):ubyte:this (FullOpts)

@@ -8,87 +8,62 @@ ; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 4, 3 ) byref -> rsi this single-def -; V01 arg1 [V01,T00] ( 6, 4.25) ref -> rbx class-hnd single-def <System.Object> -; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V00 this [V00,T01] ( 4, 3 ) byref -> rcx this single-def +; V01 arg1 [V01,T00] ( 5, 4 ) ref -> rdx class-hnd single-def <System.Object> +;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T02] ( 3, 4.50) ref -> rax class-hnd "spilling QMark2" <Microsoft.Diagnostics.Tracing.CLRRuntimeActivityComputer+IdOfIncompleteAction> ; V04 tmp2 [V04,T03] ( 3, 1.50) ubyte -> rax "Inline return value spill temp" ;* V05 tmp3 [V05 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <Microsoft.Diagnostics.Tracing.CLRRuntimeActivityComputer+IdOfIncompleteAction>
-; V06 tmp4 [V06,T06] ( 2, 1 ) long -> rax "field V05.Identifier (fldOffset=0x0)" P-INDEP -; V07 tmp5 [V07,T07] ( 2, 1 ) int -> rcx "field V05.ThreadID (fldOffset=0x8)" P-INDEP -; V08 cse0 [V08,T04] ( 4, 1.25) long -> rcx "CSE - moderate" -; V09 cse1 [V09,T05] ( 3, 1 ) long -> rdx "CSE - moderate"
+; V06 tmp4 [V06,T04] ( 2, 1 ) long -> rax "field V05.Identifier (fldOffset=0x0)" P-INDEP +; V07 tmp5 [V07,T05] ( 2, 1 ) int -> rdx "field V05.ThreadID (fldOffset=0x8)" P-INDEP
;
-; Lcl frame size = 40
+; Lcl frame size = 0
G_M52071_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rsi - push rbx - sub rsp, 40 - mov rsi, rcx - ; byrRegs +[rsi] - mov rbx, rdx - ; gcrRegs +[rbx] - ;; size=12 bbWeight=1 PerfScore 2.75 -G_M52071_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz - mov rax, rbx
+ ;; size=0 bbWeight=1 PerfScore 0.00 +G_M52071_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0002 {rcx}, byref, isz + ; gcrRegs +[rdx] + ; byrRegs +[rcx] + mov rax, rdx
; gcrRegs +[rax] test rax, rax je SHORT G_M52071_IG04 ;; size=8 bbWeight=1 PerfScore 1.50
-G_M52071_IG03: ; bbWeight=0.25, gcrefRegs=0009 {rax rbx}, byrefRegs=0040 {rsi}, byref, isz - mov rdx, qword ptr [rax] - mov rcx, 0xD1FFAB1E ; Microsoft.Diagnostics.Tracing.CLRRuntimeActivityComputer+IdOfIncompleteAction - cmp rdx, rcx
+G_M52071_IG03: ; bbWeight=0.25, gcrefRegs=0005 {rax rdx}, byrefRegs=0002 {rcx}, byref, isz + mov r8, 0xD1FFAB1E ; Microsoft.Diagnostics.Tracing.CLRRuntimeActivityComputer+IdOfIncompleteAction + cmp qword ptr [rax], r8
je SHORT G_M52071_IG06
- ;; size=18 bbWeight=0.25 PerfScore 0.88
+ ;; size=15 bbWeight=0.25 PerfScore 1.06
G_M52071_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax rbx] - ; byrRegs -[rsi]
+ ; gcrRegs -[rax rdx] + ; byrRegs -[rcx]
xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M52071_IG05: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 40 - pop rbx - pop rsi
ret
- ;; size=7 bbWeight=0.50 PerfScore 1.12 -G_M52071_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, gcvars, byref, isz - ; gcrRegs +[rbx] - ; byrRegs +[rsi] - cmp rdx, rcx - je SHORT G_M52071_IG08 - ;; size=5 bbWeight=0.50 PerfScore 0.62 -G_M52071_IG07: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref - mov rdx, rbx
+ ;; size=1 bbWeight=0.50 PerfScore 0.50 +G_M52071_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0004 {rdx}, byrefRegs=0002 {rcx}, gcvars, byref, isz
; gcrRegs +[rdx]
- call [CORINFO_HELP_UNBOX]
+ ; byrRegs +[rcx] + mov rax, qword ptr [rdx+0x08] + mov edx, dword ptr [rdx+0x10]
; gcrRegs -[rdx]
- ; gcr arg pop 0 - ;; size=9 bbWeight=0.25 PerfScore 0.81 -G_M52071_IG08: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz - mov rax, qword ptr [rbx+0x08] - mov ecx, dword ptr [rbx+0x10] - cmp qword ptr [rsi], rax - jne SHORT G_M52071_IG09
+ cmp qword ptr [rcx], rax + jne SHORT G_M52071_IG07
xor eax, eax
- cmp dword ptr [rsi+0x08], ecx
+ cmp dword ptr [rcx+0x08], edx
sete al
- jmp SHORT G_M52071_IG10
+ jmp SHORT G_M52071_IG08
;; size=22 bbWeight=0.50 PerfScore 7.12
-G_M52071_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[rbx] - ; byrRegs -[rsi]
+G_M52071_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; byrRegs -[rcx]
xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M52071_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - add rsp, 40 - pop rbx - pop rsi
+G_M52071_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ret
- ;; size=7 bbWeight=0.50 PerfScore 1.12
+ ;; size=1 bbWeight=0.50 PerfScore 0.50
-; Total bytes of code 92, prolog size 6, PerfScore 16.19, instruction count 34, allocated bytes for code 92 (MethodHash=cc1f3498) for method Microsoft.Diagnostics.Tracing.CLRRuntimeActivityComputer+IdOfIncompleteAction:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 51, prolog size 0, PerfScore 10.94, instruction count 18, allocated bytes for code 51 (MethodHash=cc1f3498) for method Microsoft.Diagnostics.Tracing.CLRRuntimeActivityComputer+IdOfIncompleteAction:Equals(System.Object):ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -96,11 +71,8 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x06 - CountOfUnwindCodes: 3
+ SizeOfProlog : 0x00 + CountOfUnwindCodes: 0
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x06 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28 - CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)

-40 (-31.75%) : 131410.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.TypeTable+KeyPair2[ubyte,System.Nullable1[int]]:Equals(System.Object):ubyte:this (FullOpts)

@@ -8,124 +8,99 @@ ; 1 inlinees with PGO data; 8 single block inlinees; 3 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 5, 3.50) byref -> rsi this single-def -; V01 arg1 [V01,T00] ( 7, 4.75) ref -> rbx class-hnd single-def <System.Object> -; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V00 this [V00,T01] ( 5, 3.50) byref -> rcx this single-def +; V01 arg1 [V01,T00] ( 6, 4.50) ref -> rdx class-hnd single-def <System.Object> +;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T02] ( 3, 4.50) ref -> rax class-hnd "spilling QMark2" <Microsoft.CSharp.RuntimeBinder.Semantics.TypeTable+KeyPair`2[ubyte,System.Nullable`1[int]]> ; V04 tmp2 [V04,T03] ( 3, 1.50) ubyte -> rax "Inline return value spill temp" ;* V05 tmp3 [V05 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] "Inlining Arg" <Microsoft.CSharp.RuntimeBinder.Semantics.TypeTable+KeyPair`2[ubyte,System.Nullable`1[int]]> ;* V06 tmp4 [V06 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V07 tmp5 [V07 ] ( 0, 0 ) ubyte -> zero-ref ld-addr-op "Inlining Arg" ;* V08 tmp6 [V08 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V09 tmp7 [V09,T05] ( 4, 1.00) ubyte -> rax "Inline return value spill temp"
+; V09 tmp7 [V09,T04] ( 4, 1.00) ubyte -> rax "Inline return value spill temp"
;* V10 tmp8 [V10 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[int]> ;* V11 tmp9 [V11 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[int]> ;* V12 tmp10 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V13 tmp11 [V13 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg" ;* V14 tmp12 [V14 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V15 tmp13 [V15,T08] ( 2, 1.00) ubyte -> rax "field V10.hasValue (fldOffset=0x0)" P-INDEP -; V16 tmp14 [V16,T10] ( 2, 0.51) int -> r8 "field V10.value (fldOffset=0x4)" P-INDEP
+; V15 tmp13 [V15,T06] ( 2, 1.00) ubyte -> rax "field V10.hasValue (fldOffset=0x0)" P-INDEP +; V16 tmp14 [V16,T08] ( 2, 0.51) int -> rcx "field V10.value (fldOffset=0x4)" P-INDEP
;* V17 tmp15 [V17 ] ( 0, 0 ) ubyte -> zero-ref "field V11.hasValue (fldOffset=0x0)" P-INDEP ;* V18 tmp16 [V18 ] ( 0, 0 ) int -> zero-ref "field V11.value (fldOffset=0x4)" P-INDEP
-; V19 tmp17 [V19,T09] ( 2, 1 ) ubyte -> rax "V05.[000..001)" -; V20 tmp18 [V20,T06] ( 3, 1.00) ubyte -> rcx "V05.[004..005)" -; V21 tmp19 [V21,T11] ( 2, 0.51) int -> rdx "V05.[008..012)" -; V22 cse0 [V22,T04] ( 4, 1.25) long -> rcx "CSE - moderate" -; V23 cse1 [V23,T07] ( 3, 1 ) long -> rdx "CSE - moderate"
+; V19 tmp17 [V19,T07] ( 2, 1 ) ubyte -> rax "V05.[000..001)" +; V20 tmp18 [V20,T05] ( 3, 1.00) ubyte -> r8 "V05.[004..005)" +; V21 tmp19 [V21,T09] ( 2, 0.51) int -> rdx "V05.[008..012)"
;
-; Lcl frame size = 40
+; Lcl frame size = 0
G_M40812_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rsi - push rbx - sub rsp, 40 - mov rsi, rcx - ; byrRegs +[rsi] - mov rbx, rdx - ; gcrRegs +[rbx] - ;; size=12 bbWeight=1 PerfScore 2.75 -G_M40812_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz - mov rax, rbx
+ ;; size=0 bbWeight=1 PerfScore 0.00 +G_M40812_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0002 {rcx}, byref, isz + ; gcrRegs +[rdx] + ; byrRegs +[rcx] + mov rax, rdx
; gcrRegs +[rax] test rax, rax je SHORT G_M40812_IG04 ;; size=8 bbWeight=1 PerfScore 1.50
-G_M40812_IG03: ; bbWeight=0.25, gcrefRegs=0009 {rax rbx}, byrefRegs=0040 {rsi}, byref, isz - mov rdx, qword ptr [rax] - mov rcx, 0xD1FFAB1E ; Microsoft.CSharp.RuntimeBinder.Semantics.TypeTable+KeyPair`2[ubyte,System.Nullable`1[int]] - cmp rdx, rcx
+G_M40812_IG03: ; bbWeight=0.25, gcrefRegs=0005 {rax rdx}, byrefRegs=0002 {rcx}, byref, isz + mov r8, 0xD1FFAB1E ; Microsoft.CSharp.RuntimeBinder.Semantics.TypeTable+KeyPair`2[ubyte,System.Nullable`1[int]] + cmp qword ptr [rax], r8
je SHORT G_M40812_IG06
- ;; size=18 bbWeight=0.25 PerfScore 0.88
+ ;; size=15 bbWeight=0.25 PerfScore 1.06
G_M40812_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax rbx] - ; byrRegs -[rsi]
+ ; gcrRegs -[rax rdx] + ; byrRegs -[rcx]
xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M40812_IG05: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 40 - pop rbx - pop rsi
ret
- ;; size=7 bbWeight=0.50 PerfScore 1.12 -G_M40812_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, gcvars, byref, isz - ; gcrRegs +[rbx] - ; byrRegs +[rsi] - cmp rdx, rcx - je SHORT G_M40812_IG08 - ;; size=5 bbWeight=0.50 PerfScore 0.62 -G_M40812_IG07: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref - mov rdx, rbx
+ ;; size=1 bbWeight=0.50 PerfScore 0.50 +G_M40812_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0004 {rdx}, byrefRegs=0002 {rcx}, gcvars, byref, isz
; gcrRegs +[rdx]
- call [CORINFO_HELP_UNBOX]
+ ; byrRegs +[rcx] + movzx rax, byte ptr [rdx+0x08] + movzx r8, byte ptr [rdx+0x0C] + mov edx, dword ptr [rdx+0x10]
; gcrRegs -[rdx]
- ; gcr arg pop 0 - ;; size=9 bbWeight=0.25 PerfScore 0.81 -G_M40812_IG08: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz - movzx rax, byte ptr [rbx+0x08] - movzx rcx, byte ptr [rbx+0x0C] - mov edx, dword ptr [rbx+0x10] - cmp byte ptr [rsi], al - jne SHORT G_M40812_IG13 - ;; size=15 bbWeight=0.50 PerfScore 5.00 -G_M40812_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz - ; gcrRegs -[rbx] - movzx rax, byte ptr [rsi+0x04] - mov r8d, dword ptr [rsi+0x08]
+ cmp byte ptr [rcx], al + jne SHORT G_M40812_IG11 + ;; size=16 bbWeight=0.50 PerfScore 5.00 +G_M40812_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz + movzx rax, byte ptr [rcx+0x04] + mov ecx, dword ptr [rcx+0x08] + ; byrRegs -[rcx]
test eax, eax
- jne SHORT G_M40812_IG12 - ;; size=12 bbWeight=0.50 PerfScore 2.63 -G_M40812_IG10: ; bbWeight=0.49, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ; byrRegs -[rsi] - test ecx, ecx - jne SHORT G_M40812_IG15
+ jne SHORT G_M40812_IG10 + ;; size=11 bbWeight=0.50 PerfScore 2.63 +G_M40812_IG08: ; bbWeight=0.49, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + test r8d, r8d + jne SHORT G_M40812_IG13
mov eax, 1
- ;; size=9 bbWeight=0.49 PerfScore 0.73 -G_M40812_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - jmp SHORT G_M40812_IG14
+ ;; size=10 bbWeight=0.49 PerfScore 0.73 +G_M40812_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + jmp SHORT G_M40812_IG12
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M40812_IG12: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - test ecx, ecx - je SHORT G_M40812_IG15
+G_M40812_IG10: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + test r8d, r8d + je SHORT G_M40812_IG13
xor eax, eax
- cmp r8d, edx
+ cmp ecx, edx
sete al
- jmp SHORT G_M40812_IG11
+ jmp SHORT G_M40812_IG09
;; size=14 bbWeight=0.01 PerfScore 0.05
-G_M40812_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M40812_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M40812_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - add rsp, 40 - pop rbx - pop rsi
+G_M40812_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ret
- ;; size=7 bbWeight=0.50 PerfScore 1.12 -G_M40812_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=1 bbWeight=0.50 PerfScore 0.50 +G_M40812_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
xor eax, eax
- jmp SHORT G_M40812_IG11
+ jmp SHORT G_M40812_IG09
;; size=4 bbWeight=0 PerfScore 0.00
-; Total bytes of code 126, prolog size 6, PerfScore 18.47, instruction count 47, allocated bytes for code 126 (MethodHash=11ff6093) for method Microsoft.CSharp.RuntimeBinder.Semantics.TypeTable+KeyPair`2[ubyte,System.Nullable`1[int]]:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 86, prolog size 0, PerfScore 13.22, instruction count 31, allocated bytes for code 86 (MethodHash=11ff6093) for method Microsoft.CSharp.RuntimeBinder.Semantics.TypeTable+KeyPair`2[ubyte,System.Nullable`1[int]]:Equals(System.Object):ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -133,11 +108,8 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x06 - CountOfUnwindCodes: 3
+ SizeOfProlog : 0x00 + CountOfUnwindCodes: 0
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x06 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28 - CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)

+3 (+8.82%) : 227917.dasm - System.Security.Cryptography.SHA384CryptoServiceProvider:Dispose(ubyte):this (FullOpts)

@@ -8,9 +8,10 @@ ; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 4, 4 ) ref -> rbx this class-hnd single-def <System.Security.Cryptography.SHA384CryptoServiceProvider>
+; V00 this [V00,T00] ( 4, 3 ) ref -> rbx this class-hnd single-def <System.Security.Cryptography.SHA384CryptoServiceProvider>
; V01 arg1 [V01,T01] ( 3, 3 ) ubyte -> rdx single-def ; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V03 cse0 [V03,T02] ( 2, 2 ) int -> rcx "CSE - aggressive"
; ; Lcl frame size = 32 @@ -21,8 +22,11 @@ G_M59236_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[rbx] ;; size=8 bbWeight=1 PerfScore 1.50 G_M59236_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- test dl, dl - je SHORT G_M59236_IG03
+ movzx rcx, dl + test ecx, ecx + je SHORT G_M59236_IG04 + ;; size=7 bbWeight=1 PerfScore 1.50 +G_M59236_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rcx, gword ptr [rbx+0x20] ; gcrRegs +[rcx] cmp dword ptr [rcx], ecx @@ -30,15 +34,15 @@ G_M59236_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcrRegs -[rcx] ; gcr arg pop 0 mov byte ptr [rbx+0x18], 1
- ;; size=20 bbWeight=1 PerfScore 10.25 -G_M59236_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=16 bbWeight=0.50 PerfScore 4.50 +G_M59236_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rbx] add rsp, 32 pop rbx ret ;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 34, prolog size 5, PerfScore 13.50, instruction count 12, allocated bytes for code 34 (MethodHash=ebc3189b) for method System.Security.Cryptography.SHA384CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
+; Total bytes of code 37, prolog size 5, PerfScore 9.25, instruction count 13, allocated bytes for code 37 (MethodHash=ebc3189b) for method System.Security.Cryptography.SHA384CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
; ============================================================ Unwind Info:

+3 (+8.82%) : 227949.dasm - System.Security.Cryptography.SHA512CryptoServiceProvider:Dispose(ubyte):this (FullOpts)

@@ -8,9 +8,10 @@ ; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 4, 4 ) ref -> rbx this class-hnd single-def <System.Security.Cryptography.SHA512CryptoServiceProvider>
+; V00 this [V00,T00] ( 4, 3 ) ref -> rbx this class-hnd single-def <System.Security.Cryptography.SHA512CryptoServiceProvider>
; V01 arg1 [V01,T01] ( 3, 3 ) ubyte -> rdx single-def ; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V03 cse0 [V03,T02] ( 2, 2 ) int -> rcx "CSE - aggressive"
; ; Lcl frame size = 32 @@ -21,8 +22,11 @@ G_M31021_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[rbx] ;; size=8 bbWeight=1 PerfScore 1.50 G_M31021_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- test dl, dl - je SHORT G_M31021_IG03
+ movzx rcx, dl + test ecx, ecx + je SHORT G_M31021_IG04 + ;; size=7 bbWeight=1 PerfScore 1.50 +G_M31021_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rcx, gword ptr [rbx+0x20] ; gcrRegs +[rcx] cmp dword ptr [rcx], ecx @@ -30,15 +34,15 @@ G_M31021_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcrRegs -[rcx] ; gcr arg pop 0 mov byte ptr [rbx+0x18], 1
- ;; size=20 bbWeight=1 PerfScore 10.25 -G_M31021_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=16 bbWeight=0.50 PerfScore 4.50 +G_M31021_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rbx] add rsp, 32 pop rbx ret ;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 34, prolog size 5, PerfScore 13.50, instruction count 12, allocated bytes for code 34 (MethodHash=150886d2) for method System.Security.Cryptography.SHA512CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
+; Total bytes of code 37, prolog size 5, PerfScore 9.25, instruction count 13, allocated bytes for code 37 (MethodHash=150886d2) for method System.Security.Cryptography.SHA512CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
; ============================================================ Unwind Info:

+3 (+10.34%) : 271832.dasm - System.Diagnostics.Eventing.Reader.EventLogWatcher:set_Enabled(ubyte):this (FullOpts)

@@ -10,6 +10,7 @@ ; V00 this [V00,T00] ( 6, 4 ) ref -> rcx this class-hnd single-def <System.Diagnostics.Eventing.Reader.EventLogWatcher> ; V01 arg1 [V01,T01] ( 3, 3 ) ubyte -> rdx single-def ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V03 cse0 [V03,T02] ( 2, 2 ) int -> rax "CSE - aggressive"
; ; Lcl frame size = 0 @@ -17,9 +18,10 @@ G_M53716_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 { ;; size=0 bbWeight=1 PerfScore 0.00 G_M53716_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[rcx]
- test dl, dl
+ movzx rax, dl + test eax, eax
je SHORT G_M53716_IG05
- ;; size=4 bbWeight=1 PerfScore 1.25
+ ;; size=7 bbWeight=1 PerfScore 1.50
G_M53716_IG03: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz cmp byte ptr [rcx+0x61], 0 jne SHORT G_M53716_IG07 @@ -41,7 +43,7 @@ G_M53716_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr ret ;; size=1 bbWeight=0.50 PerfScore 0.50
-; Total bytes of code 29, prolog size 0, PerfScore 7.75, instruction count 9, allocated bytes for code 29 (MethodHash=3a712e2b) for method System.Diagnostics.Eventing.Reader.EventLogWatcher:set_Enabled(ubyte):this (FullOpts)
+; Total bytes of code 32, prolog size 0, PerfScore 8.00, instruction count 10, allocated bytes for code 32 (MethodHash=3a712e2b) for method System.Diagnostics.Eventing.Reader.EventLogWatcher:set_Enabled(ubyte):this (FullOpts)
; ============================================================ Unwind Info:

libraries_tests.run.windows.x64.Release.mch

-41 (-51.90%) : 678899.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)

@@ -9,74 +9,51 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 3 ) byref -> rcx this single-def
-; V01 arg1 [V01,T00] ( 5, 4.50) ref -> rbx class-hnd single-def <System.Object> -; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V01 arg1 [V01,T00] ( 4, 4 ) ref -> rdx class-hnd single-def <System.Object> +;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> rax class-hnd "spilling QMark2" <System.Int32>
-; V04 tmp2 [V04,T03] ( 2, 4 ) int -> rsi "impAppendStmt" -; V05 cse0 [V05,T04] ( 4, 2.50) long -> r8 "CSE - aggressive" -; V06 cse1 [V06,T05] ( 3, 2 ) long -> rdx "CSE - aggressive"
+; V04 tmp2 [V04,T03] ( 2, 4 ) int -> rax "impAppendStmt" +; V05 cse0 [V05,T04] ( 2, 1 ) long -> r8 "CSE - moderate"
;
-; Lcl frame size = 40
+; Lcl frame size = 0
G_M40448_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rsi - push rbx - sub rsp, 40 - mov rbx, rdx - ; gcrRegs +[rbx] - ;; size=9 bbWeight=1 PerfScore 2.50 -G_M40448_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0002 {rcx}, byref, isz
+ ;; size=0 bbWeight=1 PerfScore 0.00 +G_M40448_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0002 {rcx}, byref, isz + ; gcrRegs +[rdx]
; byrRegs +[rcx]
- mov rax, rbx
+ mov rax, rdx
; gcrRegs +[rax] test rax, rax
- je SHORT G_M40448_IG08
+ jne SHORT G_M40448_IG05
;; size=8 bbWeight=1 PerfScore 1.50
-G_M40448_IG03: ; bbWeight=0.50, gcrefRegs=0009 {rax rbx}, byrefRegs=0002 {rcx}, byref, isz - mov rdx, qword ptr [rax] - mov r8, 0xD1FFAB1E ; System.Int32 - cmp rdx, r8 - jne SHORT G_M40448_IG08 - ;; size=18 bbWeight=0.50 PerfScore 1.75 -G_M40448_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0002 {rcx}, byref, isz - ; gcrRegs -[rax] - mov esi, dword ptr [rcx] - cmp rdx, r8 - jne SHORT G_M40448_IG07 - ;; size=7 bbWeight=1 PerfScore 3.25 -G_M40448_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M40448_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[rax rdx]
; byrRegs -[rcx] xor eax, eax
- cmp esi, dword ptr [rbx+0x08]
+ ;; size=2 bbWeight=1 PerfScore 0.25 +G_M40448_IG04: ; bbWeight=1, epilog, nogc, extend + ret + ;; size=1 bbWeight=1 PerfScore 1.00 +G_M40448_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0005 {rax rdx}, byrefRegs=0002 {rcx}, gcvars, byref, isz + ; gcrRegs +[rax rdx] + ; byrRegs +[rcx] + mov r8, 0xD1FFAB1E ; System.Int32 + cmp qword ptr [rax], r8 + jne SHORT G_M40448_IG03 + ;; size=15 bbWeight=0.50 PerfScore 2.12 +G_M40448_IG06: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0002 {rcx}, byref + ; gcrRegs -[rax] + mov eax, dword ptr [rcx] + cmp eax, dword ptr [rdx+0x08]
sete al
- ;; size=8 bbWeight=1 PerfScore 4.25 -G_M40448_IG06: ; bbWeight=1, epilog, nogc, extend - add rsp, 40 - pop rbx - pop rsi
+ movzx rax, al + ;; size=11 bbWeight=1 PerfScore 6.25 +G_M40448_IG07: ; bbWeight=1, epilog, nogc, extend
ret
- ;; size=7 bbWeight=1 PerfScore 2.25 -G_M40448_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz - mov rdx, rbx - ; gcrRegs +[rdx] - mov rcx, r8 - call CORINFO_HELP_UNBOX - ; gcrRegs -[rdx] - ; gcr arg pop 0 - jmp SHORT G_M40448_IG05 - ;; size=13 bbWeight=0.50 PerfScore 1.75 -G_M40448_IG08: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[rbx] - xor eax, eax - ;; size=2 bbWeight=0.25 PerfScore 0.06 -G_M40448_IG09: ; bbWeight=0.25, epilog, nogc, extend - add rsp, 40 - pop rbx - pop rsi - ret - ;; size=7 bbWeight=0.25 PerfScore 0.56
+ ;; size=1 bbWeight=1 PerfScore 1.00
-; Total bytes of code 79, prolog size 6, PerfScore 17.88, instruction count 30, allocated bytes for code 79 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 38, prolog size 0, PerfScore 12.12, instruction count 13, allocated bytes for code 38 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -84,11 +61,8 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x06 - CountOfUnwindCodes: 3
+ SizeOfProlog : 0x00 + CountOfUnwindCodes: 0
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x06 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28 - CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)

-39 (-50.65%) : 356565.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)

@@ -9,73 +9,50 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 3 ) byref -> rcx this single-def
-; V01 arg1 [V01,T00] ( 5, 4.50) ref -> rbx class-hnd single-def <System.Object> -; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" -; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> rdx class-hnd "spilling QMark2" <System.Int32> -; V04 tmp2 [V04,T03] ( 2, 4 ) int -> rsi "impAppendStmt" -; V05 cse0 [V05,T04] ( 4, 2.50) long -> rax "CSE - aggressive" -; V06 cse1 [V06,T05] ( 3, 2 ) long -> rdx "CSE - aggressive"
+; V01 arg1 [V01,T00] ( 4, 4 ) ref -> rdx class-hnd single-def <System.Object> +;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" +; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> rax class-hnd "spilling QMark2" <System.Int32> +; V04 tmp2 [V04,T03] ( 2, 4 ) int -> rax "impAppendStmt" +; V05 cse0 [V05,T04] ( 2, 1 ) long -> r8 "CSE - moderate"
;
-; Lcl frame size = 40
+; Lcl frame size = 0
G_M40448_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- push rsi - push rbx - sub rsp, 40 - mov rbx, rdx - ; gcrRegs +[rbx] - ;; size=9 bbWeight=1 PerfScore 2.50 -G_M40448_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0002 {rcx}, byref, isz
+ ;; size=0 bbWeight=1 PerfScore 0.00 +G_M40448_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0002 {rcx}, byref, isz + ; gcrRegs +[rdx]
; byrRegs +[rcx]
- mov rdx, rbx - ; gcrRegs +[rdx] - test rdx, rdx - je SHORT G_M40448_IG08
+ mov rax, rdx + ; gcrRegs +[rax] + test rax, rax + je SHORT G_M40448_IG04
;; size=8 bbWeight=1 PerfScore 1.50
-G_M40448_IG03: ; bbWeight=0.50, gcrefRegs=000C {rdx rbx}, byrefRegs=0002 {rcx}, byref, isz - mov rdx, qword ptr [rdx] - ; gcrRegs -[rdx] - mov rax, 0xD1FFAB1E ; System.Int32 - cmp rdx, rax - jne SHORT G_M40448_IG08 - ;; size=18 bbWeight=0.50 PerfScore 1.75 -G_M40448_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0002 {rcx}, byref, isz - mov esi, dword ptr [rcx] - cmp rdx, rax
+G_M40448_IG03: ; bbWeight=0.50, gcrefRegs=0005 {rax rdx}, byrefRegs=0002 {rcx}, byref, isz + mov r8, 0xD1FFAB1E ; System.Int32 + cmp qword ptr [rax], r8
je SHORT G_M40448_IG06
- ;; size=7 bbWeight=1 PerfScore 3.25 -G_M40448_IG05: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ;; size=15 bbWeight=0.50 PerfScore 2.12 +G_M40448_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[rax rdx]
; byrRegs -[rcx]
- mov rdx, rbx
+ xor eax, eax + ;; size=2 bbWeight=1 PerfScore 0.25 +G_M40448_IG05: ; bbWeight=1, epilog, nogc, extend + ret + ;; size=1 bbWeight=1 PerfScore 1.00 +G_M40448_IG06: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0004 {rdx}, byrefRegs=0002 {rcx}, gcvars, byref
; gcrRegs +[rdx]
- mov rcx, rax - call CORINFO_HELP_UNBOX - ; gcrRegs -[rdx] - ; gcr arg pop 0 - ;; size=11 bbWeight=0.50 PerfScore 0.75 -G_M40448_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - xor eax, eax - cmp esi, dword ptr [rbx+0x08]
+ ; byrRegs +[rcx] + mov eax, dword ptr [rcx] + cmp eax, dword ptr [rdx+0x08]
sete al
- ;; size=8 bbWeight=1 PerfScore 4.25
+ movzx rax, al + ;; size=11 bbWeight=1 PerfScore 6.25
G_M40448_IG07: ; bbWeight=1, epilog, nogc, extend
- add rsp, 40 - pop rbx - pop rsi
ret
- ;; size=7 bbWeight=1 PerfScore 2.25 -G_M40448_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[rbx] - xor eax, eax - ;; size=2 bbWeight=0 PerfScore 0.00 -G_M40448_IG09: ; bbWeight=0, epilog, nogc, extend - add rsp, 40 - pop rbx - pop rsi - ret - ;; size=7 bbWeight=0 PerfScore 0.00
+ ;; size=1 bbWeight=1 PerfScore 1.00
-; Total bytes of code 77, prolog size 6, PerfScore 16.25, instruction count 29, allocated bytes for code 77 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 38, prolog size 0, PerfScore 12.12, instruction count 13, allocated bytes for code 38 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -83,11 +60,8 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x06 - CountOfUnwindCodes: 3
+ SizeOfProlog : 0x00 + CountOfUnwindCodes: 0
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x06 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28 - CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)

-39 (-50.65%) : 594213.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)

@@ -9,75 +9,50 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 3.00) byref -> rcx this single-def
-; V01 arg1 [V01,T00] ( 5, 4.50) ref -> rbx class-hnd single-def <System.Object> -; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V01 arg1 [V01,T00] ( 4, 4.00) ref -> rdx class-hnd single-def <System.Object> +;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> rax class-hnd "spilling QMark2" <System.Int32>
-; V04 tmp2 [V04,T03] ( 2, 3.99) int -> rsi "impAppendStmt" -; V05 cse0 [V05,T04] ( 4, 2.50) long -> r8 "CSE - aggressive" -; V06 cse1 [V06,T05] ( 3, 2.00) long -> rdx "CSE - moderate"
+; V04 tmp2 [V04,T03] ( 2, 3.99) int -> rax "impAppendStmt" +; V05 cse0 [V05,T04] ( 2, 1 ) long -> r8 "CSE - moderate"
;
-; Lcl frame size = 40
+; Lcl frame size = 0
-G_M40448_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG - push rsi - push rbx - sub rsp, 40 - mov rbx, rdx - ; gcrRegs +[rbx] - ;; size=9 bbWeight=1 PerfScore 2.50 -G_M40448_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0002 {rcx}, byref, isz
+G_M40448_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG + ;; size=0 bbWeight=1 PerfScore 0.00 +G_M40448_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0002 {rcx}, byref, isz + ; gcrRegs +[rdx]
; byrRegs +[rcx]
- mov rax, rbx
+ mov rax, rdx
; gcrRegs +[rax] test rax, rax je SHORT G_M40448_IG04 ;; size=8 bbWeight=1 PerfScore 1.50
-G_M40448_IG03: ; bbWeight=0.50, gcrefRegs=0009 {rax rbx}, byrefRegs=0002 {rcx}, byref, isz - mov rdx, qword ptr [rax]
+G_M40448_IG03: ; bbWeight=0.50, gcrefRegs=0005 {rax rdx}, byrefRegs=0002 {rcx}, byref, isz
mov r8, 0xD1FFAB1E ; System.Int32
- cmp rdx, r8
+ cmp qword ptr [rax], r8
je SHORT G_M40448_IG06
- ;; size=18 bbWeight=0.50 PerfScore 1.75 -G_M40448_IG04: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax rbx]
+ ;; size=15 bbWeight=0.50 PerfScore 2.12 +G_M40448_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[rax rdx]
; byrRegs -[rcx] xor eax, eax
- ;; size=2 bbWeight=0.25 PerfScore 0.06 -G_M40448_IG05: ; bbWeight=0.25, epilog, nogc, extend - add rsp, 40 - pop rbx - pop rsi
+ ;; size=2 bbWeight=1 PerfScore 0.25 +G_M40448_IG05: ; bbWeight=1, epilog, nogc, extend
ret
- ;; size=7 bbWeight=0.25 PerfScore 0.56 -G_M40448_IG06: ; bbWeight=1.00, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0002 {rcx}, gcvars, byref, isz - ; gcrRegs +[rbx] - ; byrRegs +[rcx] - mov esi, dword ptr [rcx] - cmp rdx, r8 - je SHORT G_M40448_IG08 - ;; size=7 bbWeight=1.00 PerfScore 3.24 -G_M40448_IG07: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - ; byrRegs -[rcx] - mov rdx, rbx
+ ;; size=1 bbWeight=1 PerfScore 1.00 +G_M40448_IG06: ; bbWeight=1.00, gcVars=0000000000000000 {}, gcrefRegs=0004 {rdx}, byrefRegs=0002 {rcx}, gcvars, byref
; gcrRegs +[rdx]
- mov rcx, r8 - call CORINFO_HELP_UNBOX - ; gcrRegs -[rdx] - ; gcr arg pop 0 - ;; size=11 bbWeight=0.50 PerfScore 0.75 -G_M40448_IG08: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - xor eax, eax - cmp esi, dword ptr [rbx+0x08]
+ ; byrRegs +[rcx] + mov eax, dword ptr [rcx] + cmp eax, dword ptr [rdx+0x08]
sete al
- ;; size=8 bbWeight=1.00 PerfScore 4.24 -G_M40448_IG09: ; bbWeight=1.00, epilog, nogc, extend - add rsp, 40 - pop rbx - pop rsi
+ movzx rax, al + ;; size=11 bbWeight=1.00 PerfScore 6.24 +G_M40448_IG07: ; bbWeight=1.00, epilog, nogc, extend
ret
- ;; size=7 bbWeight=1.00 PerfScore 2.24
+ ;; size=1 bbWeight=1.00 PerfScore 1.00
-; Total bytes of code 77, prolog size 6, PerfScore 16.85, instruction count 29, allocated bytes for code 77 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 38, prolog size 0, PerfScore 12.11, instruction count 13, allocated bytes for code 38 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -85,11 +60,8 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x06 - CountOfUnwindCodes: 3
+ SizeOfProlog : 0x00 + CountOfUnwindCodes: 0
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x06 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28 - CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)

+10 (+7.46%) : 257724.dasm - System.Diagnostics.Activity:set_Current(System.Diagnostics.Activity) (Tier1)

@@ -5,37 +5,80 @@ ; optimized using Dynamic PGO ; rsp based frame ; fully interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 3
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 3
; 1 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 6, 4 ) ref -> rbx class-hnd single-def <System.Diagnostics.Activity> ; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T03] ( 4, 2 ) int -> rax -; V03 tmp2 [V03,T04] ( 2, 2 ) ubyte -> rcx "Inline stloc first use temp" -; V04 tmp3 [V04,T01] ( 3, 6 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V05 tmp4 [V05,T02] ( 2, 4 ) ref -> rdx single-def "argument with side effect"
+; V02 tmp1 [V02,T01] ( 5, 2 ) int -> rax +; V03 tmp2 [V03,T02] ( 4, 2 ) ubyte -> rsi "Inline stloc first use temp" +; V04 tmp3 [V04,T03] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V05 tmp4 [V05,T04] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
;
-; Lcl frame size = 32
+; Lcl frame size = 40
G_M63445_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+ push rsi
push rbx
- sub rsp, 32
+ sub rsp, 40
mov rbx, rcx ; gcrRegs +[rbx]
- ;; size=8 bbWeight=1 PerfScore 1.50
+ ;; size=9 bbWeight=1 PerfScore 2.50
G_M63445_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz test rbx, rbx jne SHORT G_M63445_IG07 mov eax, 1 ;; size=10 bbWeight=1 PerfScore 1.50 G_M63445_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- movzx rcx, al - test ecx, ecx
+ movzx rsi, al + test esi, esi + je SHORT G_M63445_IG09 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M63445_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref + mov rcx, rbx + ; gcrRegs +[rcx] + ;; size=3 bbWeight=1 PerfScore 0.25 +G_M63445_IG05: ; bbWeight=1, epilog, nogc, extend + add rsp, 40 + pop rbx + pop rsi + tail.jmp [System.Diagnostics.Activity:SetCurrent(System.Diagnostics.Activity)] + ; gcr arg pop 0 + ;; size=12 bbWeight=1 PerfScore 3.25 +G_M63445_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + ; gcrRegs -[rcx rbx] + add rsp, 40 + pop rbx + pop rsi + ret + ;; size=7 bbWeight=0 PerfScore 0.00 +G_M63445_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs +[rbx] + mov rcx, rbx + ; gcrRegs +[rcx] + call [System.Diagnostics.Activity:get_Id():System.String:this] + ; gcrRegs -[rcx] +[rax] + ; gcr arg pop 0 + test rax, rax + je SHORT G_M63445_IG08 + xor eax, eax + ; gcrRegs -[rax] + test byte ptr [rbx+0xA4], 128 + sete al + jmp SHORT G_M63445_IG03 + ;; size=28 bbWeight=0 PerfScore 0.00 +G_M63445_IG08: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz + xor eax, eax + movzx rsi, al + test esi, esi
jne SHORT G_M63445_IG04
+ ;; size=10 bbWeight=0 PerfScore 0.00 +G_M63445_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rbx]
mov rcx, 0xD1FFAB1E ; <unknown class> call CORINFO_HELP_NEWSFAST
- ; gcrRegs -[rbx] +[rax]
+ ; gcrRegs +[rax]
; gcr arg pop 0 mov rbx, rax ; gcrRegs +[rbx] @@ -57,45 +100,9 @@ G_M63445_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcrRegs -[rcx rbx] ; gcr arg pop 0 jmp SHORT G_M63445_IG06
- ;; size=64 bbWeight=1 PerfScore 15.00 -G_M63445_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - ; gcrRegs +[rbx] - mov rcx, rbx - ; gcrRegs +[rcx] - ;; size=3 bbWeight=1 PerfScore 0.25 -G_M63445_IG05: ; bbWeight=1, epilog, nogc, extend - add rsp, 32 - pop rbx - tail.jmp [System.Diagnostics.Activity:SetCurrent(System.Diagnostics.Activity)] - ; gcr arg pop 0 - ;; size=11 bbWeight=1 PerfScore 2.75 -G_M63445_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[rcx rbx] - add rsp, 32 - pop rbx - ret - ;; size=6 bbWeight=0 PerfScore 0.00 -G_M63445_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[rbx] - mov rcx, rbx - ; gcrRegs +[rcx] - call [System.Diagnostics.Activity:get_Id():System.String:this] - ; gcrRegs -[rcx] +[rax] - ; gcr arg pop 0 - test rax, rax - je SHORT G_M63445_IG08 - xor eax, eax - ; gcrRegs -[rax] - test byte ptr [rbx+0xA4], 128 - sete al - jmp SHORT G_M63445_IG03 - ;; size=28 bbWeight=0 PerfScore 0.00 -G_M63445_IG08: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - xor eax, eax - jmp SHORT G_M63445_IG03 - ;; size=4 bbWeight=0 PerfScore 0.00
+ ;; size=57 bbWeight=0 PerfScore 0.00
-; Total bytes of code 134, prolog size 8, PerfScore 21.00, instruction count 37, allocated bytes for code 134 (MethodHash=ccea082a) for method System.Diagnostics.Activity:set_Current(System.Diagnostics.Activity) (Tier1)
+; Total bytes of code 144, prolog size 9, PerfScore 9.00, instruction count 42, allocated bytes for code 144 (MethodHash=ccea082a) for method System.Diagnostics.Activity:set_Current(System.Diagnostics.Activity) (Tier1)
; ============================================================ Unwind Info: @@ -103,10 +110,11 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x05 - CountOfUnwindCodes: 2
+ SizeOfProlog : 0x06 + CountOfUnwindCodes: 3
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20 - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x06 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28 + CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) + CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)

+40 (+7.48%) : 356645.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)

@@ -10,33 +10,33 @@ ; Final local variable assignments ; ; V00 this [V00,T00] ( 18, 9.31) ref -> [rbp+0x10] this class-hnd EH-live single-def <System.Buffers.SharedArrayPoolPartitions+Partition>
-; V01 arg1 [V01,T03] ( 4, 2.53) int -> rsi single-def -; V02 arg2 [V02,T04] ( 3, 2 ) int -> rdi single-def -; V03 arg3 [V03,T02] ( 5, 3.59) int -> rbx single-def
+; V01 arg1 [V01,T04] ( 4, 2.53) int -> rsi single-def +; V02 arg2 [V02,T05] ( 3, 2 ) int -> rdi single-def +; V03 arg3 [V03,T03] ( 5, 3.59) int -> rbx single-def
; V04 arg4 [V04,T21] ( 1, 0 ) int -> [rbp+0x30] single-def ;* V05 loc0 [V05 ] ( 0, 0 ) int -> zero-ref ; V06 loc1 [V06,T11] ( 4, 2 ) int -> r14 ;* V07 loc2 [V07,T20] ( 0, 0 ) ref -> zero-ref class-hnd exact EH-live single-def <System.Buffers.SharedArrayPoolPartitions+Partition> ; V08 loc3 [V08 ] ( 6, 2.66) ubyte -> [rbp-0x38] do-not-enreg[X] addr-exposed ld-addr-op ; V09 loc4 [V09,T14] ( 3, 1.06) ref -> rsi class-hnd exact single-def <System.Buffers.ArrayPoolEventSource>
-; V10 loc5 [V10,T09] ( 11, 2.53) int -> registers
+; V10 loc5 [V10,T02] ( 11, 5.66) int -> registers
; V11 loc6 [V11,T13] ( 5, 1.06) ref -> rbx class-hnd <System.Array> ; V12 loc7 [V12,T10] ( 4, 2.12) int -> rbx ; V13 OutArgs [V13 ] ( 1, 1 ) struct (40) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V14 tmp1 [V14,T16] ( 2, 1.06) int -> r14 ;* V15 tmp2 [V15 ] ( 0, 0 ) ref -> zero-ref single-def ;* V16 tmp3 [V16 ] ( 0, 0 ) ref -> zero-ref
-; V17 tmp4 [V17,T15] ( 3, 1.06) int -> rax
+; V17 tmp4 [V17,T15] ( 3, 1.06) int -> rsi
; V18 tmp5 [V18,T01] ( 3, 6 ) int -> r15 "impSpillLclRefs"
-; V19 tmp6 [V19,T06] ( 3, 3.19) ref -> rdx class-hnd "impSpillLclRefs" <<unknown class>>
+; V19 tmp6 [V19,T07] ( 3, 3.19) ref -> rdx class-hnd "impSpillLclRefs" <<unknown class>>
; V20 tmp7 [V20,T18] ( 2, 0 ) int -> r8 "impAppendStmt" ;* V21 tmp8 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V22 tmp9 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V23 tmp10 [V23,T19] ( 2, 0 ) int -> r9 "Inlining Arg"
-; V24 tmp11 [V24,T07] ( 3, 3.19) ref -> rax "arr expr" -; V25 tmp12 [V25,T08] ( 3, 3.19) int -> rdx "index expr"
+; V24 tmp11 [V24,T08] ( 3, 3.19) ref -> rax "arr expr" +; V25 tmp12 [V25,T09] ( 3, 3.19) int -> rdx "index expr"
; V26 PSPSym [V26,T17] ( 1, 1 ) long -> [rbp-0x48] do-not-enreg[V] "PSPSym"
-; V27 cse0 [V27,T05] ( 4, 3.19) int -> rbx "CSE - aggressive"
+; V27 cse0 [V27,T06] ( 4, 3.19) int -> rbx "CSE - aggressive"
; V28 cse1 [V28,T12] ( 3, 1.59) int -> rdx "CSE - moderate" ; ; Lcl frame size = 64 @@ -111,126 +111,37 @@ G_M62513_IG05: ; bbWeight=0.53, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, ; gcrRegs +[rsi] mov r15d, 1 cmp ebx, 1
- je SHORT G_M62513_IG14
+ je G_M62513_IG16
cmp ebx, 2 je SHORT G_M62513_IG11
- ;; size=94 bbWeight=0.53 PerfScore 12.35 -G_M62513_IG06: ; bbWeight=1.06, gcrefRegs=0042 {rcx rsi}, byrefRegs=0000 {}, byref, isz
+ ;; size=98 bbWeight=0.53 PerfScore 12.35 +G_M62513_IG06: ; bbWeight=1.06, gcrefRegs=0042 {rcx rsi}, byrefRegs=0000 {}, byref
mov ebx, dword ptr [rcx+0x14] test ebx, ebx
- jle SHORT G_M62513_IG08 - ;; size=7 bbWeight=1.06 PerfScore 3.45 -G_M62513_IG07: ; bbWeight=1, gcrefRegs=0042 {rcx rsi}, byrefRegs=0000 {}, byref, isz
+ jle G_M62513_IG20 + ;; size=11 bbWeight=1.06 PerfScore 3.45 +G_M62513_IG07: ; bbWeight=1, gcrefRegs=0042 {rcx rsi}, byrefRegs=0000 {}, byref
lea edx, [r15-0x01] mov r13d, edx test r15d, r15d
- jg SHORT G_M62513_IG16 - ;; size=12 bbWeight=1 PerfScore 2.00 -G_M62513_IG08: ; bbWeight=0.53, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ jg G_M62513_IG17 + ;; size=16 bbWeight=1 PerfScore 2.00 +G_M62513_IG08: ; bbWeight=0.47, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
; gcrRegs -[rsi]
- test ebx, ebx - jle SHORT G_M62513_IG15 - ;; size=4 bbWeight=0.53 PerfScore 0.66 -G_M62513_IG09: ; bbWeight=0.47, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref - mov eax, r14d - sar eax, 31 - and eax, 3 - add eax, r14d - sar eax, 2 - add eax, dword ptr [rcx+0x18] - ;; size=18 bbWeight=0.47 PerfScore 2.23 -G_M62513_IG10: ; bbWeight=0.53, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref - mov dword ptr [rcx+0x18], eax - jmp G_M62513_IG22 - ;; size=8 bbWeight=0.53 PerfScore 1.59 -G_M62513_IG11: ; bbWeight=0, gcrefRegs=0042 {rcx rsi}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[rsi] - mov r13d, 32 - mov eax, 33 - cmp dword ptr [rbp+0x30], 0x4000 - cmovg r13d, eax - cmp dword ptr [rcx+0x10], 16 - mov r15d, r13d - jle SHORT G_M62513_IG06 - inc r15d - cmp dword ptr [rcx+0x10], 32
+ mov esi, r14d + sar esi, 31 + and esi, 3 + add esi, r14d + sar esi, 2 + add esi, dword ptr [rcx+0x18]
mov rcx, gword ptr [rbp+0x10]
- jle SHORT G_M62513_IG06 - inc r15d - jmp SHORT G_M62513_IG06 - ;; size=49 bbWeight=0 PerfScore 0.00 -G_M62513_IG12: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref - ; gcrRegs -[rsi]
+ ;; size=22 bbWeight=0.47 PerfScore 2.70 +G_M62513_IG09: ; bbWeight=0.53, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
mov dword ptr [rcx+0x18], esi jmp G_M62513_IG22
- ;; size=8 bbWeight=0 PerfScore 0.00 -G_M62513_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[rcx] - call [System.Threading.Monitor:ThrowLockTakenException()] - ; gcr arg pop 0 - int3 - ;; size=7 bbWeight=0 PerfScore 0.00 -G_M62513_IG14: ; bbWeight=0, gcrefRegs=0042 {rcx rsi}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[rcx rsi] - mov r15d, 2 - jmp SHORT G_M62513_IG06 - ;; size=8 bbWeight=0 PerfScore 0.00 -G_M62513_IG15: ; bbWeight=0.06, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rsi] - xor eax, eax - jmp SHORT G_M62513_IG10 - ;; size=4 bbWeight=0.06 PerfScore 0.14 -G_M62513_IG16: ; bbWeight=0.53, gcrefRegs=0042 {rcx rsi}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[rsi] - mov rdx, gword ptr [rcx+0x08] - ; gcrRegs +[rdx] - dec ebx - mov dword ptr [rcx+0x14], ebx - cmp ebx, dword ptr [rdx+0x08] - jae SHORT G_M62513_IG20 - mov eax, ebx - mov rbx, gword ptr [rdx+8*rax+0x10] - ; gcrRegs +[rbx] - test rbx, rbx - jne SHORT G_M62513_IG18 - ;; size=26 bbWeight=0.53 PerfScore 5.71 -G_M62513_IG17: ; bbWeight=2.12, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref - ; gcrRegs -[rcx rdx] - mov rcx, 0xD1FFAB1E - ; gcrRegs +[rcx] - mov rdx, 0xD1FFAB1E - ; gcrRegs +[rdx] - call [<unknown method>] - ; gcrRegs -[rcx rdx] - ; gcr arg pop 0 - ;; size=26 bbWeight=2.12 PerfScore 7.44 -G_M62513_IG18: ; bbWeight=0.53, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz - mov rcx, gword ptr [rbp+0x10] - ; gcrRegs +[rcx] - mov rax, gword ptr [rcx+0x08] - ; gcrRegs +[rax] - mov edx, dword ptr [rcx+0x14] - cmp edx, dword ptr [rax+0x08] - jae SHORT G_M62513_IG20 - xor r8, r8 - ; gcrRegs +[r8] - mov gword ptr [rax+8*rdx+0x10], r8 - cmp byte ptr [rsi+0x9D], 0 - jne SHORT G_M62513_IG21 - mov r15d, r13d - jmp G_M62513_IG06 - ;; size=41 bbWeight=0.53 PerfScore 8.77 -G_M62513_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax rcx rbx rsi r8] - call CORINFO_HELP_OVERFLOW - ; gcr arg pop 0 - ;; size=5 bbWeight=0 PerfScore 0.00 -G_M62513_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - call CORINFO_HELP_RNGCHKFAIL - ; gcr arg pop 0 - ;; size=5 bbWeight=0 PerfScore 0.00 -G_M62513_IG21: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[rbx rsi]
+ ;; size=8 bbWeight=0.53 PerfScore 1.59 +G_M62513_IG10: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rcx] +[rbx rsi]
mov rcx, rbx ; gcrRegs +[rcx] mov rax, qword ptr [rbx] @@ -241,7 +152,7 @@ G_M62513_IG21: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, mov r8d, eax mov ecx, dword ptr [rbx+0x08] test ecx, ecx
- jl SHORT G_M62513_IG19
+ jl SHORT G_M62513_IG14
mov r9d, ecx mov dword ptr [rsp+0x20], edi mov rcx, rsi @@ -253,10 +164,97 @@ G_M62513_IG21: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, mov r15d, r13d mov rcx, gword ptr [rbp+0x10] ; gcrRegs +[rcx]
+ jmp SHORT G_M62513_IG06 + ;; size=53 bbWeight=0 PerfScore 0.00 +G_M62513_IG11: ; bbWeight=0, gcrefRegs=0042 {rcx rsi}, byrefRegs=0000 {}, byref + mov ebx, dword ptr [rbp+0x30] + mov r13d, 32 + mov eax, 33 + cmp ebx, 0x4000 + cmovg r13d, eax + cmp dword ptr [rcx+0x10], 16 + mov r15d, r13d + jle G_M62513_IG06 + inc r15d + cmp dword ptr [rcx+0x10], 32 + mov rcx, gword ptr [rbp+0x10] + jle G_M62513_IG06 + inc r15d
jmp G_M62513_IG06
- ;; size=56 bbWeight=0 PerfScore 0.00 -G_M62513_IG22: ; bbWeight=0.53, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
+ ;; size=62 bbWeight=0 PerfScore 0.00 +G_M62513_IG12: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
; gcrRegs -[rsi]
+ mov dword ptr [rcx+0x18], esi + jmp G_M62513_IG22 + ;; size=8 bbWeight=0 PerfScore 0.00 +G_M62513_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[rcx] + call [System.Threading.Monitor:ThrowLockTakenException()] + ; gcr arg pop 0 + int3 + ;; size=7 bbWeight=0 PerfScore 0.00 +G_M62513_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + call CORINFO_HELP_OVERFLOW + ; gcr arg pop 0 + ;; size=5 bbWeight=0 PerfScore 0.00 +G_M62513_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + call CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + ;; size=5 bbWeight=0 PerfScore 0.00 +G_M62513_IG16: ; bbWeight=3.12, gcrefRegs=0042 {rcx rsi}, byrefRegs=0000 {}, byref + ; gcrRegs +[rcx rsi] + mov r15d, 2 + jmp G_M62513_IG06 + ;; size=11 bbWeight=3.12 PerfScore 7.03 +G_M62513_IG17: ; bbWeight=0.53, gcrefRegs=0042 {rcx rsi}, byrefRegs=0000 {}, byref, isz + mov rdx, gword ptr [rcx+0x08] + ; gcrRegs +[rdx]
...

+32 (+11.03%) : 615668.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_IsDelaySigned():ubyte:this (Tier1)

@@ -20,16 +20,16 @@ ;* V08 tmp6 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions> ;* V09 tmp7 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V10 tmp8 [V10,T10] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
-; V11 tmp9 [V11,T03] ( 5, 5 ) ubyte -> rsi "Inline stloc first use temp"
+; V11 tmp9 [V11,T06] ( 5, 3 ) ubyte -> rdi "Inline stloc first use temp"
;* V12 tmp10 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]> ;* V13 tmp11 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
-; V14 tmp12 [V14,T06] ( 5, 4 ) ref -> rdi class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]> -; V15 tmp13 [V15,T04] ( 3, 4.50) ref -> rdx single-def "CASTCLASS eval op1"
+; V14 tmp12 [V14,T05] ( 5, 4 ) ref -> rsi class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]> +; V15 tmp13 [V15,T03] ( 3, 4.50) ref -> rdx single-def "CASTCLASS eval op1"
; V16 tmp14 [V16,T08] ( 3, 2.50) long -> rcx "fgMakeTemp is creating a new local variable"
-; V17 tmp15 [V17,T01] ( 5, 7.50) ref -> rax class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]> -; V18 tmp16 [V18,T05] ( 3, 4.50) ref -> rdx single-def "CASTCLASS eval op1"
+; V17 tmp15 [V17,T01] ( 5, 5.50) ref -> rax class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]> +; V18 tmp16 [V18,T04] ( 3, 4.50) ref -> rdx single-def "CASTCLASS eval op1"
; V19 tmp17 [V19,T09] ( 3, 2.50) long -> rcx "fgMakeTemp is creating a new local variable"
-; V20 tmp18 [V20,T02] ( 5, 7.50) ref -> rax class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
+; V20 tmp18 [V20,T02] ( 5, 5.50) ref -> rax class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
;* V21 tmp19 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]> ; V22 tmp20 [V22 ] ( 4, 2 ) ubyte -> [rsp+0x28] do-not-enreg[X] addr-exposed "field V01.hasValue (fldOffset=0x0)" P-DEP ; V23 tmp21 [V23 ] ( 3, 1 ) ubyte -> [rsp+0x29] do-not-enreg[X] addr-exposed "field V01.value (fldOffset=0x1)" P-DEP @@ -37,7 +37,7 @@ ; ; Lcl frame size = 48
-G_M43884_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M43884_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rdi push rsi push rbx @@ -45,7 +45,7 @@ G_M43884_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 { mov rbx, rcx ; gcrRegs +[rbx] ;; size=10 bbWeight=1 PerfScore 3.50
-G_M43884_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M43884_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rcx, gword ptr [rbx+0x68] ; gcrRegs +[rcx] mov rsi, gword ptr [rcx+0x68] @@ -54,51 +54,47 @@ G_M43884_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcrRegs -[rcx] mov word ptr [rsp+0x28], cx cmp byte ptr [rsp+0x28], 0
- jne G_M43884_IG17
+ jne G_M43884_IG15
cmp byte ptr [rsi+0x88], 0
- jne G_M43884_IG19 - xor esi, esi - ; gcrRegs -[rsi] - mov rdi, gword ptr [rbx+0x88] - ; gcrRegs +[rdi] - test rdi, rdi - je SHORT G_M43884_IG15 - ;; size=58 bbWeight=1 PerfScore 17.50 -G_M43884_IG03: ; bbWeight=0.94, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz - test byte ptr [rdi+0x18], 2 - je SHORT G_M43884_IG15
+ jne G_M43884_IG17 + xor edi, edi + mov rsi, gword ptr [rbx+0x88] + test rsi, rsi + je G_M43884_IG13 + ;; size=62 bbWeight=1 PerfScore 17.50 +G_M43884_IG03: ; bbWeight=0.94, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz + test byte ptr [rsi+0x18], 2 + je SHORT G_M43884_IG13
;; size=6 bbWeight=0.94 PerfScore 3.76
-G_M43884_IG04: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz - mov rdx, gword ptr [rdi+0x08]
+G_M43884_IG04: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz + mov rdx, gword ptr [rsi+0x08]
; gcrRegs +[rdx] mov rax, rdx ; gcrRegs +[rax] test rax, rax
- je SHORT G_M43884_IG08
+ je SHORT G_M43884_IG07
;; size=12 bbWeight=1 PerfScore 3.50
-G_M43884_IG05: ; bbWeight=0.50, gcrefRegs=000D {rax rdx rbx}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rdi]
+G_M43884_IG05: ; bbWeight=0.50, gcrefRegs=000D {rax rdx rbx}, byrefRegs=0000 {}, byref + ; gcrRegs -[rsi]
mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol] cmp qword ptr [rax], rcx
- je SHORT G_M43884_IG07 - ;; size=15 bbWeight=0.50 PerfScore 2.12
+ je G_M43884_IG19 + ;; size=19 bbWeight=0.50 PerfScore 2.12
G_M43884_IG06: ; bbWeight=0.25, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref ; gcrRegs -[rax] call CORINFO_HELP_CHKCASTCLASS_SPECIAL ; gcrRegs -[rdx] +[rax] ; gcr arg pop 0
- ;; size=5 bbWeight=0.25 PerfScore 0.25 -G_M43884_IG07: ; bbWeight=1, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref - movzx rsi, byte ptr [rax+0x94] - ;; size=8 bbWeight=1 PerfScore 2.00 -G_M43884_IG08: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jmp G_M43884_IG19 + ;; size=10 bbWeight=0.25 PerfScore 0.75 +G_M43884_IG07: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
- test esi, esi - jne SHORT G_M43884_IG13
+ test edi, edi + jne SHORT G_M43884_IG11
cmp gword ptr [rbx+0x90], 0
- je SHORT G_M43884_IG16
+ je SHORT G_M43884_IG14
;; size=14 bbWeight=1 PerfScore 5.25
-G_M43884_IG09: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M43884_IG08: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rcx, gword ptr [rbx+0x90] ; gcrRegs +[rcx] mov rdx, gword ptr [rcx+0x08] @@ -106,37 +102,35 @@ G_M43884_IG09: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr mov rax, rdx ; gcrRegs +[rax] test rax, rax
- je SHORT G_M43884_IG13
+ je SHORT G_M43884_IG11
;; size=19 bbWeight=1 PerfScore 5.50
-G_M43884_IG10: ; bbWeight=0.50, gcrefRegs=0005 {rax rdx}, byrefRegs=0000 {}, byref, isz
+G_M43884_IG09: ; bbWeight=0.50, gcrefRegs=0005 {rax rdx}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx rbx] mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol] cmp qword ptr [rax], rcx
- je SHORT G_M43884_IG12 - ;; size=15 bbWeight=0.50 PerfScore 2.12 -G_M43884_IG11: ; bbWeight=0.25, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref
+ je G_M43884_IG20 + ;; size=19 bbWeight=0.50 PerfScore 2.12 +G_M43884_IG10: ; bbWeight=0.25, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref
; gcrRegs -[rax] call CORINFO_HELP_CHKCASTCLASS_SPECIAL ; gcrRegs -[rdx] +[rax] ; gcr arg pop 0
- ;; size=5 bbWeight=0.25 PerfScore 0.25 -G_M43884_IG12: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref - movzx rsi, byte ptr [rax+0x94] - ;; size=8 bbWeight=1 PerfScore 2.00 -G_M43884_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ jmp G_M43884_IG20 + ;; size=10 bbWeight=0.25 PerfScore 0.75 +G_M43884_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rax] xor eax, eax
- cmp esi, 2
+ cmp edi, 2
sete al ;; size=8 bbWeight=1 PerfScore 1.50
-G_M43884_IG14: ; bbWeight=1, epilog, nogc, extend
+G_M43884_IG12: ; bbWeight=1, epilog, nogc, extend
add rsp, 48 pop rbx pop rsi pop rdi ret ;; size=8 bbWeight=1 PerfScore 2.75
-G_M43884_IG15: ; bbWeight=0.06, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+G_M43884_IG13: ; bbWeight=0.06, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rbx] mov rcx, rbx ; gcrRegs +[rcx] @@ -144,12 +138,12 @@ G_M43884_IG15: ; bbWeight=0.06, gcVars=0000000000000000 {}, gcrefRegs=000 call [rax]Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:EnsureAttributesAreBound():this ; gcrRegs -[rcx] ; gcr arg pop 0
- mov rdi, gword ptr [rbx+0x88] - ; gcrRegs +[rdi]
+ mov rsi, gword ptr [rbx+0x88] + ; gcrRegs +[rsi]
jmp G_M43884_IG04 ;; size=27 bbWeight=0.06 PerfScore 0.45
-G_M43884_IG16: ; bbWeight=0.05, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rdi]
+G_M43884_IG14: ; bbWeight=0.05, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rsi]
lea rdx, bword ptr [rbx+0x90] ; byrRegs +[rdx] mov rcx, rbx @@ -159,9 +153,9 @@ G_M43884_IG16: ; bbWeight=0.05, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, ; gcrRegs -[rcx] ; byrRegs -[rdx] ; gcr arg pop 0
- jmp SHORT G_M43884_IG09
+ jmp SHORT G_M43884_IG08
;; size=24 bbWeight=0.05 PerfScore 0.32
-G_M43884_IG17: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
+G_M43884_IG15: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx] +[rsi] mov cx, word ptr [rsi+0x98] mov word ptr [rsp+0x28], cx @@ -172,6 +166,16 @@ G_M43884_IG17: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byr ; gcr arg pop 0 nop ;; size=30 bbWeight=0 PerfScore 0.00
+G_M43884_IG16: ; bbWeight=0, epilog, nogc, extend + add rsp, 48 + pop rbx + pop rsi + pop rdi + ret + ;; size=8 bbWeight=0 PerfScore 0.00 +G_M43884_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + xor eax, eax + ;; size=2 bbWeight=0 PerfScore 0.00
G_M43884_IG18: ; bbWeight=0, epilog, nogc, extend add rsp, 48 pop rbx @@ -179,18 +183,18 @@ G_M43884_IG18: ; bbWeight=0, epilog, nogc, extend pop rdi ret ;; size=8 bbWeight=0 PerfScore 0.00
-G_M43884_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - xor eax, eax - ;; size=2 bbWeight=0 PerfScore 0.00 -G_M43884_IG20: ; bbWeight=0, epilog, nogc, extend - add rsp, 48 - pop rbx - pop rsi - pop rdi - ret - ;; size=8 bbWeight=0 PerfScore 0.00
+G_M43884_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs +[rax rbx] + movzx rdi, byte ptr [rax+0x94] + jmp G_M43884_IG07 + ;; size=13 bbWeight=0 PerfScore 0.00 +G_M43884_IG20: ; bbWeight=0, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref + ; gcrRegs -[rbx] + movzx rdi, byte ptr [rax+0x94] + jmp G_M43884_IG11 + ;; size=13 bbWeight=0 PerfScore 0.00
-; Total bytes of code 290, prolog size 7, PerfScore 52.78, instruction count 77, allocated bytes for code 290 (MethodHash=8b225493) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_IsDelaySigned():ubyte:this (Tier1)
+; Total bytes of code 322, prolog size 7, PerfScore 49.78, instruction count 81, allocated bytes for code 322 (MethodHash=8b225493) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_IsDelaySigned():ubyte:this (Tier1)
; ============================================================ Unwind Info:

librariestestsnotieredcompilation.run.windows.x64.Release.mch

-43 (-52.44%) : 205167.dasm - System.Runtime.Serialization.Formatters.Tests.StructContainingArraysOfOtherStructs:Equals(System.Object):ubyte:this (FullOpts)

@@ -8,78 +8,50 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 2.50) byref -> rcx this single-def
-; V01 arg1 [V01,T00] ( 5, 3.75) ref -> rbx class-hnd single-def <System.Object> -; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V01 arg1 [V01,T00] ( 4, 3.50) ref -> rdx class-hnd single-def <System.Object> +;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T01] ( 3, 4.50) ref -> rax class-hnd "spilling QMark2" <System.Runtime.Serialization.Formatters.Tests.StructContainingArraysOfOtherStructs>
-; V04 tmp2 [V04,T03] ( 2, 2 ) ref -> rsi class-hnd exact single-def "impAppendStmt" <System.Runtime.Serialization.Formatters.Tests.StructContainingOtherStructs[]> -; V05 cse0 [V05,T04] ( 4, 1.25) long -> r8 "CSE - moderate" -; V06 cse1 [V06,T05] ( 3, 1 ) long -> rdx "CSE - moderate"
+; V04 tmp2 [V04,T03] ( 2, 2 ) ref -> rcx class-hnd exact single-def "impAppendStmt" <System.Runtime.Serialization.Formatters.Tests.StructContainingOtherStructs[]>
;
-; Lcl frame size = 40
+; Lcl frame size = 0
-G_M20050_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG - push rsi - push rbx - sub rsp, 40 - mov rbx, rdx - ; gcrRegs +[rbx] - ;; size=9 bbWeight=1 PerfScore 2.50 -G_M20050_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0002 {rcx}, byref, isz
+G_M20050_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG + ;; size=0 bbWeight=1 PerfScore 0.00 +G_M20050_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0002 {rcx}, byref, isz + ; gcrRegs +[rdx]
; byrRegs +[rcx]
- mov rax, rbx
+ mov rax, rdx
; gcrRegs +[rax] test rax, rax je SHORT G_M20050_IG04 ;; size=8 bbWeight=1 PerfScore 1.50
-G_M20050_IG03: ; bbWeight=0.25, gcrefRegs=0009 {rax rbx}, byrefRegs=0002 {rcx}, byref, isz - mov rdx, qword ptr [rax]
+G_M20050_IG03: ; bbWeight=0.25, gcrefRegs=0005 {rax rdx}, byrefRegs=0002 {rcx}, byref, isz
mov r8, 0xD1FFAB1E ; System.Runtime.Serialization.Formatters.Tests.StructContainingArraysOfOtherStructs
- cmp rdx, r8
+ cmp qword ptr [rax], r8
je SHORT G_M20050_IG06
- ;; size=18 bbWeight=0.25 PerfScore 0.88
+ ;; size=15 bbWeight=0.25 PerfScore 1.06
G_M20050_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax rbx]
+ ; gcrRegs -[rax rdx]
; byrRegs -[rcx] xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M20050_IG05: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 40 - pop rbx - pop rsi
ret
- ;; size=7 bbWeight=0.50 PerfScore 1.12 -G_M20050_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0002 {rcx}, gcvars, byref, isz - ; gcrRegs +[rbx]
+ ;; size=1 bbWeight=0.50 PerfScore 0.50 +G_M20050_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0004 {rdx}, byrefRegs=0002 {rcx}, gcvars, byref + ; gcrRegs +[rdx]
; byrRegs +[rcx]
- mov rsi, gword ptr [rcx] - ; gcrRegs +[rsi] - cmp rdx, r8 - je SHORT G_M20050_IG08 - ;; size=8 bbWeight=0.50 PerfScore 1.62 -G_M20050_IG07: ; bbWeight=0.25, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref - ; byrRegs -[rcx] - mov rdx, rbx - ; gcrRegs +[rdx] - mov rcx, r8 - call CORINFO_HELP_UNBOX - ; gcrRegs -[rdx] - ; gcr arg pop 0 - ;; size=11 bbWeight=0.25 PerfScore 0.38 -G_M20050_IG08: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref - mov rdx, gword ptr [rbx+0x08] - ; gcrRegs +[rdx] - mov rcx, rsi
+ mov rcx, gword ptr [rcx]
; gcrRegs +[rcx]
- ;; size=7 bbWeight=0.50 PerfScore 1.12 -G_M20050_IG09: ; bbWeight=0.50, epilog, nogc, extend - add rsp, 40 - pop rbx - pop rsi
+ ; byrRegs -[rcx] + mov rdx, gword ptr [rdx+0x08] + ;; size=7 bbWeight=0.50 PerfScore 2.00 +G_M20050_IG07: ; bbWeight=0.50, epilog, nogc, extend
tail.jmp [System.Runtime.Serialization.Formatters.Tests.EqualityHelpers:ArraysAreEqual[System.Runtime.Serialization.Formatters.Tests.StructContainingOtherStructs](System.Runtime.Serialization.Formatters.Tests.StructContainingOtherStructs[],System.Runtime.Serialization.Formatters.Tests.StructContainingOtherStructs[]):ubyte] ; gcr arg pop 0
- ;; size=12 bbWeight=0.50 PerfScore 1.62
+ ;; size=6 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 82, prolog size 9, PerfScore 10.88, instruction count 28, allocated bytes for code 82 (MethodHash=8ccbb1ad) for method System.Runtime.Serialization.Formatters.Tests.StructContainingArraysOfOtherStructs:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 39, prolog size 0, PerfScore 6.19, instruction count 11, allocated bytes for code 39 (MethodHash=8ccbb1ad) for method System.Runtime.Serialization.Formatters.Tests.StructContainingArraysOfOtherStructs:Equals(System.Object):ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -87,11 +59,8 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x06 - CountOfUnwindCodes: 3
+ SizeOfProlog : 0x00 + CountOfUnwindCodes: 0
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x06 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28 - CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)

-32 (-26.23%) : 99226.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)

@@ -7,15 +7,17 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T04] ( 5, 7.50) ref -> rcx class-hnd single-def <System.String> -; V01 arg1 [V01,T02] ( 6, 11 ) ref -> rdx class-hnd single-def <System.String> -; V02 arg2 [V02,T05] ( 4, 6.50) int -> r8 single-def -; V03 arg3 [V03,T07] ( 5, 4.50) int -> r9 single-def -; V04 loc0 [V04,T03] ( 6, 13 ) int -> r10 -; V05 loc1 [V05,T00] ( 11, 27.50) int -> r11
+; V00 arg0 [V00,T04] ( 4, 7 ) ref -> rcx class-hnd single-def <System.String> +; V01 arg1 [V01,T02] ( 4, 10 ) ref -> rdx class-hnd single-def <System.String> +; V02 arg2 [V02,T07] ( 3, 6 ) int -> r8 single-def +; V03 arg3 [V03,T08] ( 5, 4.50) int -> r9 single-def +; V04 loc0 [V04,T01] ( 5, 12 ) int -> r10 +; V05 loc1 [V05,T00] ( 7, 25 ) int -> r11
; V06 OutArgs [V06 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 cse0 [V07,T06] ( 5, 7 ) int -> rax "CSE - aggressive" -; V08 cse1 [V08,T01] ( 6, 13.50) int -> rsi multi-def "CSE - aggressive"
+; V07 cse0 [V07,T05] ( 3, 8.50) int -> rsi "CSE - aggressive" +; V08 cse1 [V08,T06] ( 3, 8.50) int -> rbx "CSE - aggressive" +; V09 cse2 [V09,T09] ( 4, 6.50) int -> rax "CSE - aggressive" +; V10 cse3 [V10,T03] ( 3, 12 ) int -> rsi "CSE - aggressive"
; ; Lcl frame size = 40 @@ -38,59 +40,47 @@ G_M6389_IG03: ; bbWeight=2, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, ;; size=3 bbWeight=2 PerfScore 0.50 G_M6389_IG04: ; bbWeight=8, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz cmp r11d, r10d
- jge SHORT G_M6389_IG06
+ jge SHORT G_M6389_IG08
;; size=5 bbWeight=8 PerfScore 10.00 G_M6389_IG05: ; bbWeight=4, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz cmp r11d, eax
- jae SHORT G_M6389_IG11
+ jae SHORT G_M6389_IG10
mov ebx, r11d movzx rbx, word ptr [rcx+2*rbx+0x0C] lea esi, [r8+r11] cmp esi, dword ptr [rdx+0x08]
- jae SHORT G_M6389_IG11 - cmp bx, word ptr [rdx+2*rsi+0x0C]
+ jae SHORT G_M6389_IG10 + movzx rsi, word ptr [rdx+2*rsi+0x0C] + cmp ebx, esi
je SHORT G_M6389_IG03
- ;; size=29 bbWeight=4 PerfScore 48.00 -G_M6389_IG06: ; bbWeight=1, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz - cmp r11d, r10d - jge SHORT G_M6389_IG09 - ;; size=5 bbWeight=1 PerfScore 1.25 -G_M6389_IG07: ; bbWeight=0.50, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz - cmp r11d, eax - jae SHORT G_M6389_IG11 - mov eax, r11d - movzx rax, word ptr [rcx+2*rax+0x0C] - lea esi, [r8+r11] - cmp esi, dword ptr [rdx+0x08] - jae SHORT G_M6389_IG11 - mov r9d, esi - movzx rcx, word ptr [rdx+2*r9+0x0C] - ; gcrRegs -[rcx] - sub eax, ecx - ;; size=33 bbWeight=0.50 PerfScore 5.25 -G_M6389_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=31 bbWeight=4 PerfScore 45.00 +G_M6389_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[rcx rdx] + mov eax, ebx + sub eax, esi + ;; size=4 bbWeight=0.50 PerfScore 0.25 +G_M6389_IG07: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40 pop rbx pop rsi ret ;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M6389_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[rdx]
+G_M6389_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
sub eax, r9d ;; size=3 bbWeight=0.50 PerfScore 0.12
-G_M6389_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M6389_IG09: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40 pop rbx pop rsi ret ;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M6389_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M6389_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 122, prolog size 6, PerfScore 74.62, instruction count 44, allocated bytes for code 122 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
+; Total bytes of code 90, prolog size 6, PerfScore 65.38, instruction count 35, allocated bytes for code 90 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
; ============================================================ Unwind Info:

-32 (-24.62%) : 32119.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan1[uint]):int (FullOpts)

@@ -9,108 +9,93 @@ ; ; V00 arg0 [V00,T03] ( 4, 8 ) byref -> rcx ld-addr-op single-def ; V01 arg1 [V01,T04] ( 4, 8 ) byref -> rdx ld-addr-op single-def
-; V02 loc0 [V02,T00] ( 7, 24.50) int -> registers
+; V02 loc0 [V02,T00] ( 7, 24.50) int -> r10
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T01] ( 6, 20 ) int -> r9 "dup spill" -; V05 tmp2 [V05,T07] ( 3, 5.50) byref -> r10 single-def "field V00._reference (fldOffset=0x0)" P-INDEP -; V06 tmp3 [V06,T06] ( 5, 7 ) int -> rcx "field V00._length (fldOffset=0x8)" P-INDEP -; V07 tmp4 [V07,T08] ( 3, 5.50) byref -> r8 single-def "field V01._reference (fldOffset=0x0)" P-INDEP -; V08 tmp5 [V08,T05] ( 6, 7.50) int -> rdx "field V01._length (fldOffset=0x8)" P-INDEP
+; V04 tmp1 [V04,T01] ( 2, 16 ) int -> r10 "dup spill" +; V05 tmp2 [V05,T09] ( 2, 5 ) byref -> r8 single-def "field V00._reference (fldOffset=0x0)" P-INDEP +; V06 tmp3 [V06,T08] ( 4, 6.50) int -> rcx "field V00._length (fldOffset=0x8)" P-INDEP +; V07 tmp4 [V07,T10] ( 2, 5 ) byref -> rax single-def "field V01._reference (fldOffset=0x0)" P-INDEP +; V08 tmp5 [V08,T07] ( 5, 7 ) int -> rdx "field V01._length (fldOffset=0x8)" P-INDEP
;* V09 tmp6 [V09 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[uint]> ;* V10 tmp7 [V10 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[uint]>
-; V11 cse0 [V11,T02] ( 6, 13.50) long -> r11 multi-def "CSE - aggressive"
+; V11 cse0 [V11,T05] ( 3, 8.50) int -> r11 "CSE - aggressive" +; V12 cse1 [V12,T06] ( 3, 8.50) int -> r9 "CSE - aggressive" +; V13 cse2 [V13,T02] ( 3, 12 ) long -> r9 "CSE - aggressive"
;
-; Lcl frame size = 32
+; Lcl frame size = 40
G_M264_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbx - sub rsp, 32 - ;; size=5 bbWeight=1 PerfScore 1.25
+ sub rsp, 40 + ;; size=4 bbWeight=1 PerfScore 0.25
G_M264_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0006 {rcx rdx}, byref, isz ; byrRegs +[rcx rdx]
- mov r8, bword ptr [rdx] - ; byrRegs +[r8]
+ mov rax, bword ptr [rdx] + ; byrRegs +[rax]
mov edx, dword ptr [rdx+0x08] ; byrRegs -[rdx]
- mov r10, bword ptr [rcx] - ; byrRegs +[r10]
+ mov r8, bword ptr [rcx] + ; byrRegs +[r8]
mov ecx, dword ptr [rcx+0x08] ; byrRegs -[rcx] cmp ecx, edx je SHORT G_M264_IG04 ;; size=16 bbWeight=1 PerfScore 9.25 G_M264_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[r8 r10]
+ ; byrRegs -[rax r8]
cmp ecx, edx
- jl SHORT G_M264_IG12 - jmp SHORT G_M264_IG10
+ jl SHORT G_M264_IG11 + jmp SHORT G_M264_IG07
;; size=6 bbWeight=0.50 PerfScore 1.62
-G_M264_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0500 {r8 r10}, byref - ; byrRegs +[r8 r10] - mov r9d, edx
+G_M264_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0101 {rax r8}, byref + ; byrRegs +[rax r8] + mov r10d, edx
;; size=3 bbWeight=0.50 PerfScore 0.12
-G_M264_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0500 {r8 r10}, byref, isz - dec r9d - mov eax, r9d - test eax, eax - jl SHORT G_M264_IG06 - cmp eax, ecx - jae SHORT G_M264_IG14 - mov r11d, eax - mov ebx, dword ptr [r10+4*r11] - cmp eax, edx - jae SHORT G_M264_IG14 - cmp ebx, dword ptr [r8+4*r11] - je SHORT G_M264_IG08 - ;; size=31 bbWeight=4 PerfScore 42.00 -G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0500 {r8 r10}, byref, isz - test r9d, r9d - jge SHORT G_M264_IG09 - xor eax, eax - ;; size=7 bbWeight=0.50 PerfScore 0.75 -G_M264_IG07: ; bbWeight=0.50, epilog, nogc, extend - add rsp, 32 - pop rbx - ret - ;; size=6 bbWeight=0.50 PerfScore 0.88 -G_M264_IG08: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0500 {r8 r10}, gcvars, byref, isz - mov r9d, eax - jmp SHORT G_M264_IG05 - ;; size=5 bbWeight=2 PerfScore 4.50 -G_M264_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0500 {r8 r10}, byref, isz - cmp r9d, ecx - jae SHORT G_M264_IG14 - mov r11d, r9d - mov eax, dword ptr [r10+4*r11] - cmp r9d, edx - jae SHORT G_M264_IG14 - cmp eax, dword ptr [r8+4*r11] - jb SHORT G_M264_IG12 - ;; size=23 bbWeight=0.50 PerfScore 4.38 -G_M264_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; byrRegs -[r8 r10]
+G_M264_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0101 {rax r8}, byref, isz + dec r10d + js SHORT G_M264_IG09 + cmp r10d, ecx + jae SHORT G_M264_IG13 + mov r9d, r10d + mov r11d, dword ptr [r8+4*r9] + cmp r10d, edx + jae SHORT G_M264_IG13 + mov r9d, dword ptr [rax+4*r9] + cmp r11d, r9d + je SHORT G_M264_IG05 + ;; size=31 bbWeight=4 PerfScore 37.00 +G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ; byrRegs -[rax r8] + cmp r9d, r11d + ja SHORT G_M264_IG11 + ;; size=5 bbWeight=0.50 PerfScore 0.62 +G_M264_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov eax, 1 ;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M264_IG11: ; bbWeight=0.50, epilog, nogc, extend - add rsp, 32 - pop rbx
+G_M264_IG08: ; bbWeight=0.50, epilog, nogc, extend + add rsp, 40
ret
- ;; size=6 bbWeight=0.50 PerfScore 0.88 -G_M264_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=5 bbWeight=0.50 PerfScore 0.62 +G_M264_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + xor eax, eax + ;; size=2 bbWeight=0.50 PerfScore 0.12 +G_M264_IG10: ; bbWeight=0.50, epilog, nogc, extend + add rsp, 40 + ret + ;; size=5 bbWeight=0.50 PerfScore 0.62 +G_M264_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov eax, -1 ;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M264_IG13: ; bbWeight=0.50, epilog, nogc, extend - add rsp, 32 - pop rbx
+G_M264_IG12: ; bbWeight=0.50, epilog, nogc, extend + add rsp, 40
ret
- ;; size=6 bbWeight=0.50 PerfScore 0.88 -G_M264_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=5 bbWeight=0.50 PerfScore 0.62 +G_M264_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 130, prolog size 5, PerfScore 66.75, instruction count 50, allocated bytes for code 130 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
+; Total bytes of code 98, prolog size 4, PerfScore 51.12, instruction count 35, allocated bytes for code 98 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
; ============================================================ Unwind Info: @@ -118,10 +103,9 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x05 - CountOfUnwindCodes: 2
+ SizeOfProlog : 0x04 + CountOfUnwindCodes: 1
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20 - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28

+3 (+8.82%) : 228999.dasm - System.Security.Cryptography.SHA384CryptoServiceProvider:Dispose(ubyte):this (FullOpts)

@@ -8,9 +8,10 @@ ; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 4, 4 ) ref -> rbx this class-hnd single-def <System.Security.Cryptography.SHA384CryptoServiceProvider>
+; V00 this [V00,T00] ( 4, 3 ) ref -> rbx this class-hnd single-def <System.Security.Cryptography.SHA384CryptoServiceProvider>
; V01 arg1 [V01,T01] ( 3, 3 ) ubyte -> rdx single-def ; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V03 cse0 [V03,T02] ( 2, 2 ) int -> rcx "CSE - aggressive"
; ; Lcl frame size = 32 @@ -21,8 +22,11 @@ G_M59236_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[rbx] ;; size=8 bbWeight=1 PerfScore 1.50 G_M59236_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- test dl, dl - je SHORT G_M59236_IG03
+ movzx rcx, dl + test ecx, ecx + je SHORT G_M59236_IG04 + ;; size=7 bbWeight=1 PerfScore 1.50 +G_M59236_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rcx, gword ptr [rbx+0x20] ; gcrRegs +[rcx] cmp dword ptr [rcx], ecx @@ -30,15 +34,15 @@ G_M59236_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcrRegs -[rcx] ; gcr arg pop 0 mov byte ptr [rbx+0x18], 1
- ;; size=20 bbWeight=1 PerfScore 10.25 -G_M59236_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=16 bbWeight=0.50 PerfScore 4.50 +G_M59236_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rbx] add rsp, 32 pop rbx ret ;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 34, prolog size 5, PerfScore 13.50, instruction count 12, allocated bytes for code 34 (MethodHash=ebc3189b) for method System.Security.Cryptography.SHA384CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
+; Total bytes of code 37, prolog size 5, PerfScore 9.25, instruction count 13, allocated bytes for code 37 (MethodHash=ebc3189b) for method System.Security.Cryptography.SHA384CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
; ============================================================ Unwind Info:

+3 (+8.82%) : 228992.dasm - System.Security.Cryptography.SHA1CryptoServiceProvider:Dispose(ubyte):this (FullOpts)

@@ -8,9 +8,10 @@ ; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 4, 4 ) ref -> rbx this class-hnd single-def <System.Security.Cryptography.SHA1CryptoServiceProvider>
+; V00 this [V00,T00] ( 4, 3 ) ref -> rbx this class-hnd single-def <System.Security.Cryptography.SHA1CryptoServiceProvider>
; V01 arg1 [V01,T01] ( 3, 3 ) ubyte -> rdx single-def ; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V03 cse0 [V03,T02] ( 2, 2 ) int -> rcx "CSE - aggressive"
; ; Lcl frame size = 32 @@ -21,8 +22,11 @@ G_M54186_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[rbx] ;; size=8 bbWeight=1 PerfScore 1.50 G_M54186_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- test dl, dl - je SHORT G_M54186_IG03
+ movzx rcx, dl + test ecx, ecx + je SHORT G_M54186_IG04 + ;; size=7 bbWeight=1 PerfScore 1.50 +G_M54186_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rcx, gword ptr [rbx+0x20] ; gcrRegs +[rcx] cmp dword ptr [rcx], ecx @@ -30,15 +34,15 @@ G_M54186_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcrRegs -[rcx] ; gcr arg pop 0 mov byte ptr [rbx+0x18], 1
- ;; size=20 bbWeight=1 PerfScore 10.25 -G_M54186_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=16 bbWeight=0.50 PerfScore 4.50 +G_M54186_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rbx] add rsp, 32 pop rbx ret ;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 34, prolog size 5, PerfScore 13.50, instruction count 12, allocated bytes for code 34 (MethodHash=9cf42c55) for method System.Security.Cryptography.SHA1CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
+; Total bytes of code 37, prolog size 5, PerfScore 9.25, instruction count 13, allocated bytes for code 37 (MethodHash=9cf42c55) for method System.Security.Cryptography.SHA1CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
; ============================================================ Unwind Info:

+3 (+16.67%) : 162064.dasm - System.Net.NetworkInformation.Tests.PingTest+FinalizingPing:Dispose(ubyte):this (FullOpts)

@@ -11,6 +11,7 @@ ; V00 this [V00,T01] ( 3, 2.50) ref -> rcx this class-hnd single-def <System.Net.NetworkInformation.Tests.PingTest+FinalizingPing> ; V01 arg1 [V01,T00] ( 3, 3 ) ubyte -> rdx single-def ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V03 cse0 [V03,T02] ( 2, 2 ) int -> rax "CSE - aggressive"
; ; Lcl frame size = 0 @@ -18,19 +19,24 @@ G_M50330_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 { ;; size=0 bbWeight=1 PerfScore 0.00 G_M50330_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[rcx]
- test dl, dl - jne SHORT G_M50330_IG04
+ movzx rax, dl + test eax, eax + jne SHORT G_M50330_IG05 + ;; size=7 bbWeight=1 PerfScore 1.50 +G_M50330_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[rcx]
mov byte ptr [(reloc)], 1 ; data for <unknown class>:<unknown field>
- ;; size=11 bbWeight=1 PerfScore 2.25 -G_M50330_IG03: ; bbWeight=1, epilog, nogc, extend
+ ;; size=7 bbWeight=0.50 PerfScore 0.50 +G_M50330_IG04: ; bbWeight=0.50, epilog, nogc, extend
ret
- ;; size=1 bbWeight=1 PerfScore 1.00 -G_M50330_IG04: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=1 bbWeight=0.50 PerfScore 0.50 +G_M50330_IG05: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, epilog, nogc + ; gcrRegs +[rcx]
tail.jmp [<unknown method>] ; gcr arg pop 0 ;; size=6 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 18, prolog size 0, PerfScore 4.25, instruction count 5, allocated bytes for code 18 (MethodHash=d3d63b65) for method System.Net.NetworkInformation.Tests.PingTest+FinalizingPing:Dispose(ubyte):this (FullOpts)
+; Total bytes of code 21, prolog size 0, PerfScore 3.50, instruction count 6, allocated bytes for code 21 (MethodHash=d3d63b65) for method System.Net.NetworkInformation.Tests.PingTest+FinalizingPing:Dispose(ubyte):this (FullOpts)
; ============================================================ Unwind Info:

realworld.run.windows.x64.checked.mch

-40 (-51.28%) : 8678.dasm - System.Int32:Equals(System.Object):ubyte:this (FullOpts)

@@ -8,75 +8,49 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 2.50) byref -> rcx this single-def
-; V01 arg1 [V01,T00] ( 5, 3.75) ref -> rbx class-hnd single-def <System.Object> -; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V01 arg1 [V01,T00] ( 4, 3.50) ref -> rdx class-hnd single-def <System.Object> +;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T01] ( 3, 4.50) ref -> rax class-hnd "spilling QMark2" <System.Int32>
-; V04 tmp2 [V04,T03] ( 2, 2 ) int -> rsi "impAppendStmt" -; V05 cse0 [V05,T04] ( 4, 1.25) long -> r8 "CSE - moderate" -; V06 cse1 [V06,T05] ( 3, 1 ) long -> rdx "CSE - moderate"
+; V04 tmp2 [V04,T03] ( 2, 2 ) int -> rax "impAppendStmt"
;
-; Lcl frame size = 40
+; Lcl frame size = 0
-G_M40448_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG - push rsi - push rbx - sub rsp, 40 - mov rbx, rdx - ; gcrRegs +[rbx] - ;; size=9 bbWeight=1 PerfScore 2.50 -G_M40448_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0002 {rcx}, byref, isz
+G_M40448_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG + ;; size=0 bbWeight=1 PerfScore 0.00 +G_M40448_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0002 {rcx}, byref, isz + ; gcrRegs +[rdx]
; byrRegs +[rcx]
- mov rax, rbx
+ mov rax, rdx
; gcrRegs +[rax] test rax, rax je SHORT G_M40448_IG04 ;; size=8 bbWeight=1 PerfScore 1.50
-G_M40448_IG03: ; bbWeight=0.25, gcrefRegs=0009 {rax rbx}, byrefRegs=0002 {rcx}, byref, isz - mov rdx, qword ptr [rax]
+G_M40448_IG03: ; bbWeight=0.25, gcrefRegs=0005 {rax rdx}, byrefRegs=0002 {rcx}, byref, isz
mov r8, 0xD1FFAB1E ; System.Int32
- cmp rdx, r8
+ cmp qword ptr [rax], r8
je SHORT G_M40448_IG06
- ;; size=18 bbWeight=0.25 PerfScore 0.88
+ ;; size=15 bbWeight=0.25 PerfScore 1.06
G_M40448_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax rbx]
+ ; gcrRegs -[rax rdx]
; byrRegs -[rcx] xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M40448_IG05: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 40 - pop rbx - pop rsi
ret
- ;; size=7 bbWeight=0.50 PerfScore 1.12 -G_M40448_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0002 {rcx}, gcvars, byref, isz - ; gcrRegs +[rbx] - ; byrRegs +[rcx] - mov esi, dword ptr [rcx] - cmp rdx, r8 - je SHORT G_M40448_IG08 - ;; size=7 bbWeight=0.50 PerfScore 1.62 -G_M40448_IG07: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - ; byrRegs -[rcx] - mov rdx, rbx
+ ;; size=1 bbWeight=0.50 PerfScore 0.50 +G_M40448_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0004 {rdx}, byrefRegs=0002 {rcx}, gcvars, byref
; gcrRegs +[rdx]
- mov rcx, r8 - call [CORINFO_HELP_UNBOX] - ; gcrRegs -[rdx] - ; gcr arg pop 0 - ;; size=12 bbWeight=0.25 PerfScore 0.88 -G_M40448_IG08: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - xor eax, eax - cmp esi, dword ptr [rbx+0x08]
+ ; byrRegs +[rcx] + mov eax, dword ptr [rcx] + cmp eax, dword ptr [rdx+0x08]
sete al
- ;; size=8 bbWeight=0.50 PerfScore 2.12 -G_M40448_IG09: ; bbWeight=0.50, epilog, nogc, extend - add rsp, 40 - pop rbx - pop rsi
+ movzx rax, al + ;; size=11 bbWeight=0.50 PerfScore 3.12 +G_M40448_IG07: ; bbWeight=0.50, epilog, nogc, extend
ret
- ;; size=7 bbWeight=0.50 PerfScore 1.12
+ ;; size=1 bbWeight=0.50 PerfScore 0.50
-; Total bytes of code 78, prolog size 6, PerfScore 11.88, instruction count 29, allocated bytes for code 78 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 38, prolog size 0, PerfScore 6.81, instruction count 13, allocated bytes for code 38 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -84,11 +58,8 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x06 - CountOfUnwindCodes: 3
+ SizeOfProlog : 0x00 + CountOfUnwindCodes: 0
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x06 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28 - CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)

-42 (-50.00%) : 6309.dasm - System.Boolean:Equals(System.Object):ubyte:this (FullOpts)

@@ -8,76 +8,51 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 2.50) byref -> rcx this single-def
-; V01 arg1 [V01,T00] ( 5, 3.75) ref -> rbx class-hnd single-def <System.Object> -; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V01 arg1 [V01,T00] ( 4, 3.50) ref -> rdx class-hnd single-def <System.Object> +;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T01] ( 3, 4.50) ref -> rax class-hnd "spilling QMark2" <System.Boolean>
-; V04 tmp2 [V04,T03] ( 2, 2 ) int -> rsi "impAppendStmt" -; V05 cse0 [V05,T04] ( 4, 1.25) long -> r8 "CSE - moderate" -; V06 cse1 [V06,T05] ( 3, 1 ) long -> rdx "CSE - moderate"
+; V04 tmp2 [V04,T03] ( 2, 2 ) int -> rax "impAppendStmt"
;
-; Lcl frame size = 40
+; Lcl frame size = 0
-G_M31030_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG - push rsi - push rbx - sub rsp, 40 - mov rbx, rdx - ; gcrRegs +[rbx] - ;; size=9 bbWeight=1 PerfScore 2.50 -G_M31030_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0002 {rcx}, byref, isz
+G_M31030_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG + ;; size=0 bbWeight=1 PerfScore 0.00 +G_M31030_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0002 {rcx}, byref, isz + ; gcrRegs +[rdx]
; byrRegs +[rcx]
- mov rax, rbx
+ mov rax, rdx
; gcrRegs +[rax] test rax, rax je SHORT G_M31030_IG04 ;; size=8 bbWeight=1 PerfScore 1.50
-G_M31030_IG03: ; bbWeight=0.25, gcrefRegs=0009 {rax rbx}, byrefRegs=0002 {rcx}, byref, isz - mov rdx, qword ptr [rax]
+G_M31030_IG03: ; bbWeight=0.25, gcrefRegs=0005 {rax rdx}, byrefRegs=0002 {rcx}, byref, isz
mov r8, 0xD1FFAB1E ; System.Boolean
- cmp rdx, r8
+ cmp qword ptr [rax], r8
je SHORT G_M31030_IG06
- ;; size=18 bbWeight=0.25 PerfScore 0.88
+ ;; size=15 bbWeight=0.25 PerfScore 1.06
G_M31030_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax rbx]
+ ; gcrRegs -[rax rdx]
; byrRegs -[rcx] xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M31030_IG05: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 40 - pop rbx - pop rsi
ret
- ;; size=7 bbWeight=0.50 PerfScore 1.12 -G_M31030_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0002 {rcx}, gcvars, byref, isz - ; gcrRegs +[rbx] - ; byrRegs +[rcx] - movzx rsi, byte ptr [rcx] - cmp rdx, r8 - je SHORT G_M31030_IG08 - ;; size=9 bbWeight=0.50 PerfScore 1.62 -G_M31030_IG07: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - ; byrRegs -[rcx] - mov rdx, rbx
+ ;; size=1 bbWeight=0.50 PerfScore 0.50 +G_M31030_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0004 {rdx}, byrefRegs=0002 {rcx}, gcvars, byref
; gcrRegs +[rdx]
- mov rcx, r8 - call [CORINFO_HELP_UNBOX] - ; gcrRegs -[rdx] - ; gcr arg pop 0 - ;; size=12 bbWeight=0.25 PerfScore 0.88 -G_M31030_IG08: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - movzx rax, byte ptr [rbx+0x08] - cmp esi, eax
+ ; byrRegs +[rcx] + movzx rax, byte ptr [rcx] + movzx rcx, byte ptr [rdx+0x08] + ; byrRegs -[rcx] + cmp eax, ecx
sete al movzx rax, al
- ;; size=12 bbWeight=0.50 PerfScore 1.75 -G_M31030_IG09: ; bbWeight=0.50, epilog, nogc, extend - add rsp, 40 - pop rbx - pop rsi
+ ;; size=15 bbWeight=0.50 PerfScore 2.75 +G_M31030_IG07: ; bbWeight=0.50, epilog, nogc, extend
ret
- ;; size=7 bbWeight=0.50 PerfScore 1.12
+ ;; size=1 bbWeight=0.50 PerfScore 0.50
-; Total bytes of code 84, prolog size 6, PerfScore 11.50, instruction count 30, allocated bytes for code 84 (MethodHash=c96e86c9) for method System.Boolean:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 42, prolog size 0, PerfScore 6.44, instruction count 14, allocated bytes for code 42 (MethodHash=c96e86c9) for method System.Boolean:Equals(System.Object):ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -85,11 +60,8 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x06 - CountOfUnwindCodes: 3
+ SizeOfProlog : 0x00 + CountOfUnwindCodes: 0
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x06 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28 - CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)

-42 (-50.00%) : 5999.dasm - System.Byte:Equals(System.Object):ubyte:this (FullOpts)

@@ -8,76 +8,51 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 2.50) byref -> rcx this single-def
-; V01 arg1 [V01,T00] ( 5, 3.75) ref -> rbx class-hnd single-def <System.Object> -; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V01 arg1 [V01,T00] ( 4, 3.50) ref -> rdx class-hnd single-def <System.Object> +;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T01] ( 3, 4.50) ref -> rax class-hnd "spilling QMark2" <System.Byte>
-; V04 tmp2 [V04,T03] ( 2, 2 ) int -> rsi "impAppendStmt" -; V05 cse0 [V05,T04] ( 4, 1.25) long -> r8 "CSE - moderate" -; V06 cse1 [V06,T05] ( 3, 1 ) long -> rdx "CSE - moderate"
+; V04 tmp2 [V04,T03] ( 2, 2 ) int -> rax "impAppendStmt"
;
-; Lcl frame size = 40
+; Lcl frame size = 0
-G_M19224_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG - push rsi - push rbx - sub rsp, 40 - mov rbx, rdx - ; gcrRegs +[rbx] - ;; size=9 bbWeight=1 PerfScore 2.50 -G_M19224_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0002 {rcx}, byref, isz
+G_M19224_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG + ;; size=0 bbWeight=1 PerfScore 0.00 +G_M19224_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0002 {rcx}, byref, isz + ; gcrRegs +[rdx]
; byrRegs +[rcx]
- mov rax, rbx
+ mov rax, rdx
; gcrRegs +[rax] test rax, rax je SHORT G_M19224_IG04 ;; size=8 bbWeight=1 PerfScore 1.50
-G_M19224_IG03: ; bbWeight=0.25, gcrefRegs=0009 {rax rbx}, byrefRegs=0002 {rcx}, byref, isz - mov rdx, qword ptr [rax]
+G_M19224_IG03: ; bbWeight=0.25, gcrefRegs=0005 {rax rdx}, byrefRegs=0002 {rcx}, byref, isz
mov r8, 0xD1FFAB1E ; System.Byte
- cmp rdx, r8
+ cmp qword ptr [rax], r8
je SHORT G_M19224_IG06
- ;; size=18 bbWeight=0.25 PerfScore 0.88
+ ;; size=15 bbWeight=0.25 PerfScore 1.06
G_M19224_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax rbx]
+ ; gcrRegs -[rax rdx]
; byrRegs -[rcx] xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M19224_IG05: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 40 - pop rbx - pop rsi
ret
- ;; size=7 bbWeight=0.50 PerfScore 1.12 -G_M19224_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0002 {rcx}, gcvars, byref, isz - ; gcrRegs +[rbx] - ; byrRegs +[rcx] - movzx rsi, byte ptr [rcx] - cmp rdx, r8 - je SHORT G_M19224_IG08 - ;; size=9 bbWeight=0.50 PerfScore 1.62 -G_M19224_IG07: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - ; byrRegs -[rcx] - mov rdx, rbx
+ ;; size=1 bbWeight=0.50 PerfScore 0.50 +G_M19224_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0004 {rdx}, byrefRegs=0002 {rcx}, gcvars, byref
; gcrRegs +[rdx]
- mov rcx, r8 - call [CORINFO_HELP_UNBOX] - ; gcrRegs -[rdx] - ; gcr arg pop 0 - ;; size=12 bbWeight=0.25 PerfScore 0.88 -G_M19224_IG08: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - movzx rax, byte ptr [rbx+0x08] - cmp esi, eax
+ ; byrRegs +[rcx] + movzx rax, byte ptr [rcx] + movzx rcx, byte ptr [rdx+0x08] + ; byrRegs -[rcx] + cmp eax, ecx
sete al movzx rax, al
- ;; size=12 bbWeight=0.50 PerfScore 1.75 -G_M19224_IG09: ; bbWeight=0.50, epilog, nogc, extend - add rsp, 40 - pop rbx - pop rsi
+ ;; size=15 bbWeight=0.50 PerfScore 2.75 +G_M19224_IG07: ; bbWeight=0.50, epilog, nogc, extend
ret
- ;; size=7 bbWeight=0.50 PerfScore 1.12
+ ;; size=1 bbWeight=0.50 PerfScore 0.50
-; Total bytes of code 84, prolog size 6, PerfScore 11.50, instruction count 30, allocated bytes for code 84 (MethodHash=3af2b4e7) for method System.Byte:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 42, prolog size 0, PerfScore 6.44, instruction count 14, allocated bytes for code 42 (MethodHash=3af2b4e7) for method System.Byte:Equals(System.Object):ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -85,11 +60,8 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x06 - CountOfUnwindCodes: 3
+ SizeOfProlog : 0x00 + CountOfUnwindCodes: 0
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x06 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28 - CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)

+3 (+3.06%) : 18179.dasm - System.Net.Http.HttpConnection+HttpContentReadStream:Dispose(ubyte):this (FullOpts)

@@ -13,6 +13,7 @@ ; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 3, 3 ) ref -> rcx class-hnd exact single-def "Inlining Arg" <System.Net.Http.HttpConnection> ; V04 cse0 [V04,T03] ( 3, 1.50) ref -> rcx "CSE - moderate"
+; V05 cse1 [V05,T04] ( 2, 1 ) int -> rcx "CSE - moderate"
; ; Lcl frame size = 32 @@ -40,7 +41,8 @@ G_M41763_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr ;; size=6 bbWeight=0.50 PerfScore 0.88 G_M41763_IG04: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs +[rbx]
- test dl, dl
+ movzx rcx, dl + test ecx, ecx
je SHORT G_M41763_IG03 mov rcx, rbx ; gcrRegs +[rcx] @@ -57,7 +59,7 @@ G_M41763_IG04: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000 ; gcrRegs -[rcx rbx] +[rax] ; gcr arg pop 0 nop
- ;; size=31 bbWeight=0.50 PerfScore 6.62
+ ;; size=34 bbWeight=0.50 PerfScore 6.75
G_M41763_IG05: ; bbWeight=0.50, epilog, nogc, extend add rsp, 32 pop rbx @@ -80,7 +82,7 @@ G_M41763_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000 jmp SHORT G_M41763_IG03 ;; size=30 bbWeight=0.50 PerfScore 6.38
-; Total bytes of code 98, prolog size 5, PerfScore 41.25, instruction count 35, allocated bytes for code 98 (MethodHash=201e5cdc) for method System.Net.Http.HttpConnection+HttpContentReadStream:Dispose(ubyte):this (FullOpts)
+; Total bytes of code 101, prolog size 5, PerfScore 41.38, instruction count 36, allocated bytes for code 101 (MethodHash=201e5cdc) for method System.Net.Http.HttpConnection+HttpContentReadStream:Dispose(ubyte):this (FullOpts)
; ============================================================ Unwind Info:

+2 (+3.64%) : 17635.dasm - System.Net.Http.HttpConnectionPool:GetSslOptionsForRequest(System.Net.Http.HttpRequestMessage):System.Net.Security.SslClientAuthenticationOptions:this (FullOpts)

@@ -13,6 +13,7 @@ ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Version> ;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Version>
+; V05 cse0 [V05,T02] ( 2, 1 ) int -> rax "CSE - moderate"
; ; Lcl frame size = 0 @@ -26,12 +27,15 @@ G_M47920_IG02: ; bbWeight=1, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, G_M47920_IG03: ; bbWeight=0.50, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz mov rax, gword ptr [rdx+0x20] ; gcrRegs +[rax]
- cmp dword ptr [rax+0x08], 2
+ mov eax, dword ptr [rax+0x08] + ; gcrRegs -[rax] + cmp eax, 2
jl SHORT G_M47920_IG05 cmp dword ptr [rdx+0x3C], 0 je SHORT G_M47920_IG06 mov rax, gword ptr [rcx+0x98]
- ;; size=23 bbWeight=0.50 PerfScore 6.00
+ ; gcrRegs +[rax] + ;; size=25 bbWeight=0.50 PerfScore 5.62
G_M47920_IG04: ; bbWeight=0.50, epilog, nogc, extend ret ;; size=1 bbWeight=0.50 PerfScore 0.50 @@ -57,7 +61,7 @@ G_M47920_IG09: ; bbWeight=0.50, epilog, nogc, extend ret ;; size=1 bbWeight=0.50 PerfScore 0.50
-; Total bytes of code 55, prolog size 0, PerfScore 15.50, instruction count 15, allocated bytes for code 55 (MethodHash=a75444cf) for method System.Net.Http.HttpConnectionPool:GetSslOptionsForRequest(System.Net.Http.HttpRequestMessage):System.Net.Security.SslClientAuthenticationOptions:this (FullOpts)
+; Total bytes of code 57, prolog size 0, PerfScore 15.12, instruction count 16, allocated bytes for code 57 (MethodHash=a75444cf) for method System.Net.Http.HttpConnectionPool:GetSslOptionsForRequest(System.Net.Http.HttpRequestMessage):System.Net.Security.SslClientAuthenticationOptions:this (FullOpts)
; ============================================================ Unwind Info:

+4 (+8.00%) : 12880.dasm - FSharp.Compiler.NameResolution:LookupTypeNameInEnvNoArity(FSharp.Compiler.NameResolution+FullyQualifiedFlag,System.String,FSharp.Compiler.NameResolution+NameResolutionEnv):Microsoft.FSharp.Collections.FSharpList`1FSharp.Compiler.TypedTree+EntityRef

@@ -10,10 +10,11 @@ ; ; V00 arg0 [V00,T01] ( 3, 3 ) ref -> rcx class-hnd single-def <FSharp.Compiler.NameResolution+FullyQualifiedFlag> ; V01 arg1 [V01,T02] ( 3, 3 ) ref -> rdx class-hnd single-def <System.String>
-; V02 arg2 [V02,T00] ( 7, 5.50) ref -> r8 class-hnd single-def <FSharp.Compiler.NameResolution+NameResolutionEnv>
+; V02 arg2 [V02,T00] ( 7, 5 ) ref -> r8 class-hnd single-def <FSharp.Compiler.NameResolution+NameResolutionEnv>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 3, 5 ) ref -> rcx class-hnd exact "impAppendStmt" <Microsoft.FSharp.Collections.FSharpMap`2[FSharp.Compiler.Syntax.PrettyNaming+NameArityPair,FSharp.Compiler.TypedTree+EntityRef]>
+; V04 tmp1 [V04,T03] ( 3, 4 ) ref -> rcx class-hnd exact "impAppendStmt" <Microsoft.FSharp.Collections.FSharpMap`2[FSharp.Compiler.Syntax.PrettyNaming+NameArityPair,FSharp.Compiler.TypedTree+EntityRef]>
; V05 tmp2 [V05,T04] ( 3, 2 ) ref -> r9 class-hnd "Inline return value spill temp" <Internal.Utilities.Library.LayeredMultiMap`2[System.String,FSharp.Compiler.TypedTree+EntityRef]>
+; V06 cse0 [V06,T05] ( 2, 2 ) int -> r9 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -22,21 +23,22 @@ G_M18256_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M18256_IG02: ; bbWeight=1, gcrefRegs=0106 {rcx rdx r8}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[rcx rdx r8] cmp byte ptr [r8], r8b
- cmp dword ptr [rcx+0x08], 1
+ mov r9d, dword ptr [rcx+0x08] + cmp r9d, 1
je SHORT G_M18256_IG04
- ;; size=9 bbWeight=1 PerfScore 7.00
+ ;; size=13 bbWeight=1 PerfScore 6.25
G_M18256_IG03: ; bbWeight=0.50, gcrefRegs=0104 {rdx r8}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rcx] mov rcx, gword ptr [r8+0x60] ; gcrRegs +[rcx] jmp SHORT G_M18256_IG05 ;; size=6 bbWeight=0.50 PerfScore 2.00
-G_M18256_IG04: ; bbWeight=1, gcrefRegs=0104 {rdx r8}, byrefRegs=0000 {}, byref, isz
+G_M18256_IG04: ; bbWeight=0.50, gcrefRegs=0104 {rdx r8}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rcx] mov rcx, gword ptr [r8+0x58] ; gcrRegs +[rcx] jmp SHORT G_M18256_IG06
- ;; size=6 bbWeight=1 PerfScore 4.00
+ ;; size=6 bbWeight=0.50 PerfScore 2.00
G_M18256_IG05: ; bbWeight=0.50, gcrefRegs=0106 {rcx rdx r8}, byrefRegs=0000 {}, byref, isz mov r9, gword ptr [r8+0x50] ; gcrRegs +[r9] @@ -59,7 +61,7 @@ G_M18256_IG08: ; bbWeight=1, epilog, nogc, extend ; gcr arg pop 0 ;; size=6 bbWeight=1 PerfScore 2.00
-; Total bytes of code 50, prolog size 0, PerfScore 18.50, instruction count 13, allocated bytes for code 50 (MethodHash=9c94b8af) for method FSharp.Compiler.NameResolution:LookupTypeNameInEnvNoArity(FSharp.Compiler.NameResolution+FullyQualifiedFlag,System.String,FSharp.Compiler.NameResolution+NameResolutionEnv):Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+EntityRef] (FullOpts)
+; Total bytes of code 54, prolog size 0, PerfScore 15.75, instruction count 14, allocated bytes for code 54 (MethodHash=9c94b8af) for method FSharp.Compiler.NameResolution:LookupTypeNameInEnvNoArity(FSharp.Compiler.NameResolution+FullyQualifiedFlag,System.String,FSharp.Compiler.NameResolution+NameResolutionEnv):Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+EntityRef] (FullOpts)
; ============================================================ Unwind Info:

smoke_tests.nativeaot.windows.x64.checked.mch

-42 (-44.21%) : 12609.dasm - System.TypeUnificationKey:Equals(System.Object):ubyte:this (FullOpts)

@@ -7,86 +7,61 @@ ; partially interruptible ; Final local variable assignments ;
-; V00 this [V00,T02] ( 3, 2.50) byref -> rsi this single-def -; V01 arg1 [V01,T00] ( 5, 3.75) ref -> rbx class-hnd single-def <System.Object>
+; V00 this [V00,T02] ( 3, 2.50) byref -> rcx this single-def +; V01 arg1 [V01,T00] ( 4, 3.50) ref -> rdx class-hnd single-def <System.Object>
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T01] ( 3, 4.50) ref -> rax class-hnd exact "spilling QMark2" <System.TypeUnificationKey> ;* V04 tmp2 [V04 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.TypeUnificationKey> ;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Type>
-; V06 tmp4 [V06,T05] ( 2, 1 ) ref -> rdx single-def "field V04.<Type>k__BackingField (fldOffset=0x0)" P-INDEP
+; V06 tmp4 [V06,T04] ( 2, 1 ) ref -> rdx single-def "field V04.<Type>k__BackingField (fldOffset=0x0)" P-INDEP
; V07 tmp5 [V07,T03] ( 3, 3 ) ref -> rcx single-def "argument with side effect"
-; V08 cse0 [V08,T04] ( 3, 1 ) long -> rdx "CSE - moderate"
; ; Lcl frame size = 40
-G_M57822_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG - push rsi - push rbx
+G_M57822_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
sub rsp, 40
- mov rsi, rcx - ; byrRegs +[rsi] - mov rbx, rdx - ; gcrRegs +[rbx] - ;; size=12 bbWeight=1 PerfScore 2.75 -G_M57822_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz - mov rax, rbx
+ ;; size=4 bbWeight=1 PerfScore 0.25 +G_M57822_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0002 {rcx}, byref, isz + ; gcrRegs +[rdx] + ; byrRegs +[rcx] + mov rax, rdx
; gcrRegs +[rax] test rax, rax je SHORT G_M57822_IG04 ;; size=8 bbWeight=1 PerfScore 1.50
-G_M57822_IG03: ; bbWeight=0.25, gcrefRegs=0009 {rax rbx}, byrefRegs=0040 {rsi}, byref, isz - mov rdx, qword ptr [rax] - lea rax, [(reloc)] ; System.TypeUnificationKey - ; gcrRegs -[rax] - cmp rdx, rax
+G_M57822_IG03: ; bbWeight=0.25, gcrefRegs=0005 {rax rdx}, byrefRegs=0002 {rcx}, byref, isz + lea r8, [(reloc)] ; System.TypeUnificationKey + cmp qword ptr [rax], r8
je SHORT G_M57822_IG06
- ;; size=15 bbWeight=0.25 PerfScore 0.94
+ ;; size=12 bbWeight=0.25 PerfScore 1.12
G_M57822_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx] - ; byrRegs -[rsi]
+ ; gcrRegs -[rax rdx] + ; byrRegs -[rcx]
xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M57822_IG05: ; bbWeight=0.50, epilog, nogc, extend add rsp, 40
- pop rbx - pop rsi
ret
- ;; size=7 bbWeight=0.50 PerfScore 1.12 -G_M57822_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, gcvars, byref, isz - ; gcrRegs +[rbx] - ; byrRegs +[rsi] - lea rcx, [(reloc)] ; System.TypeUnificationKey - cmp rdx, rcx - je SHORT G_M57822_IG08 - ;; size=12 bbWeight=0.50 PerfScore 0.88 -G_M57822_IG07: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref - mov rdx, rbx
+ ;; size=5 bbWeight=0.50 PerfScore 0.62 +G_M57822_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0004 {rdx}, byrefRegs=0002 {rcx}, gcvars, byref
; gcrRegs +[rdx]
- lea rcx, [(reloc)] ; System.TypeUnificationKey - call CORINFO_HELP_UNBOX - ; gcrRegs -[rdx] - ; gcr arg pop 0 - ;; size=15 bbWeight=0.25 PerfScore 0.44 -G_M57822_IG08: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref - mov rdx, gword ptr [rbx+0x08] - ; gcrRegs +[rdx] - mov rcx, gword ptr [rsi]
+ ; byrRegs +[rcx] + mov rdx, gword ptr [rdx+0x08] + mov rcx, gword ptr [rcx]
; gcrRegs +[rcx]
+ ; byrRegs -[rcx]
mov rax, qword ptr [rcx] call [rax+0x260]<unknown method>
- ; gcrRegs -[rcx rdx rbx] - ; byrRegs -[rsi]
+ ; gcrRegs -[rcx rdx]
; gcr arg pop 0 nop ;; size=17 bbWeight=0.50 PerfScore 4.62
-G_M57822_IG09: ; bbWeight=0.50, epilog, nogc, extend
+G_M57822_IG07: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40
- pop rbx - pop rsi
ret
- ;; size=7 bbWeight=0.50 PerfScore 1.12
+ ;; size=5 bbWeight=0.50 PerfScore 0.62
-; Total bytes of code 95, prolog size 6, PerfScore 13.50, instruction count 32, allocated bytes for code 95 (MethodHash=5c4f1e21) for method System.TypeUnificationKey:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 53, prolog size 4, PerfScore 8.88, instruction count 17, allocated bytes for code 53 (MethodHash=5c4f1e21) for method System.TypeUnificationKey:Equals(System.Object):ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -94,11 +69,9 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x06 - CountOfUnwindCodes: 3
+ SizeOfProlog : 0x04 + CountOfUnwindCodes: 1
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x06 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28 - CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
+ CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28

-42 (-41.18%) : 8086.dasm - System.TypeUnificationKey:Equals(System.Object):ubyte:this (FullOpts)

@@ -8,87 +8,62 @@ ; control-flow guard enabled ; Final local variable assignments ;
-; V00 this [V00,T02] ( 3, 2.50) byref -> rsi this single-def -; V01 arg1 [V01,T00] ( 5, 3.75) ref -> rbx class-hnd single-def <System.Object>
+; V00 this [V00,T02] ( 3, 2.50) byref -> rcx this single-def +; V01 arg1 [V01,T00] ( 4, 3.50) ref -> rdx class-hnd single-def <System.Object>
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T01] ( 3, 4.50) ref -> rax class-hnd exact "spilling QMark2" <System.TypeUnificationKey> ;* V04 tmp2 [V04 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.TypeUnificationKey> ;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Type>
-; V06 tmp4 [V06,T05] ( 2, 1 ) ref -> rdx single-def "field V04.<Type>k__BackingField (fldOffset=0x0)" P-INDEP
+; V06 tmp4 [V06,T04] ( 2, 1 ) ref -> rdx single-def "field V04.<Type>k__BackingField (fldOffset=0x0)" P-INDEP
; V07 tmp5 [V07,T03] ( 3, 3 ) ref -> rcx single-def "argument with side effect"
-; V08 cse0 [V08,T04] ( 3, 1 ) long -> rdx "CSE - moderate"
; ; Lcl frame size = 40
-G_M57822_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG - push rsi - push rbx
+G_M57822_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
sub rsp, 40
- mov rsi, rcx - ; byrRegs +[rsi] - mov rbx, rdx - ; gcrRegs +[rbx] - ;; size=12 bbWeight=1 PerfScore 2.75 -G_M57822_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz - mov rax, rbx
+ ;; size=4 bbWeight=1 PerfScore 0.25 +G_M57822_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0002 {rcx}, byref, isz + ; gcrRegs +[rdx] + ; byrRegs +[rcx] + mov rax, rdx
; gcrRegs +[rax] test rax, rax je SHORT G_M57822_IG04 ;; size=8 bbWeight=1 PerfScore 1.50
-G_M57822_IG03: ; bbWeight=0.25, gcrefRegs=0009 {rax rbx}, byrefRegs=0040 {rsi}, byref, isz - mov rdx, qword ptr [rax] - lea rax, [(reloc)] ; System.TypeUnificationKey - ; gcrRegs -[rax] - cmp rdx, rax
+G_M57822_IG03: ; bbWeight=0.25, gcrefRegs=0005 {rax rdx}, byrefRegs=0002 {rcx}, byref, isz + lea r8, [(reloc)] ; System.TypeUnificationKey + cmp qword ptr [rax], r8
je SHORT G_M57822_IG06
- ;; size=15 bbWeight=0.25 PerfScore 0.94
+ ;; size=12 bbWeight=0.25 PerfScore 1.12
G_M57822_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx] - ; byrRegs -[rsi]
+ ; gcrRegs -[rax rdx] + ; byrRegs -[rcx]
xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M57822_IG05: ; bbWeight=0.50, epilog, nogc, extend add rsp, 40
- pop rbx - pop rsi
ret
- ;; size=7 bbWeight=0.50 PerfScore 1.12 -G_M57822_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, gcvars, byref, isz - ; gcrRegs +[rbx] - ; byrRegs +[rsi] - lea rcx, [(reloc)] ; System.TypeUnificationKey - cmp rdx, rcx - je SHORT G_M57822_IG08 - ;; size=12 bbWeight=0.50 PerfScore 0.88 -G_M57822_IG07: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref - mov rdx, rbx
+ ;; size=5 bbWeight=0.50 PerfScore 0.62 +G_M57822_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0004 {rdx}, byrefRegs=0002 {rcx}, gcvars, byref
; gcrRegs +[rdx]
- lea rcx, [(reloc)] ; System.TypeUnificationKey - call CORINFO_HELP_UNBOX - ; gcrRegs -[rdx] - ; gcr arg pop 0 - ;; size=15 bbWeight=0.25 PerfScore 0.44 -G_M57822_IG08: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref - mov rdx, gword ptr [rbx+0x08] - ; gcrRegs +[rdx] - mov rcx, gword ptr [rsi]
+ ; byrRegs +[rcx] + mov rdx, gword ptr [rdx+0x08] + mov rcx, gword ptr [rcx]
; gcrRegs +[rcx]
+ ; byrRegs -[rcx]
mov rax, qword ptr [rcx] mov rax, qword ptr [rax+0x220] call [CORINFO_HELP_DISPATCH_INDIRECT_CALL]
- ; gcrRegs -[rcx rdx rbx] - ; byrRegs -[rsi]
+ ; gcrRegs -[rcx rdx]
; gcr arg pop 0 nop ;; size=24 bbWeight=0.50 PerfScore 5.62
-G_M57822_IG09: ; bbWeight=0.50, epilog, nogc, extend
+G_M57822_IG07: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40
- pop rbx - pop rsi
ret
- ;; size=7 bbWeight=0.50 PerfScore 1.12
+ ;; size=5 bbWeight=0.50 PerfScore 0.62
-; Total bytes of code 102, prolog size 6, PerfScore 14.50, instruction count 33, allocated bytes for code 102 (MethodHash=5c4f1e21) for method System.TypeUnificationKey:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 60, prolog size 4, PerfScore 9.88, instruction count 18, allocated bytes for code 60 (MethodHash=5c4f1e21) for method System.TypeUnificationKey:Equals(System.Object):ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -96,11 +71,9 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x06 - CountOfUnwindCodes: 3
+ SizeOfProlog : 0x04 + CountOfUnwindCodes: 1
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x06 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28 - CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
+ CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28

-45 (-36.00%) : 13318.dasm - Internal.TypeSystem.TypeSystemContext+GenericTypeInstanceKey:Equals(System.Object):ubyte:this (FullOpts)

@@ -7,91 +7,65 @@ ; partially interruptible ; Final local variable assignments ;
-; V00 this [V00,T02] ( 3, 2.50) byref -> rsi this single-def -; V01 arg1 [V01,T00] ( 5, 3.75) ref -> rbx class-hnd single-def <System.Object>
+; V00 this [V00,T02] ( 3, 2.50) byref -> rcx this single-def +; V01 arg1 [V01,T00] ( 4, 3.50) ref -> rdx class-hnd single-def <System.Object>
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T01] ( 3, 4.50) ref -> rax class-hnd exact "spilling QMark2" <Internal.TypeSystem.TypeSystemContext+GenericTypeInstanceKey> ; V04 tmp2 [V04 ] ( 2, 2 ) struct (24) [rsp+0x20] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Internal.TypeSystem.TypeSystemContext+GenericTypeInstanceKey>
-; V05 cse0 [V05,T03] ( 3, 1 ) long -> rdx "CSE - moderate"
; ; Lcl frame size = 56
-G_M12381_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG - push rsi - push rbx
+G_M12381_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
sub rsp, 56 xorps xmm4, xmm4 movaps xmmword ptr [rsp+0x20], xmm4 xor eax, eax mov qword ptr [rsp+0x30], rax
- mov rsi, rcx - ; byrRegs +[rsi] - mov rbx, rdx - ; gcrRegs +[rbx] - ;; size=27 bbWeight=1 PerfScore 6.33 -G_M12381_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz - mov rax, rbx
+ ;; size=19 bbWeight=1 PerfScore 3.83 +G_M12381_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0002 {rcx}, byref, isz + ; gcrRegs +[rdx] + ; byrRegs +[rcx] + mov rax, rdx
; gcrRegs +[rax] test rax, rax je SHORT G_M12381_IG04 ;; size=8 bbWeight=1 PerfScore 1.50
-G_M12381_IG03: ; bbWeight=0.25, gcrefRegs=0009 {rax rbx}, byrefRegs=0040 {rsi}, byref, isz - mov rdx, qword ptr [rax] - lea rax, [(reloc)] ; Internal.TypeSystem.TypeSystemContext+GenericTypeInstanceKey - ; gcrRegs -[rax] - cmp rdx, rax
+G_M12381_IG03: ; bbWeight=0.25, gcrefRegs=0005 {rax rdx}, byrefRegs=0002 {rcx}, byref, isz + lea r8, [(reloc)] ; Internal.TypeSystem.TypeSystemContext+GenericTypeInstanceKey + cmp qword ptr [rax], r8
je SHORT G_M12381_IG06
- ;; size=15 bbWeight=0.25 PerfScore 0.94
+ ;; size=12 bbWeight=0.25 PerfScore 1.12
G_M12381_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx] - ; byrRegs -[rsi]
+ ; gcrRegs -[rax rdx] + ; byrRegs -[rcx]
xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M12381_IG05: ; bbWeight=0.50, epilog, nogc, extend add rsp, 56
- pop rbx - pop rsi
ret
- ;; size=7 bbWeight=0.50 PerfScore 1.12 -G_M12381_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, gcvars, byref, isz - ; gcrRegs +[rbx] - ; byrRegs +[rsi] - lea rcx, [(reloc)] ; Internal.TypeSystem.TypeSystemContext+GenericTypeInstanceKey - cmp rdx, rcx - je SHORT G_M12381_IG08 - ;; size=12 bbWeight=0.50 PerfScore 0.88 -G_M12381_IG07: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref - mov rdx, rbx
+ ;; size=5 bbWeight=0.50 PerfScore 0.62 +G_M12381_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0004 {rdx}, byrefRegs=0002 {rcx}, gcvars, byref, nogc
; gcrRegs +[rdx]
- lea rcx, [(reloc)] ; Internal.TypeSystem.TypeSystemContext+GenericTypeInstanceKey - call CORINFO_HELP_UNBOX - ; gcrRegs -[rdx] - ; gcr arg pop 0 - ;; size=15 bbWeight=0.25 PerfScore 0.44 -G_M12381_IG08: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, nogc - movups xmm0, xmmword ptr [rbx+0x08] - movups xmmword ptr [rsp+0x20], xmm0 - mov rdx, qword ptr [rbx+0x18] - mov qword ptr [rsp+0x30], rdx - ;; size=18 bbWeight=0.50 PerfScore 4.00 -G_M12381_IG09: ; bbWeight=0.50, extend - lea rdx, [rsp+0x20] - mov rcx, rsi
; byrRegs +[rcx]
+ movups xmm0, xmmword ptr [rdx+0x08] + movups xmmword ptr [rsp+0x20], xmm0 + mov rax, qword ptr [rdx+0x18] + mov qword ptr [rsp+0x30], rax + ;; size=18 bbWeight=0.50 PerfScore 4.00 +G_M12381_IG07: ; bbWeight=0.50, extend + lea rdx, [rsp+0x20] + ; gcrRegs -[rdx]
call <unknown method>
- ; gcrRegs -[rbx] - ; byrRegs -[rcx rsi]
+ ; byrRegs -[rcx]
; gcr arg pop 0 nop
- ;; size=14 bbWeight=0.50 PerfScore 1.00 -G_M12381_IG10: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=11 bbWeight=0.50 PerfScore 0.88 +G_M12381_IG08: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 56
- pop rbx - pop rsi
ret
- ;; size=7 bbWeight=0.50 PerfScore 1.12
+ ;; size=5 bbWeight=0.50 PerfScore 0.62
-; Total bytes of code 125, prolog size 21, PerfScore 17.46, instruction count 39, allocated bytes for code 125 (MethodHash=c07fcfa2) for method Internal.TypeSystem.TypeSystemContext+GenericTypeInstanceKey:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 80, prolog size 19, PerfScore 12.71, instruction count 23, allocated bytes for code 80 (MethodHash=c07fcfa2) for method Internal.TypeSystem.TypeSystemContext+GenericTypeInstanceKey:Equals(System.Object):ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -99,11 +73,9 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x06 - CountOfUnwindCodes: 3
+ SizeOfProlog : 0x04 + CountOfUnwindCodes: 1
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x06 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 6 * 8 + 8 = 56 = 0x38 - CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
+ CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 6 * 8 + 8 = 56 = 0x38

+27 (+3.16%) : 20271.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)

@@ -8,9 +8,9 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T06] ( 18, 21 ) ref -> rbx class-hnd exact single-def <System.Collections.Generic.List`1[System.String]>
-; V01 loc0 [V01,T02] ( 13, 47.50) ref -> rsi class-hnd exact single-def <System.String>
+; V01 loc0 [V01,T03] ( 13, 47.50) ref -> rsi class-hnd exact single-def <System.String>
; V02 loc1 [V02 ] ( 20, 54 ) struct (16) [rbp+0x10] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Span`1[ushort]>
-; V03 loc2 [V03,T00] ( 39,149.08) int -> r14
+; V03 loc2 [V03,T00] ( 41,183.08) int -> r14
; V04 loc3 [V04,T19] ( 4, 2 ) int -> rcx ;* V05 loc4 [V05 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[ushort]> ; V06 loc5 [V06,T04] ( 8, 25 ) int -> r14 @@ -41,11 +41,11 @@ ; V31 cse3 [V31,T10] ( 3, 12 ) ref -> rcx "CSE - aggressive" ; V32 cse4 [V32,T24] ( 3, 1.50) long -> r15 "CSE - moderate" ; V33 cse5 [V33,T25] ( 3, 1.50) int -> rdi "CSE - moderate"
-; V34 cse6 [V34,T03] ( 15, 30.54) int -> rdi "CSE - aggressive"
+; V34 cse6 [V34,T01] ( 17, 64.54) int -> rdi "CSE - aggressive"
; V35 cse7 [V35,T15] ( 2, 8 ) int -> r8 "CSE - aggressive" ; V36 cse8 [V36,T13] ( 3, 11.88) int -> rcx "CSE - aggressive" ; V37 cse9 [V37,T16] ( 7, 3.50) int -> r13 "CSE - moderate"
-; V38 cse10 [V38,T01] ( 3, 48 ) long -> rdx "CSE - aggressive"
+; V38 cse10 [V38,T02] ( 3, 48 ) long -> rdx "CSE - aggressive"
; V39 cse11 [V39,T12] ( 3, 12 ) long -> rdx "CSE - aggressive" ; ; Lcl frame size = 64 @@ -69,24 +69,24 @@ G_M28069_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=39 bbWeight=1 PerfScore 12.25 G_M28069_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref cmp dword ptr [rbx+0x10], 0
- je G_M28069_IG23
+ je G_M28069_IG22
;; size=10 bbWeight=1 PerfScore 4.00 G_M28069_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz mov rax, gword ptr [rbx+0x08] ; gcrRegs +[rax] cmp dword ptr [rax+0x08], 0
- jbe G_M28069_IG29
+ jbe G_M28069_IG28
mov rsi, gword ptr [rax+0x10] ; gcrRegs +[rsi] mov edi, dword ptr [rsi+0x08] cmp edi, 100
- jg G_M28069_IG23
+ jg G_M28069_IG22
lea ecx, [rdi+0x02] mov eax, ecx ; gcrRegs -[rax] mov r8d, 2 mul rdx:rax, r8
- jb G_M28069_IG28
+ jb G_M28069_IG27
mov rdx, rax test rdx, rdx je SHORT G_M28069_IG05 @@ -110,97 +110,97 @@ G_M28069_IG04: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 ;; size=30 bbWeight=0.50 PerfScore 4.25 G_M28069_IG05: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref test ecx, ecx
- jl G_M28069_IG30
+ jl G_M28069_IG29
mov bword ptr [rbp+0x10], rdx mov dword ptr [rbp+0x18], ecx xor r14d, r14d test edi, edi
- jle G_M28069_IG14
+ jle G_M28069_IG13
;; size=26 bbWeight=0.50 PerfScore 2.38 G_M28069_IG06: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz mov ecx, r14d movzx rcx, word ptr [rsi+2*rcx+0x0C] cmp ecx, 39
- jne SHORT G_M28069_IG10
+ jne SHORT G_M28069_IG09
;; size=13 bbWeight=4 PerfScore 14.00 G_M28069_IG07: ; bbWeight=16, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz cmp r14d, dword ptr [rbp+0x18]
- jae G_M28069_IG29
+ jae G_M28069_IG28
mov rcx, bword ptr [rbp+0x10] ; byrRegs +[rcx] mov edx, r14d
+ cmp r14d, edi + jae G_M28069_IG28
movzx rax, word ptr [rsi+2*rdx+0x0C] mov word ptr [rcx+2*rdx], ax inc r14d cmp edi, r14d
- jle SHORT G_M28069_IG08
+ jle G_M28069_IG22 + cmp r14d, edi + jae G_M28069_IG28
mov ecx, r14d ; byrRegs -[rcx] cmp word ptr [rsi+2*rcx+0x0C], 39 jne SHORT G_M28069_IG07
- ;; size=45 bbWeight=16 PerfScore 208.00 -G_M28069_IG08: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz - cmp edi, r14d - jg SHORT G_M28069_IG11 - ;; size=5 bbWeight=2 PerfScore 2.50 -G_M28069_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[rbx rsi] - jmp G_M28069_IG23 - ;; size=5 bbWeight=0.50 PerfScore 1.00 -G_M28069_IG10: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[rbx rsi]
+ ;; size=67 bbWeight=16 PerfScore 248.00 +G_M28069_IG08: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz + jmp SHORT G_M28069_IG10 + ;; size=2 bbWeight=4 PerfScore 8.00 +G_M28069_IG09: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
cmp ecx, 121
- je SHORT G_M28069_IG13
+ je SHORT G_M28069_IG12
;; size=5 bbWeight=2 PerfScore 2.50
-G_M28069_IG11: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG10: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
cmp r14d, dword ptr [rbp+0x18]
- jae G_M28069_IG29
+ jae G_M28069_IG28
mov rcx, bword ptr [rbp+0x10] ; byrRegs +[rcx] mov edx, r14d
+ cmp r14d, edi + jae G_M28069_IG28
movzx rax, word ptr [rsi+2*rdx+0x0C] mov word ptr [rcx+2*rdx], ax inc r14d cmp edi, r14d
- jg SHORT G_M28069_IG06 - ;; size=34 bbWeight=4 PerfScore 35.00 -G_M28069_IG12: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ jg G_M28069_IG06 + ;; size=47 bbWeight=4 PerfScore 40.00 +G_M28069_IG11: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rcx]
- jmp SHORT G_M28069_IG14
+ jmp SHORT G_M28069_IG13
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M28069_IG13: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+G_M28069_IG12: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
cmp r14d, dword ptr [rbp+0x18]
- jae G_M28069_IG29
+ jae G_M28069_IG28
mov rcx, bword ptr [rbp+0x10] ; byrRegs +[rcx] mov edx, r14d mov word ptr [rcx+2*rdx], 121 ;; size=23 bbWeight=0.50 PerfScore 2.62
-G_M28069_IG14: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG13: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rcx] lea ecx, [rdi-0x01] cmp ecx, r14d
- jle G_M28069_IG23
+ jle G_M28069_IG22
lea ecx, [r14+0x01] cmp ecx, edi
- jae G_M28069_IG29
+ jae G_M28069_IG28
lea ecx, [r14+0x01] mov r15d, ecx cmp word ptr [rsi+2*r15+0x0C], 121
- jne G_M28069_IG23
+ jne G_M28069_IG22
lea r13d, [r14+0x02] cmp edi, r13d
- jle SHORT G_M28069_IG15
+ jle SHORT G_M28069_IG14
cmp r13d, edi
- jae G_M28069_IG29
+ jae G_M28069_IG28
mov ecx, r13d cmp word ptr [rsi+2*rcx+0x0C], 121
- je G_M28069_IG23
+ je G_M28069_IG22
;; size=77 bbWeight=0.50 PerfScore 7.75
-G_M28069_IG15: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG14: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
lea ecx, [r14+0x03] cmp ecx, dword ptr [rbp+0x18]
- jl SHORT G_M28069_IG16
+ jl SHORT G_M28069_IG15
lea rcx, gword ptr [(reloc)] ; gcrRegs +[rcx] lea rdx, gword ptr [(reloc)] @@ -209,37 +209,37 @@ G_M28069_IG15: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 ; gcrRegs -[rcx rdx] ; gcr arg pop 0 ;; size=28 bbWeight=0.50 PerfScore 2.75
-G_M28069_IG16: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG15: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
lea ecx, [r14+0x01] cmp ecx, dword ptr [rbp+0x18]
- jae G_M28069_IG29
+ jae G_M28069_IG28
mov rcx, bword ptr [rbp+0x10] ; byrRegs +[rcx] mov word ptr [rcx+2*r15], 121 cmp r13d, dword ptr [rbp+0x18]
- jae G_M28069_IG29
+ jae G_M28069_IG28
mov rcx, bword ptr [rbp+0x10] mov eax, r13d mov word ptr [rcx+2*rax], 121 lea ecx, [r14+0x03] ; byrRegs -[rcx] cmp ecx, dword ptr [rbp+0x18]
- jae G_M28069_IG29
+ jae G_M28069_IG28
mov rcx, bword ptr [rbp+0x10] ; byrRegs +[rcx] lea eax, [r14+0x03] mov word ptr [rcx+2*rax], 121 mov r14d, r13d cmp edi, r14d
- jle SHORT G_M28069_IG20
+ jle SHORT G_M28069_IG19
test r14d, r14d
- jl SHORT G_M28069_IG19
+ jl SHORT G_M28069_IG18
;; size=87 bbWeight=0.50 PerfScore 9.75
-G_M28069_IG17: ; bbWeight=3.96, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG16: ; bbWeight=3.96, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rcx] lea ecx, [r14+0x02] cmp ecx, dword ptr [rbp+0x18]
- jae G_M28069_IG29
+ jae G_M28069_IG28
mov rax, bword ptr [rbp+0x10] ; byrRegs +[rax] mov edx, r14d @@ -247,29 +247,29 @@ G_M28069_IG17: ; bbWeight=3.96, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 mov word ptr [rax+2*rcx], dx inc r14d cmp edi, r14d
- jg SHORT G_M28069_IG17
+ jg SHORT G_M28069_IG16
;; size=37 bbWeight=3.96 PerfScore 36.63
-G_M28069_IG18: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG17: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rax]
- jmp SHORT G_M28069_IG20
+ jmp SHORT G_M28069_IG19
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M28069_IG19: ; bbWeight=0.04, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG18: ; bbWeight=0.04, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
lea ecx, [r14+0x02] cmp ecx, dword ptr [rbp+0x18] ...

+27 (+3.16%) : 22931.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)

@@ -8,9 +8,9 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T06] ( 18, 21 ) ref -> rbx class-hnd exact single-def <System.Collections.Generic.List`1[System.String]>
-; V01 loc0 [V01,T02] ( 13, 47.50) ref -> rsi class-hnd exact single-def <System.String>
+; V01 loc0 [V01,T03] ( 13, 47.50) ref -> rsi class-hnd exact single-def <System.String>
; V02 loc1 [V02 ] ( 20, 54 ) struct (16) [rbp+0x10] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Span`1[ushort]>
-; V03 loc2 [V03,T00] ( 39,149.08) int -> r14
+; V03 loc2 [V03,T00] ( 41,183.08) int -> r14
; V04 loc3 [V04,T19] ( 4, 2 ) int -> rcx ;* V05 loc4 [V05 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[ushort]> ; V06 loc5 [V06,T04] ( 8, 25 ) int -> r14 @@ -41,11 +41,11 @@ ; V31 cse3 [V31,T10] ( 3, 12 ) ref -> rcx "CSE - aggressive" ; V32 cse4 [V32,T24] ( 3, 1.50) long -> r15 "CSE - moderate" ; V33 cse5 [V33,T25] ( 3, 1.50) int -> rdi "CSE - moderate"
-; V34 cse6 [V34,T03] ( 15, 30.54) int -> rdi "CSE - aggressive"
+; V34 cse6 [V34,T01] ( 17, 64.54) int -> rdi "CSE - aggressive"
; V35 cse7 [V35,T15] ( 2, 8 ) int -> r8 "CSE - aggressive" ; V36 cse8 [V36,T13] ( 3, 11.88) int -> rcx "CSE - aggressive" ; V37 cse9 [V37,T16] ( 7, 3.50) int -> r13 "CSE - moderate"
-; V38 cse10 [V38,T01] ( 3, 48 ) long -> rdx "CSE - aggressive"
+; V38 cse10 [V38,T02] ( 3, 48 ) long -> rdx "CSE - aggressive"
; V39 cse11 [V39,T12] ( 3, 12 ) long -> rdx "CSE - aggressive" ; ; Lcl frame size = 64 @@ -69,24 +69,24 @@ G_M28069_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=39 bbWeight=1 PerfScore 12.25 G_M28069_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref cmp dword ptr [rbx+0x10], 0
- je G_M28069_IG23
+ je G_M28069_IG22
;; size=10 bbWeight=1 PerfScore 4.00 G_M28069_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz mov rax, gword ptr [rbx+0x08] ; gcrRegs +[rax] cmp dword ptr [rax+0x08], 0
- jbe G_M28069_IG29
+ jbe G_M28069_IG28
mov rsi, gword ptr [rax+0x10] ; gcrRegs +[rsi] mov edi, dword ptr [rsi+0x08] cmp edi, 100
- jg G_M28069_IG23
+ jg G_M28069_IG22
lea ecx, [rdi+0x02] mov eax, ecx ; gcrRegs -[rax] mov r8d, 2 mul rdx:rax, r8
- jb G_M28069_IG28
+ jb G_M28069_IG27
mov rdx, rax test rdx, rdx je SHORT G_M28069_IG05 @@ -110,97 +110,97 @@ G_M28069_IG04: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 ;; size=30 bbWeight=0.50 PerfScore 4.25 G_M28069_IG05: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref test ecx, ecx
- jl G_M28069_IG30
+ jl G_M28069_IG29
mov bword ptr [rbp+0x10], rdx mov dword ptr [rbp+0x18], ecx xor r14d, r14d test edi, edi
- jle G_M28069_IG14
+ jle G_M28069_IG13
;; size=26 bbWeight=0.50 PerfScore 2.38 G_M28069_IG06: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz mov ecx, r14d movzx rcx, word ptr [rsi+2*rcx+0x0C] cmp ecx, 39
- jne SHORT G_M28069_IG10
+ jne SHORT G_M28069_IG09
;; size=13 bbWeight=4 PerfScore 14.00 G_M28069_IG07: ; bbWeight=16, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz cmp r14d, dword ptr [rbp+0x18]
- jae G_M28069_IG29
+ jae G_M28069_IG28
mov rcx, bword ptr [rbp+0x10] ; byrRegs +[rcx] mov edx, r14d
+ cmp r14d, edi + jae G_M28069_IG28
movzx rax, word ptr [rsi+2*rdx+0x0C] mov word ptr [rcx+2*rdx], ax inc r14d cmp edi, r14d
- jle SHORT G_M28069_IG08
+ jle G_M28069_IG22 + cmp r14d, edi + jae G_M28069_IG28
mov ecx, r14d ; byrRegs -[rcx] cmp word ptr [rsi+2*rcx+0x0C], 39 jne SHORT G_M28069_IG07
- ;; size=45 bbWeight=16 PerfScore 208.00 -G_M28069_IG08: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz - cmp edi, r14d - jg SHORT G_M28069_IG11 - ;; size=5 bbWeight=2 PerfScore 2.50 -G_M28069_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[rbx rsi] - jmp G_M28069_IG23 - ;; size=5 bbWeight=0.50 PerfScore 1.00 -G_M28069_IG10: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[rbx rsi]
+ ;; size=67 bbWeight=16 PerfScore 248.00 +G_M28069_IG08: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz + jmp SHORT G_M28069_IG10 + ;; size=2 bbWeight=4 PerfScore 8.00 +G_M28069_IG09: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
cmp ecx, 121
- je SHORT G_M28069_IG13
+ je SHORT G_M28069_IG12
;; size=5 bbWeight=2 PerfScore 2.50
-G_M28069_IG11: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG10: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
cmp r14d, dword ptr [rbp+0x18]
- jae G_M28069_IG29
+ jae G_M28069_IG28
mov rcx, bword ptr [rbp+0x10] ; byrRegs +[rcx] mov edx, r14d
+ cmp r14d, edi + jae G_M28069_IG28
movzx rax, word ptr [rsi+2*rdx+0x0C] mov word ptr [rcx+2*rdx], ax inc r14d cmp edi, r14d
- jg SHORT G_M28069_IG06 - ;; size=34 bbWeight=4 PerfScore 35.00 -G_M28069_IG12: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ jg G_M28069_IG06 + ;; size=47 bbWeight=4 PerfScore 40.00 +G_M28069_IG11: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rcx]
- jmp SHORT G_M28069_IG14
+ jmp SHORT G_M28069_IG13
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M28069_IG13: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+G_M28069_IG12: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
cmp r14d, dword ptr [rbp+0x18]
- jae G_M28069_IG29
+ jae G_M28069_IG28
mov rcx, bword ptr [rbp+0x10] ; byrRegs +[rcx] mov edx, r14d mov word ptr [rcx+2*rdx], 121 ;; size=23 bbWeight=0.50 PerfScore 2.62
-G_M28069_IG14: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG13: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rcx] lea ecx, [rdi-0x01] cmp ecx, r14d
- jle G_M28069_IG23
+ jle G_M28069_IG22
lea ecx, [r14+0x01] cmp ecx, edi
- jae G_M28069_IG29
+ jae G_M28069_IG28
lea ecx, [r14+0x01] mov r15d, ecx cmp word ptr [rsi+2*r15+0x0C], 121
- jne G_M28069_IG23
+ jne G_M28069_IG22
lea r13d, [r14+0x02] cmp edi, r13d
- jle SHORT G_M28069_IG15
+ jle SHORT G_M28069_IG14
cmp r13d, edi
- jae G_M28069_IG29
+ jae G_M28069_IG28
mov ecx, r13d cmp word ptr [rsi+2*rcx+0x0C], 121
- je G_M28069_IG23
+ je G_M28069_IG22
;; size=77 bbWeight=0.50 PerfScore 7.75
-G_M28069_IG15: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG14: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
lea ecx, [r14+0x03] cmp ecx, dword ptr [rbp+0x18]
- jl SHORT G_M28069_IG16
+ jl SHORT G_M28069_IG15
lea rcx, gword ptr [(reloc)] ; gcrRegs +[rcx] lea rdx, gword ptr [(reloc)] @@ -209,37 +209,37 @@ G_M28069_IG15: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 ; gcrRegs -[rcx rdx] ; gcr arg pop 0 ;; size=28 bbWeight=0.50 PerfScore 2.75
-G_M28069_IG16: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG15: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
lea ecx, [r14+0x01] cmp ecx, dword ptr [rbp+0x18]
- jae G_M28069_IG29
+ jae G_M28069_IG28
mov rcx, bword ptr [rbp+0x10] ; byrRegs +[rcx] mov word ptr [rcx+2*r15], 121 cmp r13d, dword ptr [rbp+0x18]
- jae G_M28069_IG29
+ jae G_M28069_IG28
mov rcx, bword ptr [rbp+0x10] mov eax, r13d mov word ptr [rcx+2*rax], 121 lea ecx, [r14+0x03] ; byrRegs -[rcx] cmp ecx, dword ptr [rbp+0x18]
- jae G_M28069_IG29
+ jae G_M28069_IG28
mov rcx, bword ptr [rbp+0x10] ; byrRegs +[rcx] lea eax, [r14+0x03] mov word ptr [rcx+2*rax], 121 mov r14d, r13d cmp edi, r14d
- jle SHORT G_M28069_IG20
+ jle SHORT G_M28069_IG19
test r14d, r14d
- jl SHORT G_M28069_IG19
+ jl SHORT G_M28069_IG18
;; size=87 bbWeight=0.50 PerfScore 9.75
-G_M28069_IG17: ; bbWeight=3.96, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG16: ; bbWeight=3.96, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rcx] lea ecx, [r14+0x02] cmp ecx, dword ptr [rbp+0x18]
- jae G_M28069_IG29
+ jae G_M28069_IG28
mov rax, bword ptr [rbp+0x10] ; byrRegs +[rax] mov edx, r14d @@ -247,29 +247,29 @@ G_M28069_IG17: ; bbWeight=3.96, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 mov word ptr [rax+2*rcx], dx inc r14d cmp edi, r14d
- jg SHORT G_M28069_IG17
+ jg SHORT G_M28069_IG16
;; size=37 bbWeight=3.96 PerfScore 36.63
-G_M28069_IG18: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG17: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rax]
- jmp SHORT G_M28069_IG20
+ jmp SHORT G_M28069_IG19
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M28069_IG19: ; bbWeight=0.04, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG18: ; bbWeight=0.04, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
lea ecx, [r14+0x02] cmp ecx, dword ptr [rbp+0x18] ...

+3 (+3.26%) : 5491.dasm - System.IO.FileStream:ValidateHandle(Microsoft.Win32.SafeHandles.SafeFileHandle,int,int,ubyte) (FullOpts)

@@ -13,6 +13,7 @@ ; V02 arg2 [V02,T02] ( 3, 3 ) int -> r8 single-def ; V03 arg3 [V03,T03] ( 3, 3 ) ubyte -> rsi single-def ; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V05 cse0 [V05,T04] ( 2, 2 ) int -> rcx "CSE - aggressive"
; ; Lcl frame size = 40 @@ -30,9 +31,10 @@ G_M20345_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr call System.IO.FileStream:ValidateHandle(Microsoft.Win32.SafeHandles.SafeFileHandle,int,int) ; gcrRegs -[rcx] ; gcr arg pop 0
- test sil, sil
+ movzx rcx, sil + test ecx, ecx
je SHORT G_M20345_IG05
- ;; size=13 bbWeight=1 PerfScore 2.50
+ ;; size=16 bbWeight=1 PerfScore 2.75
G_M20345_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz cmp byte ptr [rbx], bl mov rcx, rbx @@ -77,7 +79,7 @@ G_M20345_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=13 bbWeight=0 PerfScore 0.00
-; Total bytes of code 92, prolog size 6, PerfScore 13.00, instruction count 29, allocated bytes for code 92 (MethodHash=9092b086) for method System.IO.FileStream:ValidateHandle(Microsoft.Win32.SafeHandles.SafeFileHandle,int,int,ubyte) (FullOpts)
+; Total bytes of code 95, prolog size 6, PerfScore 13.25, instruction count 30, allocated bytes for code 95 (MethodHash=9092b086) for method System.IO.FileStream:ValidateHandle(Microsoft.Win32.SafeHandles.SafeFileHandle,int,int,ubyte) (FullOpts)
; ============================================================ Unwind Info:

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
aspnet.run.windows.x64.checked.mch 786 383 296 107 -3,963 +3,567
benchmarks.run.windows.x64.checked.mch 108 62 30 16 -656 +114
benchmarks.run_pgo.windows.x64.checked.mch 853 438 313 102 -5,119 +3,040
benchmarks.run_tiered.windows.x64.checked.mch 35 22 5 8 -262 +31
coreclr_tests.run.windows.x64.checked.mch 898 408 304 186 -4,594 +1,921
libraries.crossgen2.windows.x64.checked.mch 395 170 149 76 -1,612 +667
libraries.pmi.windows.x64.checked.mch 706 315 230 161 -3,735 +1,199
libraries_tests.run.windows.x64.Release.mch 5,271 2,892 1,608 771 -58,724 +23,071
librariestestsnotieredcompilation.run.windows.x64.Release.mch 1,501 694 473 334 -6,148 +5,083
realworld.run.windows.x64.checked.mch 132 49 57 26 -634 +415
smoke_tests.nativeaot.windows.x64.checked.mch 224 130 68 26 -4,644 +331
10,909 5,563 3,533 1,813 -90,091 +39,439

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
aspnet.run.windows.x64.checked.mch 129,268 61,702 67,566 0 (0.00%) 22 (0.02%)
benchmarks.run.windows.x64.checked.mch 27,925 4 27,921 0 (0.00%) 1 (0.00%)
benchmarks.run_pgo.windows.x64.checked.mch 103,104 50,327 52,777 4 (0.00%) 79 (0.08%)
benchmarks.run_tiered.windows.x64.checked.mch 53,510 36,872 16,638 1 (0.00%) 1 (0.00%)
coreclr_tests.run.windows.x64.checked.mch 574,303 341,481 232,822 3 (0.00%) 82 (0.01%)
libraries.crossgen2.windows.x64.checked.mch 243,731 15 243,716 0 (0.00%) 0 (0.00%)
libraries.pmi.windows.x64.checked.mch 309,225 6 309,219 0 (0.00%) 3 (0.00%)
libraries_tests.run.windows.x64.Release.mch 680,707 485,046 195,661 0 (0.00%) 717 (0.11%)
librariestestsnotieredcompilation.run.windows.x64.Release.mch 320,533 21,924 298,609 0 (0.00%) 3 (0.00%)
realworld.run.windows.x64.checked.mch 36,609 3 36,606 0 (0.00%) 1 (0.00%)
smoke_tests.nativeaot.windows.x64.checked.mch 32,388 11 32,377 0 (0.00%) 0 (0.00%)
2,511,303 997,391 1,513,912 8 (0.00%) 909 (0.04%)

jit-analyze output

aspnet.run.windows.x64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 47018038 (overridden on cmd)
Total bytes of diff: 47017642 (overridden on cmd)
Total bytes of delta: -396 (-0.00 % of base)
    diff is a regression.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         164 : 63083.dasm (11.23 % of base)
          56 : 50464.dasm (1.51 % of base)
          56 : 71497.dasm (1.51 % of base)
          50 : 119083.dasm (1.21 % of base)
          44 : 101362.dasm (1.20 % of base)
          44 : 15767.dasm (1.20 % of base)
          44 : 25698.dasm (1.21 % of base)
          44 : 55175.dasm (1.21 % of base)
          44 : 64109.dasm (1.21 % of base)
          44 : 68164.dasm (1.21 % of base)
          44 : 117247.dasm (2.67 % of base)
          44 : 127782.dasm (2.73 % of base)
          44 : 23190.dasm (1.21 % of base)
          44 : 25448.dasm (1.21 % of base)
          44 : 49251.dasm (1.21 % of base)
          44 : 81246.dasm (1.21 % of base)
          44 : 81953.dasm (1.21 % of base)
          44 : 119056.dasm (1.21 % of base)
          44 : 128995.dasm (1.20 % of base)
          44 : 51886.dasm (1.21 % of base)

Top file improvements (bytes):
         -62 : 25579.dasm (-0.80 % of base)
         -42 : 84351.dasm (-4.35 % of base)
         -41 : 114478.dasm (-49.40 % of base)
         -41 : 101179.dasm (-49.40 % of base)
         -41 : 119318.dasm (-1.44 % of base)
         -41 : 128844.dasm (-49.40 % of base)
         -41 : 101810.dasm (-1.44 % of base)
         -41 : 129167.dasm (-1.44 % of base)
         -40 : 126535.dasm (-1.00 % of base)
         -40 : 123421.dasm (-1.20 % of base)
         -39 : 47348.dasm (-1.44 % of base)
         -39 : 66890.dasm (-1.44 % of base)
         -35 : 35137.dasm (-3.22 % of base)
         -34 : 58848.dasm (-0.50 % of base)
         -34 : 69146.dasm (-0.50 % of base)
         -34 : 34777.dasm (-0.50 % of base)
         -34 : 78239.dasm (-0.50 % of base)
         -33 : 126349.dasm (-2.28 % of base)
         -33 : 36831.dasm (-14.67 % of base)
         -33 : 57488.dasm (-14.86 % of base)

73 total files with Code Size differences (34 improved, 39 regressed), 20 unchanged.

Top method regressions (bytes):
         164 (11.23 % of base) : 63083.dasm - Microsoft.EntityFrameworkCore.DbContext:Microsoft.EntityFrameworkCore.Internal.IDbContextPoolable.SnapshotConfiguration():this (FullOpts)
          56 (1.51 % of base) : 50464.dasm - System.Diagnostics.Tracing.EventProvider:WriteEvent(byref,long,ulong,ulong,System.Object[]):ubyte:this (Tier1)
          56 (1.51 % of base) : 71497.dasm - System.Diagnostics.Tracing.EventProvider:WriteEvent(byref,long,ulong,ulong,System.Object[]):ubyte:this (Tier1)
          50 (1.21 % of base) : 119083.dasm - Microsoft.AspNetCore.Mvc.ModelBinding.DefaultModelBindingContext:CreateBindingContext(Microsoft.AspNetCore.Mvc.ActionContext,Microsoft.AspNetCore.Mvc.ModelBinding.IValueProvider,Microsoft.AspNetCore.Mvc.ModelBinding.ModelMetadata,Microsoft.AspNetCore.Mvc.ModelBinding.BindingInfo,System.String):Microsoft.AspNetCore.Mvc.ModelBinding.ModelBindingContext (Tier1)
          44 (1.20 % of base) : 101362.dasm - System.Diagnostics.Tracing.EventProvider:WriteEvent(byref,long,ulong,ulong,System.Object[]):ubyte:this (Tier1)
          44 (1.20 % of base) : 15767.dasm - System.Diagnostics.Tracing.EventProvider:WriteEvent(byref,long,ulong,ulong,System.Object[]):ubyte:this (Tier1)
          44 (1.21 % of base) : 25698.dasm - System.Diagnostics.Tracing.EventProvider:WriteEvent(byref,long,ulong,ulong,System.Object[]):ubyte:this (Tier1)
          44 (1.21 % of base) : 55175.dasm - System.Diagnostics.Tracing.EventProvider:WriteEvent(byref,long,ulong,ulong,System.Object[]):ubyte:this (Tier1)
          44 (1.21 % of base) : 64109.dasm - System.Diagnostics.Tracing.EventProvider:WriteEvent(byref,long,ulong,ulong,System.Object[]):ubyte:this (Tier1)
          44 (1.21 % of base) : 68164.dasm - System.Diagnostics.Tracing.EventProvider:WriteEvent(byref,long,ulong,ulong,System.Object[]):ubyte:this (Tier1)
          44 (1.21 % of base) : 23190.dasm - System.Diagnostics.Tracing.EventProvider:WriteEvent(byref,long,ulong,ulong,System.Object[]):ubyte:this (Tier1)
          44 (1.21 % of base) : 25448.dasm - System.Diagnostics.Tracing.EventProvider:WriteEvent(byref,long,ulong,ulong,System.Object[]):ubyte:this (Tier1)
          44 (1.21 % of base) : 49251.dasm - System.Diagnostics.Tracing.EventProvider:WriteEvent(byref,long,ulong,ulong,System.Object[]):ubyte:this (Tier1)
          44 (1.21 % of base) : 81246.dasm - System.Diagnostics.Tracing.EventProvider:WriteEvent(byref,long,ulong,ulong,System.Object[]):ubyte:this (Tier1)
          44 (1.21 % of base) : 81953.dasm - System.Diagnostics.Tracing.EventProvider:WriteEvent(byref,long,ulong,ulong,System.Object[]):ubyte:this (Tier1)
          44 (1.21 % of base) : 119056.dasm - System.Diagnostics.Tracing.EventProvider:WriteEvent(byref,long,ulong,ulong,System.Object[]):ubyte:this (Tier1)
          44 (1.20 % of base) : 128995.dasm - System.Diagnostics.Tracing.EventProvider:WriteEvent(byref,long,ulong,ulong,System.Object[]):ubyte:this (Tier1)
          44 (1.21 % of base) : 51886.dasm - System.Diagnostics.Tracing.EventProvider:WriteEvent(byref,long,ulong,ulong,System.Object[]):ubyte:this (Tier1)
          44 (2.67 % of base) : 117247.dasm - Yarp.ReverseProxy.Forwarder.HttpForwarder:FixupUpgradeRequestHeaders(Microsoft.AspNetCore.Http.HttpContext,System.Net.Http.HttpRequestMessage,ubyte,ubyte):this (FullOpts)
          44 (2.73 % of base) : 127782.dasm - Yarp.ReverseProxy.Forwarder.HttpForwarder:FixupUpgradeRequestHeaders(Microsoft.AspNetCore.Http.HttpContext,System.Net.Http.HttpRequestMessage,ubyte,ubyte):this (Tier1)

Top method improvements (bytes):
         -62 (-0.80 % of base) : 25579.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.Net.WebSockets.ValueWebSocketReceiveResult]:MoveNext():this (Tier1)
         -42 (-4.35 % of base) : 84351.dasm - System.Net.Http.Metrics.MetricsHandler:SendAsync(System.Net.Http.HttpRequestMessage,ubyte,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[System.Net.Http.HttpResponseMessage]:this (Tier1)
         -41 (-49.40 % of base) : 114478.dasm - System.Boolean:Equals(System.Object):ubyte:this (Tier1)
         -41 (-49.40 % of base) : 101179.dasm - System.Boolean:Equals(System.Object):ubyte:this (Tier1)
         -41 (-49.40 % of base) : 128844.dasm - System.Boolean:Equals(System.Object):ubyte:this (Tier1)
         -41 (-1.44 % of base) : 119318.dasm - Yarp.ReverseProxy.Transforms.RequestHeaderOriginalHostTransform:ApplyAsync(Yarp.ReverseProxy.Transforms.RequestTransformContext):System.Threading.Tasks.ValueTask:this (Tier1)
         -41 (-1.44 % of base) : 101810.dasm - Yarp.ReverseProxy.Transforms.RequestHeaderOriginalHostTransform:ApplyAsync(Yarp.ReverseProxy.Transforms.RequestTransformContext):System.Threading.Tasks.ValueTask:this (Tier1)
         -41 (-1.44 % of base) : 129167.dasm - Yarp.ReverseProxy.Transforms.RequestHeaderOriginalHostTransform:ApplyAsync(Yarp.ReverseProxy.Transforms.RequestTransformContext):System.Threading.Tasks.ValueTask:this (Tier1)
         -40 (-1.20 % of base) : 123421.dasm - Esprima.JavaScriptParser:ParseLeftHandSideExpressionAllowCall():Esprima.Ast.Expression:this (FullOpts)
         -40 (-1.00 % of base) : 126535.dasm - Markdig.Extensions.Tables.PipeTableParser:PostProcess(Markdig.Parsers.InlineProcessor,Markdig.Syntax.Inlines.Inline,Markdig.Syntax.Inlines.Inline,int,ubyte):ubyte:this (FullOpts)
         -39 (-1.44 % of base) : 47348.dasm - System.Diagnostics.Tracing.EventSource:WriteEventVarargs(int,ulong,System.Object[]):this (Tier1)
         -39 (-1.44 % of base) : 66890.dasm - System.Diagnostics.Tracing.EventSource:WriteEventVarargs(int,ulong,System.Object[]):this (Tier1)
         -35 (-3.22 % of base) : 35137.dasm - Microsoft.AspNetCore.Mvc.ViewFeatures.Filters.SaveTempDataPropertyFilterBase:GetTempDataProperties(Microsoft.AspNetCore.Mvc.ViewFeatures.Infrastructure.TempDataSerializer,System.Type):System.Collections.Generic.IReadOnlyList`1[Microsoft.AspNetCore.Mvc.ViewFeatures.Filters.LifecycleProperty] (Tier1-OSR)
         -34 (-0.50 % of base) : 58848.dasm - Microsoft.AspNetCore.Mvc.Controllers.ControllerFeatureProvider:PopulateFeature(System.Collections.Generic.IEnumerable`1[Microsoft.AspNetCore.Mvc.ApplicationParts.ApplicationPart],Microsoft.AspNetCore.Mvc.Controllers.ControllerFeature):this (Tier1-OSR)
         -34 (-0.50 % of base) : 69146.dasm - Microsoft.AspNetCore.Mvc.Controllers.ControllerFeatureProvider:PopulateFeature(System.Collections.Generic.IEnumerable`1[Microsoft.AspNetCore.Mvc.ApplicationParts.ApplicationPart],Microsoft.AspNetCore.Mvc.Controllers.ControllerFeature):this (Tier1-OSR)
         -34 (-0.50 % of base) : 34777.dasm - Microsoft.AspNetCore.Mvc.Controllers.ControllerFeatureProvider:PopulateFeature(System.Collections.Generic.IEnumerable`1[Microsoft.AspNetCore.Mvc.ApplicationParts.ApplicationPart],Microsoft.AspNetCore.Mvc.Controllers.ControllerFeature):this (Tier1-OSR)
         -34 (-0.50 % of base) : 78239.dasm - Microsoft.AspNetCore.Mvc.Controllers.ControllerFeatureProvider:PopulateFeature(System.Collections.Generic.IEnumerable`1[Microsoft.AspNetCore.Mvc.ApplicationParts.ApplicationPart],Microsoft.AspNetCore.Mvc.Controllers.ControllerFeature):this (Tier1-OSR)
         -33 (-14.67 % of base) : 36831.dasm - Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.PathNormalizer:ContainsDotSegments(ulong,ulong):ubyte (Tier1-OSR)
         -33 (-14.86 % of base) : 57488.dasm - Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.PathNormalizer:ContainsDotSegments(ulong,ulong):ubyte (Tier1-OSR)
         -33 (-2.28 % of base) : 126349.dasm - OrchardCore.DisplayManagement.Zones.FlatPositionComparer:Compare(System.String,System.String):int:this (FullOpts)

Top method regressions (percentages):
         164 (11.23 % of base) : 63083.dasm - Microsoft.EntityFrameworkCore.DbContext:Microsoft.EntityFrameworkCore.Internal.IDbContextPoolable.SnapshotConfiguration():this (FullOpts)
          26 (6.97 % of base) : 97782.dasm - System.ReadOnlyMemory`1[ushort]:ToString():System.String:this (Instrumented Tier1)
          24 (6.88 % of base) : 128956.dasm - System.ReadOnlyMemory`1[ushort]:ToString():System.String:this (Tier1)
          24 (6.76 % of base) : 114639.dasm - System.ReadOnlyMemory`1[ushort]:ToString():System.String:this (Tier1)
          18 (5.28 % of base) : 113569.dasm - Microsoft.Extensions.FileProviders.Physical.Internal.PathUtils:PathNavigatesAboveRoot(System.String):ubyte (Tier1)
          10 (5.08 % of base) : 49620.dasm - System.IO.Pipelines.StreamPipeReader:TryReadInternal(System.Threading.CancellationTokenSource,byref):ubyte:this (Tier1)
          10 (5.08 % of base) : 51898.dasm - System.IO.Pipelines.StreamPipeReader:TryReadInternal(System.Threading.CancellationTokenSource,byref):ubyte:this (Tier1)
          10 (5.08 % of base) : 45905.dasm - System.IO.Pipelines.StreamPipeReader:TryReadInternal(System.Threading.CancellationTokenSource,byref):ubyte:this (Tier1)
          10 (5.08 % of base) : 59981.dasm - System.IO.Pipelines.StreamPipeReader:TryReadInternal(System.Threading.CancellationTokenSource,byref):ubyte:this (Tier1)
          10 (5.08 % of base) : 66108.dasm - System.IO.Pipelines.StreamPipeReader:TryReadInternal(System.Threading.CancellationTokenSource,byref):ubyte:this (Tier1)
          10 (5.08 % of base) : 81957.dasm - System.IO.Pipelines.StreamPipeReader:TryReadInternal(System.Threading.CancellationTokenSource,byref):ubyte:this (Tier1)
          27 (4.56 % of base) : 113843.dasm - System.RuntimeType:FilterApplyBase(System.Reflection.MemberInfo,int,ubyte,ubyte,ubyte,System.String,ubyte):ubyte (Tier1)
           9 (4.13 % of base) : 76563.dasm - System.IO.Pipelines.StreamPipeReader:TryReadInternal(System.Threading.CancellationTokenSource,byref):ubyte:this (Tier1)
          19 (4.09 % of base) : 56158.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
          19 (4.09 % of base) : 57424.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
          19 (4.09 % of base) : 71072.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
          24 (3.99 % of base) : 33748.dasm - System.IO.Pipelines.Pipe:CompleteWriter(System.Exception):this (Tier1)
          24 (3.98 % of base) : 78209.dasm - System.IO.Pipelines.Pipe:CompleteWriter(System.Exception):this (Tier1)
          19 (3.97 % of base) : 80495.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
          11 (3.93 % of base) : 127790.dasm - System.Net.Http.Headers.HttpHeadersNonValidated:TryGetValues(System.String,byref):ubyte:this (Tier1)

Top method improvements (percentages):
         -41 (-49.40 % of base) : 114478.dasm - System.Boolean:Equals(System.Object):ubyte:this (Tier1)
         -41 (-49.40 % of base) : 101179.dasm - System.Boolean:Equals(System.Object):ubyte:this (Tier1)
         -41 (-49.40 % of base) : 128844.dasm - System.Boolean:Equals(System.Object):ubyte:this (Tier1)
         -27 (-21.95 % of base) : 97508.dasm - System.Boolean:Equals(System.Object):ubyte:this (Instrumented Tier1)
         -31 (-16.15 % of base) : 66877.dasm - Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.PathNormalizer:ContainsDotSegments(ulong,ulong):ubyte (Tier1)
         -33 (-14.86 % of base) : 57488.dasm - Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.PathNormalizer:ContainsDotSegments(ulong,ulong):ubyte (Tier1-OSR)
         -33 (-14.67 % of base) : 36831.dasm - Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.PathNormalizer:ContainsDotSegments(ulong,ulong):ubyte (Tier1-OSR)
         -23 (-11.22 % of base) : 99651.dasm - System.Text.RegularExpressions.Group:.ctor(System.String,int[],int,System.String):this (Instrumented Tier1)
         -16 (-8.89 % of base) : 34131.dasm - Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.PathNormalizer:ContainsDotSegments(ulong,ulong):ubyte (Tier1)
          -9 (-5.63 % of base) : 118242.dasm - System.Globalization.Ordinal:CompareStringIgnoreCase(byref,int,byref,int):int (Tier1)
          -9 (-5.63 % of base) : 53884.dasm - System.Globalization.Ordinal:CompareStringIgnoreCase(byref,int,byref,int):int (Tier1)
          -9 (-5.63 % of base) : 128315.dasm - System.Globalization.Ordinal:CompareStringIgnoreCase(byref,int,byref,int):int (Tier1)
          -9 (-5.63 % of base) : 100312.dasm - System.Globalization.Ordinal:CompareStringIgnoreCase(byref,int,byref,int):int (Tier1)
          -3 (-4.41 % of base) : 55954.dasm - System.Text.Json.JsonWriterOptions:set_IndentCharacter(ushort):this (Tier1)
          -3 (-4.41 % of base) : 67502.dasm - System.Text.Json.JsonWriterOptions:set_IndentCharacter(ushort):this (Tier1)
          -3 (-4.41 % of base) : 33344.dasm - System.Text.Json.JsonWriterOptions:set_IndentCharacter(ushort):this (Tier1)
          -3 (-4.41 % of base) : 79148.dasm - System.Text.Json.JsonWriterOptions:set_IndentCharacter(ushort):this (Tier1)
          -3 (-4.41 % of base) : 57081.dasm - System.Text.Json.JsonWriterOptions:set_IndentCharacter(ushort):this (Tier1)
          -3 (-4.41 % of base) : 60879.dasm - System.Text.Json.JsonWriterOptions:set_IndentCharacter(ushort):this (Tier1)
         -42 (-4.35 % of base) : 84351.dasm - System.Net.Http.Metrics.MetricsHandler:SendAsync(System.Net.Http.HttpRequestMessage,ubyte,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[System.Net.Http.HttpResponseMessage]:this (Tier1)


benchmarks.run.windows.x64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 8742274 (overridden on cmd)
Total bytes of diff: 8741732 (overridden on cmd)
Total bytes of delta: -542 (-0.01 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          30 : 11955.dasm (0.79 % of base)
          10 : 20705.dasm (0.18 % of base)
           6 : 24759.dasm (1.15 % of base)
           6 : 24988.dasm (1.15 % of base)
           5 : 12728.dasm (2.28 % of base)
           4 : 17882.dasm (0.04 % of base)
           4 : 19830.dasm (0.40 % of base)
           4 : 23580.dasm (0.08 % of base)
           3 : 14635.dasm (1.09 % of base)
           3 : 4967.dasm (3.06 % of base)
           3 : 16250.dasm (2.94 % of base)
           2 : 4940.dasm (0.70 % of base)
           2 : 5521.dasm (0.36 % of base)
           2 : 15771.dasm (0.48 % of base)
           2 : 15879.dasm (1.04 % of base)
           2 : 15881.dasm (0.61 % of base)
           2 : 17230.dasm (1.01 % of base)
           2 : 17231.dasm (0.60 % of base)
           2 : 20917.dasm (2.04 % of base)
           2 : 2132.dasm (0.02 % of base)

Top file improvements (bytes):
         -49 : 19770.dasm (-1.67 % of base)
         -40 : 13587.dasm (-51.28 % of base)
         -40 : 9397.dasm (-0.37 % of base)
         -40 : 6824.dasm (-0.96 % of base)
         -39 : 18934.dasm (-8.16 % of base)
         -32 : 2319.dasm (-24.62 % of base)
         -31 : 11969.dasm (-1.91 % of base)
         -23 : 17335.dasm (-2.27 % of base)
         -19 : 14991.dasm (-8.23 % of base)
         -18 : 23168.dasm (-8.82 % of base)
         -17 : 14893.dasm (-0.14 % of base)
         -17 : 19287.dasm (-0.41 % of base)
         -16 : 7707.dasm (-0.57 % of base)
         -16 : 13660.dasm (-5.19 % of base)
         -15 : 20401.dasm (-0.53 % of base)
         -15 : 20423.dasm (-0.72 % of base)
         -14 : 8429.dasm (-2.27 % of base)
         -13 : 418.dasm (-4.96 % of base)
         -12 : 17344.dasm (-5.00 % of base)
         -12 : 2028.dasm (-4.92 % of base)

59 total files with Code Size differences (32 improved, 27 regressed), 16 unchanged.

Top method regressions (bytes):
          30 (0.79 % of base) : 11955.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:ImportDataMembers():this (FullOpts)
          10 (0.18 % of base) : 20705.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodSymbol:CheckModifiers(ubyte,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
           6 (1.15 % of base) : 24759.dasm - System.MathBenchmarks.Double:MaxTest() (FullOpts)
           6 (1.15 % of base) : 24988.dasm - System.MathBenchmarks.Double:MinTest() (FullOpts)
           5 (2.28 % of base) : 12728.dasm - System.Xml.Serialization.CodeGenerator:StoreMember(System.Reflection.MemberInfo):this (FullOpts)
           4 (0.40 % of base) : 19830.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this (FullOpts)
           4 (0.08 % of base) : 23580.dasm - System.Diagnostics.Process:StartWithCreateProcess(System.Diagnostics.ProcessStartInfo):ubyte:this (FullOpts)
           4 (0.04 % of base) : 17882.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.Net.WebSockets.ValueWebSocketReceiveResult]:MoveNext():this (FullOpts)
           3 (1.09 % of base) : 14635.dasm - ProtoBuf.Internal.Serializers.SurrogateSerializer`1[System.DateTimeOffset]:GetConversion(ubyte):System.Reflection.MethodInfo:this (FullOpts)
           3 (3.06 % of base) : 4967.dasm - System.Net.Http.HttpConnection+HttpContentReadStream:Dispose(ubyte):this (FullOpts)
           3 (2.94 % of base) : 16250.dasm - System.Runtime.Serialization.Json.JsonEncodingStreamWrapper:ReadEncoding(ubyte,ubyte):int (FullOpts)
           2 (2.04 % of base) : 20917.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetSymbol[System.__Canon](Microsoft.CodeAnalysis.ISymbol):System.__Canon (FullOpts)
           2 (0.36 % of base) : 5521.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
           2 (1.01 % of base) : 17230.dasm - System.Collections.Generic.SortedSet`1+Enumerator[int]:Initialize():this (FullOpts)
           2 (0.60 % of base) : 17231.dasm - System.Collections.Generic.SortedSet`1+Enumerator[int]:MoveNext():ubyte:this (FullOpts)
           2 (1.04 % of base) : 15879.dasm - System.Collections.Generic.SortedSet`1+Enumerator[System.__Canon]:Initialize():this (FullOpts)
           2 (0.61 % of base) : 15881.dasm - System.Collections.Generic.SortedSet`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (FullOpts)
           2 (0.48 % of base) : 15771.dasm - System.Formats.Tar.TarHeader:ProcessDataBlock(System.IO.Stream,ubyte):this (FullOpts)
           2 (0.60 % of base) : 4392.dasm - System.IO.MemoryMappedFiles.MemoryMappedFile:CreateCore(Microsoft.Win32.SafeHandles.SafeFileHandle,System.String,int,int,int,long,long):Microsoft.Win32.SafeHandles.SafeMemoryMappedFileHandle (FullOpts)
           2 (0.70 % of base) : 4940.dasm - System.Net.Http.Headers.BaseHeaderParser:TryParseValue(System.String,System.Object,byref,byref):ubyte:this (FullOpts)

Top method improvements (bytes):
         -49 (-1.67 % of base) : 19770.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (FullOpts)
         -40 (-0.37 % of base) : 9397.dasm - MessagePack.Internal.ObjectSerializationInfo:CreateOrNull(System.Type,ubyte,ubyte,ubyte):MessagePack.Internal.ObjectSerializationInfo (FullOpts)
         -40 (-51.28 % of base) : 13587.dasm - System.Int32:Equals(System.Object):ubyte:this (FullOpts)
         -40 (-0.96 % of base) : 6824.dasm - Utf8Json.Internal.Emit.MetaType:.ctor(System.Type,System.Func`2[System.String,System.String],ubyte):this (FullOpts)
         -39 (-8.16 % of base) : 18934.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (FullOpts)
         -32 (-24.62 % of base) : 2319.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
         -31 (-1.91 % of base) : 11969.dasm - System.Xml.XmlConvert:EncodeName(System.String,ubyte,ubyte):System.String (FullOpts)
         -23 (-2.27 % of base) : 17335.dasm - System.Xml.Serialization.XmlReflectionImporter:ImportSpecialMapping(System.Type,System.Xml.Serialization.TypeDesc,System.String,int):System.Xml.Serialization.SpecialMapping:this (FullOpts)
         -19 (-8.23 % of base) : 14991.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (FullOpts)
         -18 (-8.82 % of base) : 23168.dasm - Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (FullOpts)
         -17 (-0.14 % of base) : 14893.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.CollectionsOfPrimitives,int) (FullOpts)
         -17 (-0.41 % of base) : 19287.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseMemberDeclarationOrStatementCore(ushort):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.MemberDeclarationSyntax:this (FullOpts)
         -16 (-0.57 % of base) : 7707.dasm - Sigil.Impl.VerifiableTracker:CollapseAndVerify():Sigil.Impl.VerificationResult:this (FullOpts)
         -16 (-5.19 % of base) : 13660.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (FullOpts)
         -15 (-0.72 % of base) : 20423.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetSpecialType(byte):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (FullOpts)
         -15 (-0.53 % of base) : 20401.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
         -14 (-2.27 % of base) : 8429.dasm - System.Text.Json.Reflection.ReflectionExtensions:TryGetDeserializationConstructor(System.Type,ubyte,byref):ubyte (FullOpts)
         -13 (-4.96 % of base) : 418.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
         -12 (-4.92 % of base) : 2028.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
         -12 (-5.00 % of base) : 17344.dasm - System.Xml.XmlElement:WriteElementTo(System.Xml.XmlWriter,System.Xml.XmlElement) (FullOpts)

Top method regressions (percentages):
           2 (3.64 % of base) : 4833.dasm - System.Net.Http.HttpConnectionPool:GetSslOptionsForRequest(System.Net.Http.HttpRequestMessage):System.Net.Security.SslClientAuthenticationOptions:this (FullOpts)
           3 (3.06 % of base) : 4967.dasm - System.Net.Http.HttpConnection+HttpContentReadStream:Dispose(ubyte):this (FullOpts)
           3 (2.94 % of base) : 16250.dasm - System.Runtime.Serialization.Json.JsonEncodingStreamWrapper:ReadEncoding(ubyte,ubyte):int (FullOpts)
           5 (2.28 % of base) : 12728.dasm - System.Xml.Serialization.CodeGenerator:StoreMember(System.Reflection.MemberInfo):this (FullOpts)
           2 (2.04 % of base) : 20917.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetSymbol[System.__Canon](Microsoft.CodeAnalysis.ISymbol):System.__Canon (FullOpts)
           6 (1.15 % of base) : 24759.dasm - System.MathBenchmarks.Double:MaxTest() (FullOpts)
           6 (1.15 % of base) : 24988.dasm - System.MathBenchmarks.Double:MinTest() (FullOpts)
           3 (1.09 % of base) : 14635.dasm - ProtoBuf.Internal.Serializers.SurrogateSerializer`1[System.DateTimeOffset]:GetConversion(ubyte):System.Reflection.MethodInfo:this (FullOpts)
           2 (1.04 % of base) : 15879.dasm - System.Collections.Generic.SortedSet`1+Enumerator[System.__Canon]:Initialize():this (FullOpts)
           2 (1.01 % of base) : 17230.dasm - System.Collections.Generic.SortedSet`1+Enumerator[int]:Initialize():this (FullOpts)
          30 (0.79 % of base) : 11955.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:ImportDataMembers():this (FullOpts)
           2 (0.70 % of base) : 4940.dasm - System.Net.Http.Headers.BaseHeaderParser:TryParseValue(System.String,System.Object,byref,byref):ubyte:this (FullOpts)
           2 (0.61 % of base) : 15881.dasm - System.Collections.Generic.SortedSet`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (FullOpts)
           2 (0.60 % of base) : 4392.dasm - System.IO.MemoryMappedFiles.MemoryMappedFile:CreateCore(Microsoft.Win32.SafeHandles.SafeFileHandle,System.String,int,int,int,long,long):Microsoft.Win32.SafeHandles.SafeMemoryMappedFileHandle (FullOpts)
           2 (0.60 % of base) : 17231.dasm - System.Collections.Generic.SortedSet`1+Enumerator[int]:MoveNext():ubyte:this (FullOpts)
           2 (0.48 % of base) : 15771.dasm - System.Formats.Tar.TarHeader:ProcessDataBlock(System.IO.Stream,ubyte):this (FullOpts)
           1 (0.41 % of base) : 7149.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)
           4 (0.40 % of base) : 19830.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this (FullOpts)
           2 (0.38 % of base) : 3625.dasm - System.Net.SocketAddress:.ctor(System.Net.IPAddress):this (FullOpts)
           2 (0.36 % of base) : 5521.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)

Top method improvements (percentages):
         -40 (-51.28 % of base) : 13587.dasm - System.Int32:Equals(System.Object):ubyte:this (FullOpts)
         -32 (-24.62 % of base) : 2319.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
         -18 (-8.82 % of base) : 23168.dasm - Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (FullOpts)
         -19 (-8.23 % of base) : 14991.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (FullOpts)
         -39 (-8.16 % of base) : 18934.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (FullOpts)
          -5 (-5.49 % of base) : 8409.dasm - System.Buffers.ReadOnlySequence`1[ubyte]:SeekMultiSegment(System.Buffers.ReadOnlySequenceSegment`1[ubyte],System.Object,int,long,int):System.SequencePosition (FullOpts)
         -16 (-5.19 % of base) : 13660.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (FullOpts)
         -12 (-5.00 % of base) : 17344.dasm - System.Xml.XmlElement:WriteElementTo(System.Xml.XmlWriter,System.Xml.XmlElement) (FullOpts)
         -13 (-4.96 % of base) : 418.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
         -12 (-4.92 % of base) : 2028.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
          -4 (-2.78 % of base) : 5651.dasm - System.Globalization.CultureData:GetSeparator(System.String,System.String):System.String (FullOpts)
         -14 (-2.27 % of base) : 8429.dasm - System.Text.Json.Reflection.ReflectionExtensions:TryGetDeserializationConstructor(System.Type,ubyte,byref):ubyte (FullOpts)
         -23 (-2.27 % of base) : 17335.dasm - System.Xml.Serialization.XmlReflectionImporter:ImportSpecialMapping(System.Type,System.Xml.Serialization.TypeDesc,System.String,int):System.Xml.Serialization.SpecialMapping:this (FullOpts)
         -31 (-1.91 % of base) : 11969.dasm - System.Xml.XmlConvert:EncodeName(System.String,ubyte,ubyte):System.String (FullOpts)
          -9 (-1.76 % of base) : 8726.dasm - System.Diagnostics.Tracing.EventSource:LogEventArgsMismatches(int,System.Object[]):this (FullOpts)
         -49 (-1.67 % of base) : 19770.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (FullOpts)
          -4 (-1.56 % of base) : 8514.dasm - System.Text.Json.Tests.Perf_Reader:ReadMultiSpanSequenceEmptyLoop():this (FullOpts)
          -4 (-1.56 % of base) : 3349.dasm - System.Text.Json.Tests.Perf_Reader:ReadSingleSpanSequenceEmptyLoop():this (FullOpts)
          -4 (-1.56 % of base) : 25958.dasm - System.Text.Json.Tests.Perf_Segment:ReadSingleSegmentSequence():this (FullOpts)
          -5 (-1.36 % of base) : 23545.dasm - System.Collections.Immutable.ImmutableList`1+Enumerator[System.__Canon]:ResetStack():this (FullOpts)


benchmarks.run_pgo.windows.x64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 36139006 (overridden on cmd)
Total bytes of diff: 36136927 (overridden on cmd)
Total bytes of delta: -2079 (-0.01 % of base)
    diff is a regression.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         163 : 75513.dasm (4.06 % of base)
         116 : 42531.dasm (2.74 % of base)
          81 : 74777.dasm (1.64 % of base)
          76 : 77610.dasm (2.40 % of base)
          53 : 91957.dasm (2.70 % of base)
          52 : 91967.dasm (2.64 % of base)
          51 : 101507.dasm (15.69 % of base)
          51 : 27992.dasm (15.69 % of base)
          46 : 33953.dasm (2.50 % of base)
          45 : 101463.dasm (2.65 % of base)
          45 : 101495.dasm (2.65 % of base)
          45 : 94732.dasm (2.65 % of base)
          45 : 96037.dasm (2.65 % of base)
          40 : 75540.dasm (3.17 % of base)
          38 : 80525.dasm (1.85 % of base)
          37 : 27089.dasm (10.69 % of base)
          36 : 56661.dasm (5.90 % of base)
          33 : 45864.dasm (0.95 % of base)
          33 : 79188.dasm (0.95 % of base)
          33 : 50823.dasm (0.95 % of base)

Top file improvements (bytes):
         -94 : 69488.dasm (-1.22 % of base)
         -63 : 85067.dasm (-1.47 % of base)
         -53 : 102415.dasm (-1.21 % of base)
         -45 : 91946.dasm (-2.02 % of base)
         -44 : 94280.dasm (-10.33 % of base)
         -42 : 27201.dasm (-50.60 % of base)
         -42 : 34657.dasm (-50.60 % of base)
         -40 : 42920.dasm (-49.38 % of base)
         -40 : 40056.dasm (-4.20 % of base)
         -37 : 68980.dasm (-3.95 % of base)
         -36 : 37406.dasm (-3.61 % of base)
         -35 : 73874.dasm (-4.25 % of base)
         -34 : 91947.dasm (-26.15 % of base)
         -32 : 84701.dasm (-9.30 % of base)
         -32 : 37423.dasm (-3.36 % of base)
         -29 : 39659.dasm (-2.91 % of base)
         -29 : 40045.dasm (-2.91 % of base)
         -29 : 67899.dasm (-2.69 % of base)
         -26 : 39305.dasm (-9.25 % of base)
         -26 : 40989.dasm (-9.25 % of base)

69 total files with Code Size differences (34 improved, 35 regressed), 20 unchanged.

Top method regressions (bytes):
         163 (4.06 % of base) : 75513.dasm - Microsoft.Extensions.Configuration.ConfigurationProvider:GetChildKeys(System.Collections.Generic.IEnumerable`1[System.String],System.String):System.Collections.Generic.IEnumerable`1[System.String]:this (Tier1)
         116 (2.74 % of base) : 42531.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
          81 (1.64 % of base) : 74777.dasm - Microsoft.CodeAnalysis.MetadataHelpers:GetInfoForImmediateNamespaceMembers(ubyte,int,System.Collections.Generic.IEnumerable`1[System.Linq.IGrouping`2[System.String,System.Reflection.Metadata.TypeDefinitionHandle]],System.StringComparer,byref,byref) (Tier1)
          76 (2.40 % of base) : 77610.dasm - Microsoft.Extensions.Configuration.ConfigurationProvider:GetChildKeys(System.Collections.Generic.IEnumerable`1[System.String],System.String):System.Collections.Generic.IEnumerable`1[System.String]:this (Tier1)
          53 (2.70 % of base) : 91957.dasm - BenchmarksGame.pidigits:compose_l(int,int,int,int):this (Tier1)
          52 (2.64 % of base) : 91967.dasm - BenchmarksGame.pidigits:compose_r(int,int,int,int):this (Tier1)
          51 (15.69 % of base) : 101507.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:TryMatch(byref,int,byref,uint,byref):ubyte:this (Tier1)
          51 (15.69 % of base) : 27992.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:TryMatch(byref,int,byref,uint,byref):ubyte:this (Tier1)
          46 (2.50 % of base) : 33953.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (Tier1-OSR)
          45 (2.65 % of base) : 101463.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:IndexOf(byref,int):int:this (Tier1-OSR)
          45 (2.65 % of base) : 101495.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:IndexOf(byref,int):int:this (Tier1-OSR)
          45 (2.65 % of base) : 94732.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:IndexOf(byref,int):int:this (Tier1-OSR)
          45 (2.65 % of base) : 96037.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:IndexOf(byref,int):int:this (Tier1-OSR)
          40 (3.17 % of base) : 75540.dasm - System.Reflection.CustomAttribute:GetCustomAttributes(System.RuntimeType,System.RuntimeType,ubyte):System.Object[] (Tier1)
          38 (1.85 % of base) : 80525.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:CreateAlternate(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],ubyte,ubyte):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong] (Tier1)
          37 (10.69 % of base) : 27089.dasm - System.Text.Ascii:ChangeCase[ushort,ushort,System.Text.Ascii+ToUpperConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):int (Tier1)
          36 (5.90 % of base) : 56661.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex6_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          33 (0.95 % of base) : 45864.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
          33 (0.95 % of base) : 79188.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
          33 (0.95 % of base) : 50823.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)

Top method improvements (bytes):
         -94 (-1.22 % of base) : 69488.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:SynthesizeDebuggableAttribute():Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedAttributeData:this (Tier1)
         -63 (-1.47 % of base) : 85067.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
         -53 (-1.21 % of base) : 102415.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
         -45 (-2.02 % of base) : 91946.dasm - System.Numerics.BigInteger:Subtract(System.ReadOnlySpan`1[uint],int,System.ReadOnlySpan`1[uint],int):System.Numerics.BigInteger (Tier1)
         -44 (-10.33 % of base) : 94280.dasm - System.Number:TryFormatDouble[ubyte](double,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo,System.Span`1[ubyte],byref):ubyte (Tier1)
         -42 (-50.60 % of base) : 27201.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -42 (-50.60 % of base) : 34657.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -40 (-4.20 % of base) : 40056.dasm - System.Collections.Generic.Dictionary`2[System.ValueTuple`2[System.__Canon,System.__Canon],ubyte]:TryGetValue(System.ValueTuple`2[System.__Canon,System.__Canon],byref):ubyte:this (Tier1)
         -40 (-49.38 % of base) : 42920.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -37 (-3.95 % of base) : 68980.dasm - Microsoft.CodeAnalysis.CSharp.MethodCompiler:BindImplicitConstructorInitializerIfAny(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.TypeCompilationState,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundStatement (Tier1)
         -36 (-3.61 % of base) : 37406.dasm - System.Collections.Generic.Dictionary`2[System.ValueTuple`3[System.__Canon,ulong,uint],System.__Canon]:TryGetValue(System.ValueTuple`3[System.__Canon,ulong,uint],byref):ubyte:this (Tier1)
         -35 (-4.25 % of base) : 73874.dasm - Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass:WriteConsideredUse(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte (Tier1)
         -34 (-26.15 % of base) : 91947.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
         -32 (-3.36 % of base) : 37423.dasm - System.Collections.Generic.Dictionary`2[System.ValueTuple`2[System.__Canon,System.__Canon],ubyte]:TryGetValue(System.ValueTuple`2[System.__Canon,System.__Canon],byref):ubyte:this (Tier1)
         -32 (-9.30 % of base) : 84701.dasm - System.Threading.ThreadPool:NotifyWorkItemComplete(System.Object,int):ubyte (Tier1)
         -29 (-2.69 % of base) : 67899.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetSpecialType(byte):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (Tier1)
         -29 (-2.91 % of base) : 39659.dasm - System.Collections.Generic.Dictionary`2[System.ValueTuple`3[System.__Canon,ulong,uint],System.__Canon]:TryGetValue(System.ValueTuple`3[System.__Canon,ulong,uint],byref):ubyte:this (Tier1)
         -29 (-2.91 % of base) : 40045.dasm - System.Collections.Generic.Dictionary`2[System.ValueTuple`3[System.__Canon,ulong,uint],System.__Canon]:TryGetValue(System.ValueTuple`3[System.__Canon,ulong,uint],byref):ubyte:this (Tier1)
         -26 (-9.25 % of base) : 39305.dasm - System.Threading.ThreadPool:NotifyWorkItemComplete(System.Object,int):ubyte (Tier1)
         -26 (-9.25 % of base) : 40989.dasm - System.Threading.ThreadPool:NotifyWorkItemComplete(System.Object,int):ubyte (Tier1)

Top method regressions (percentages):
          51 (15.69 % of base) : 101507.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:TryMatch(byref,int,byref,uint,byref):ubyte:this (Tier1)
          51 (15.69 % of base) : 27992.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:TryMatch(byref,int,byref,uint,byref):ubyte:this (Tier1)
          20 (11.83 % of base) : 69696.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)
          37 (10.69 % of base) : 27089.dasm - System.Text.Ascii:ChangeCase[ushort,ushort,System.Text.Ascii+ToUpperConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):int (Tier1)
          25 (8.59 % of base) : 68340.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_IsDelaySigned():ubyte:this (Tier1)
          29 (6.44 % of base) : 35528.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          29 (6.43 % of base) : 94705.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          36 (5.90 % of base) : 56661.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex6_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          14 (4.68 % of base) : 37877.dasm - System.Number:FormatDouble(double,System.String,System.Globalization.NumberFormatInfo):System.String (Tier1)
          30 (4.55 % of base) : 99751.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          16 (4.44 % of base) : 69009.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass+LocalState,System.__Canon]:VisitWithStackGuard(Microsoft.CodeAnalysis.CSharp.BoundNode):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier1)
           8 (4.44 % of base) : 65896.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyDelaySignAttributeSetting():ubyte:this (Tier1)
          24 (4.40 % of base) : 83591.dasm - System.RuntimeType:CreateInstanceOfT():System.Object:this (Tier1)
          28 (4.35 % of base) : 94734.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex12_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          22 (4.19 % of base) : 14420.dasm - System.Environment:get_CurrentDirectoryCore():System.String (Tier0-FullOpts)
         163 (4.06 % of base) : 75513.dasm - Microsoft.Extensions.Configuration.ConfigurationProvider:GetChildKeys(System.Collections.Generic.IEnumerable`1[System.String],System.String):System.Collections.Generic.IEnumerable`1[System.String]:this (Tier1)
          23 (3.78 % of base) : 83424.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          16 (3.71 % of base) : 94737.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex13_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          31 (3.43 % of base) : 698.dasm - System.IO.StreamReader:ReadLine():System.String:this (Tier0-FullOpts)
          17 (3.24 % of base) : 98627.dasm - System.Text.RegularExpressions.RegexNode:FinalOptimize():System.Text.RegularExpressions.RegexNode:this (Tier1)

Top method improvements (percentages):
         -42 (-50.60 % of base) : 27201.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -42 (-50.60 % of base) : 34657.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -40 (-49.38 % of base) : 42920.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -34 (-26.15 % of base) : 91947.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
         -44 (-10.33 % of base) : 94280.dasm - System.Number:TryFormatDouble[ubyte](double,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo,System.Span`1[ubyte],byref):ubyte (Tier1)
         -20 (-9.52 % of base) : 4881.dasm - System.Threading.PortableThreadPool:NotifyWorkItemComplete(System.Object,int):ubyte:this (Tier1)
         -32 (-9.30 % of base) : 84701.dasm - System.Threading.ThreadPool:NotifyWorkItemComplete(System.Object,int):ubyte (Tier1)
         -26 (-9.25 % of base) : 39305.dasm - System.Threading.ThreadPool:NotifyWorkItemComplete(System.Object,int):ubyte (Tier1)
         -26 (-9.25 % of base) : 40989.dasm - System.Threading.ThreadPool:NotifyWorkItemComplete(System.Object,int):ubyte (Tier1)
         -26 (-9.25 % of base) : 56373.dasm - System.Threading.ThreadPool:NotifyWorkItemComplete(System.Object,int):ubyte (Tier1)
         -26 (-9.25 % of base) : 37594.dasm - System.Threading.ThreadPool:NotifyWorkItemComplete(System.Object,int):ubyte (Tier1)
         -26 (-9.25 % of base) : 8565.dasm - System.Threading.ThreadPool:NotifyWorkItemComplete(System.Object,int):ubyte (Tier1)
         -26 (-9.25 % of base) : 92581.dasm - System.Threading.ThreadPool:NotifyWorkItemComplete(System.Object,int):ubyte (Tier1)
         -26 (-9.25 % of base) : 22585.dasm - System.Threading.ThreadPool:NotifyWorkItemComplete(System.Object,int):ubyte (Tier1)
         -26 (-9.25 % of base) : 35821.dasm - System.Threading.ThreadPool:NotifyWorkItemComplete(System.Object,int):ubyte (Tier1)
         -26 (-9.25 % of base) : 44013.dasm - System.Threading.ThreadPool:NotifyWorkItemComplete(System.Object,int):ubyte (Tier1)
         -26 (-9.25 % of base) : 76598.dasm - System.Threading.ThreadPool:NotifyWorkItemComplete(System.Object,int):ubyte (Tier1)
         -26 (-9.25 % of base) : 81269.dasm - System.Threading.ThreadPool:NotifyWorkItemComplete(System.Object,int):ubyte (Tier1)
         -26 (-9.25 % of base) : 86305.dasm - System.Threading.ThreadPool:NotifyWorkItemComplete(System.Object,int):ubyte (Tier1)
         -26 (-9.25 % of base) : 89053.dasm - System.Threading.ThreadPool:NotifyWorkItemComplete(System.Object,int):ubyte (Tier1)


benchmarks.run_tiered.windows.x64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 12416111 (overridden on cmd)
Total bytes of diff: 12415880 (overridden on cmd)
Total bytes of delta: -231 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          23 : 45122.dasm (0.89 % of base)
           2 : 2696.dasm (0.02 % of base)
           2 : 52193.dasm (0.03 % of base)
           2 : 23866.dasm (0.45 % of base)
           2 : 16969.dasm (0.36 % of base)

Top file improvements (bytes):
         -40 : 20253.dasm (-49.38 % of base)
         -32 : 50772.dasm (-24.62 % of base)
         -31 : 24591.dasm (-2.02 % of base)
         -19 : 28532.dasm (-7.51 % of base)
         -17 : 27595.dasm (-0.14 % of base)
         -16 : 49840.dasm (-0.59 % of base)
         -15 : 42222.dasm (-0.72 % of base)
         -13 : 5092.dasm (-4.96 % of base)
         -13 : 27090.dasm (-3.80 % of base)
         -12 : 42986.dasm (-4.92 % of base)
          -7 : 44962.dasm (-1.11 % of base)
          -6 : 2017.dasm (-0.08 % of base)
          -6 : 52188.dasm (-1.77 % of base)
          -6 : 10970.dasm (-0.90 % of base)
          -5 : 18259.dasm (-0.18 % of base)
          -5 : 41770.dasm (-0.12 % of base)
          -4 : 23654.dasm (-0.54 % of base)
          -4 : 51278.dasm (-2.92 % of base)
          -4 : 31573.dasm (-2.92 % of base)
          -3 : 7255.dasm (-0.26 % of base)

27 total files with Code Size differences (22 improved, 5 regressed), 8 unchanged.

Top method regressions (bytes):
          23 (0.89 % of base) : 45122.dasm - System.Text.Json.Tests.Perf_Segment:ReadMultiSegmentSequenceUsingSpan(int):this (Tier1-OSR)
           2 (0.36 % of base) : 16969.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
           2 (0.45 % of base) : 23866.dasm - System.Net.SocketAddress:.ctor(System.Net.IPAddress):this (Tier1)
           2 (0.02 % of base) : 2696.dasm - System.Text.RegularExpressions.RegexCompiler:EmitMatchCharacterClass(System.String):this (Tier0-FullOpts)
           2 (0.03 % of base) : 52193.dasm - System.Text.RegularExpressions.RegexWriter:EmitFragment(ubyte,System.Text.RegularExpressions.RegexNode,int):this (Tier1)

Top method improvements (bytes):
         -40 (-49.38 % of base) : 20253.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -32 (-24.62 % of base) : 50772.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
         -31 (-2.02 % of base) : 24591.dasm - System.Xml.XmlConvert:EncodeName(System.String,ubyte,ubyte):System.String (Tier1)
         -19 (-7.51 % of base) : 28532.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)
         -17 (-0.14 % of base) : 27595.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.CollectionsOfPrimitives,int) (FullOpts)
         -16 (-0.59 % of base) : 49840.dasm - Sigil.Impl.VerifiableTracker:CollapseAndVerify():Sigil.Impl.VerificationResult:this (Tier1)
         -15 (-0.72 % of base) : 42222.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetSpecialType(byte):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (Tier1)
         -13 (-3.80 % of base) : 27090.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (Tier1-OSR)
         -13 (-4.96 % of base) : 5092.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (Tier1)
         -12 (-4.92 % of base) : 42986.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier1)
          -7 (-1.11 % of base) : 44962.dasm - Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass:LeaveParameter(Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.Location):this (Tier1)
          -6 (-0.08 % of base) : 2017.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier0-FullOpts)
          -6 (-0.90 % of base) : 10970.dasm - System.Text.Ascii:GetIndexOfFirstNonAsciiByte_Vector(ulong,ulong):ulong (Tier1)
          -6 (-1.77 % of base) : 52188.dasm - System.Text.Ascii:GetIndexOfFirstNonAsciiByte_Vector(ulong,ulong):ulong (Tier1-OSR)
          -5 (-0.12 % of base) : 41770.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetWellKnownType(int):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (Tier1)
          -5 (-0.18 % of base) : 18259.dasm - System.IPv6AddressHelper:ParseCanonicalName(System.String,int,byref,byref):System.String (Tier0-FullOpts)
          -4 (-2.92 % of base) : 31573.dasm - System.Text.Json.Tests.Perf_Segment:ReadMultiSegmentSequence(int):this (Tier1-OSR)
          -4 (-2.92 % of base) : 51278.dasm - System.Text.Json.Tests.Perf_Segment:ReadSingleSegmentSequence():this (Tier1-OSR)
          -4 (-0.54 % of base) : 23654.dasm - System.Text.Json.Tests.Perf_Segment:ReadSingleSegmentSequenceByN(int):this (Tier1-OSR)
          -3 (-0.26 % of base) : 7255.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (Tier0-FullOpts)

Top method regressions (percentages):
          23 (0.89 % of base) : 45122.dasm - System.Text.Json.Tests.Perf_Segment:ReadMultiSegmentSequenceUsingSpan(int):this (Tier1-OSR)
           2 (0.45 % of base) : 23866.dasm - System.Net.SocketAddress:.ctor(System.Net.IPAddress):this (Tier1)
           2 (0.36 % of base) : 16969.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
           2 (0.03 % of base) : 52193.dasm - System.Text.RegularExpressions.RegexWriter:EmitFragment(ubyte,System.Text.RegularExpressions.RegexNode,int):this (Tier1)
           2 (0.02 % of base) : 2696.dasm - System.Text.RegularExpressions.RegexCompiler:EmitMatchCharacterClass(System.String):this (Tier0-FullOpts)

Top method improvements (percentages):
         -40 (-49.38 % of base) : 20253.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -32 (-24.62 % of base) : 50772.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
         -19 (-7.51 % of base) : 28532.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)
         -13 (-4.96 % of base) : 5092.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (Tier1)
         -12 (-4.92 % of base) : 42986.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier1)
         -13 (-3.80 % of base) : 27090.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (Tier1-OSR)
          -4 (-2.92 % of base) : 31573.dasm - System.Text.Json.Tests.Perf_Segment:ReadMultiSegmentSequence(int):this (Tier1-OSR)
          -4 (-2.92 % of base) : 51278.dasm - System.Text.Json.Tests.Perf_Segment:ReadSingleSegmentSequence():this (Tier1-OSR)
         -31 (-2.02 % of base) : 24591.dasm - System.Xml.XmlConvert:EncodeName(System.String,ubyte,ubyte):System.String (Tier1)
          -6 (-1.77 % of base) : 52188.dasm - System.Text.Ascii:GetIndexOfFirstNonAsciiByte_Vector(ulong,ulong):ulong (Tier1-OSR)
          -2 (-1.11 % of base) : 5436.dasm - System.Number:RoundNumber(byref,int,ubyte) (Tier1)
          -7 (-1.11 % of base) : 44962.dasm - Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass:LeaveParameter(Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.Location):this (Tier1)
          -6 (-0.90 % of base) : 10970.dasm - System.Text.Ascii:GetIndexOfFirstNonAsciiByte_Vector(ulong,ulong):ulong (Tier1)
         -15 (-0.72 % of base) : 42222.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetSpecialType(byte):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (Tier1)
         -16 (-0.59 % of base) : 49840.dasm - Sigil.Impl.VerifiableTracker:CollapseAndVerify():Sigil.Impl.VerificationResult:this (Tier1)
          -4 (-0.54 % of base) : 23654.dasm - System.Text.Json.Tests.Perf_Segment:ReadSingleSegmentSequenceByN(int):this (Tier1-OSR)
          -2 (-0.49 % of base) : 41613.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MetadataOrSourceAssemblySymbol:GetDeclaredSpecialTypeMember(int):Microsoft.CodeAnalysis.CSharp.Symbol:this (Tier1)
          -3 (-0.26 % of base) : 7255.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (Tier0-FullOpts)
          -5 (-0.18 % of base) : 18259.dasm - System.IPv6AddressHelper:ParseCanonicalName(System.String,int,byref,byref):System.String (Tier0-FullOpts)
         -17 (-0.14 % of base) : 27595.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.CollectionsOfPrimitives,int) (FullOpts)

27 total methods with Code Size differences (22 improved, 5 regressed).


coreclr_tests.run.windows.x64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 393037195 (overridden on cmd)
Total bytes of diff: 393034522 (overridden on cmd)
Total bytes of delta: -2673 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          97 : 372385.dasm (4.14 % of base)
          78 : 571542.dasm (1.64 % of base)
          75 : 190745.dasm (1.78 % of base)
          75 : 462281.dasm (1.80 % of base)
          73 : 190722.dasm (1.66 % of base)
          73 : 462276.dasm (1.68 % of base)
          54 : 241601.dasm (1.05 % of base)
          40 : 282214.dasm (4.11 % of base)
          35 : 462283.dasm (1.99 % of base)
          35 : 190759.dasm (1.93 % of base)
          35 : 371226.dasm (1.05 % of base)
          34 : 511243.dasm (0.74 % of base)
          33 : 367553.dasm (3.60 % of base)
          30 : 496838.dasm (1.14 % of base)
          30 : 479674.dasm (0.78 % of base)
          22 : 335397.dasm (4.00 % of base)
          21 : 370462.dasm (0.51 % of base)
          20 : 340081.dasm (0.97 % of base)
          20 : 218733.dasm (4.31 % of base)
          18 : 233771.dasm (1.30 % of base)

Top file improvements (bytes):
        -172 : 389197.dasm (-19.63 % of base)
        -120 : 464294.dasm (-17.83 % of base)
        -114 : 394049.dasm (-7.29 % of base)
         -57 : 372282.dasm (-1.90 % of base)
         -57 : 370137.dasm (-1.90 % of base)
         -57 : 389196.dasm (-18.27 % of base)
         -54 : 389195.dasm (-10.98 % of base)
         -49 : 476108.dasm (-1.67 % of base)
         -47 : 203275.dasm (-40.17 % of base)
         -47 : 205439.dasm (-40.17 % of base)
         -42 : 205445.dasm (-50.00 % of base)
         -42 : 211893.dasm (-52.50 % of base)
         -42 : 23990.dasm (-52.50 % of base)
         -41 : 205446.dasm (-48.24 % of base)
         -41 : 513663.dasm (-24.70 % of base)
         -41 : 205444.dasm (-49.40 % of base)
         -41 : 205447.dasm (-48.24 % of base)
         -40 : 205442.dasm (-51.28 % of base)
         -40 : 6765.dasm (-51.28 % of base)
         -40 : 205443.dasm (-50.00 % of base)

68 total files with Code Size differences (32 improved, 36 regressed), 20 unchanged.

Top method regressions (bytes):
          97 (4.14 % of base) : 372385.dasm - Internal.NativeFormat.VertexArray:ExpandBlock(int,int,ubyte,byref):Internal.NativeFormat.Vertex:this (Tier1)
          78 (1.64 % of base) : 571542.dasm - Microsoft.Build.Evaluation.Evaluator`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon]:ReadNewTargetElement(Microsoft.Build.Construction.ProjectTargetElement,ubyte,Microsoft.Build.Evaluation.EvaluationProfiler):Microsoft.Build.Execution.ProjectTargetInstance (FullOpts)
          75 (1.78 % of base) : 190745.dasm - NetClient.StringTests:Marshal_LPWString():this (FullOpts)
          75 (1.80 % of base) : 462281.dasm - NetClient.StringTests:Marshal_LPWString():this (FullOpts)
          73 (1.66 % of base) : 190722.dasm - NetClient.StringTests:Marshal_LPString():this (FullOpts)
          73 (1.68 % of base) : 462276.dasm - NetClient.StringTests:Marshal_LPString():this (FullOpts)
          54 (1.05 % of base) : 241601.dasm - System.Diagnostics.Tracing.EventPipePayloadDecoder:DecodePayload(byref,System.ReadOnlySpan`1[ubyte]):System.Object[] (Tier1)
          40 (4.11 % of base) : 282214.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateConstructors(System.RuntimeType+RuntimeTypeCache+Filter):System.Reflection.RuntimeConstructorInfo[]:this (Tier1-OSR)
          35 (1.05 % of base) : 371226.dasm - Internal.JitInterface.CorInfoImpl:getClassAttribsInternal(Internal.TypeSystem.TypeDesc):uint:this (Tier1)
          35 (1.99 % of base) : 462283.dasm - NetClient.StringTests:Marshal_BStrString():this (FullOpts)
          35 (1.93 % of base) : 190759.dasm - NetClient.StringTests:Marshal_BStrString():this (FullOpts)
          34 (0.74 % of base) : 511243.dasm - IlasmPortablePdbTests.IlasmPortablePdbTester:TestPortablePdbLocalScope(System.String):this (FullOpts)
          33 (3.60 % of base) : 367553.dasm - Internal.JitInterface.CorInfoImpl:<IsClassPreInited>g__IsDynamicStaticsOrHasBoxedRegularStatics|47_1(Internal.TypeSystem.TypeDesc):ubyte (Tier1)
          30 (0.78 % of base) : 479674.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:ImportDataMembers():this (FullOpts)
          30 (1.14 % of base) : 496838.dasm - Test_DictionaryExpansion:DoTest(int) (FullOpts)
          22 (4.00 % of base) : 335397.dasm - System.Environment:get_CurrentDirectoryCore():System.String (Tier0-FullOpts)
          21 (0.51 % of base) : 370462.dasm - ILCompiler.ReadyToRunVisibilityRootProvider:RootMethods(Internal.TypeSystem.MetadataType,System.String,ILCompiler.IRootingServiceProvider,ubyte):this (Tier1-OSR)
          20 (0.97 % of base) : 340081.dasm - System.Reflection.PortableExecutable.PEReader:.ctor(System.IO.Stream,int,int):this (Tier1)
          20 (4.31 % of base) : 218733.dasm - System.Reflection.TypeNameParser:Parse():System.Type:this (Tier1)
          18 (1.30 % of base) : 233771.dasm - System.Text.RegularExpressions.RegexPrefixAnalyzer:<FindPrefix>g__Process|0_0(System.Text.RegularExpressions.RegexNode,byref):ubyte (Tier1)

Top method improvements (bytes):
        -172 (-19.63 % of base) : 389197.dasm - Microsoft.FSharp.Core.PrintfImpl+GenericNumber:isPositive(System.Object):ubyte (FullOpts)
        -120 (-17.83 % of base) : 464294.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal:IsDefault(System.Object):ubyte (FullOpts)
        -114 (-7.29 % of base) : 394049.dasm - Xunit.Assert:Equal(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte,ubyte,ubyte) (FullOpts)
         -57 (-1.90 % of base) : 372282.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.AttributePresenceFilterNode:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (Tier1-OSR)
         -57 (-1.90 % of base) : 370137.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.AttributePresenceFilterNode:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (Tier1-OSR)
         -57 (-18.27 % of base) : 389196.dasm - Microsoft.FSharp.Core.PrintfImpl+FloatAndDecimal:isNumber(System.Object):ubyte (FullOpts)
         -54 (-10.98 % of base) : 389195.dasm - Microsoft.FSharp.Core.PrintfImpl+FloatAndDecimal:toFormattedString(System.String,System.Object):System.String (FullOpts)
         -49 (-1.67 % of base) : 476108.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (FullOpts)
         -47 (-40.17 % of base) : 203275.dasm - System.Double:Equals(System.Object):ubyte:this (Tier1)
         -47 (-40.17 % of base) : 205439.dasm - System.Single:Equals(System.Object):ubyte:this (Tier1)
         -42 (-50.00 % of base) : 205445.dasm - System.Byte:Equals(System.Object):ubyte:this (Tier1)
         -42 (-52.50 % of base) : 211893.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -42 (-52.50 % of base) : 23990.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -41 (-24.70 % of base) : 513663.dasm - Runtime_40440+LargeStruct:Equals(System.Object):ubyte:this (FullOpts)
         -41 (-48.24 % of base) : 205446.dasm - System.Int16:Equals(System.Object):ubyte:this (Tier1)
         -41 (-48.24 % of base) : 205447.dasm - System.SByte:Equals(System.Object):ubyte:this (Tier1)
         -41 (-49.40 % of base) : 205444.dasm - System.UInt16:Equals(System.Object):ubyte:this (Tier1)
         -40 (-51.28 % of base) : 205442.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -40 (-51.28 % of base) : 6765.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -40 (-51.28 % of base) : 203274.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)

Top method regressions (percentages):
           6 (6.67 % of base) : 372146.dasm - System.Collections.Generic.List`1+Enumerator[ILCompiler.DependencyAnalysis.ReadyToRun.MethodWithGCInfo+FixupCell]:MoveNext():ubyte:this (Tier1)
           6 (6.67 % of base) : 369697.dasm - System.Collections.Generic.List`1+Enumerator[ILCompiler.DependencyAnalysis.ReadyToRun.MethodWithGCInfo+FixupCell]:MoveNext():ubyte:this (Tier1)
          20 (4.31 % of base) : 218733.dasm - System.Reflection.TypeNameParser:Parse():System.Type:this (Tier1)
          97 (4.14 % of base) : 372385.dasm - Internal.NativeFormat.VertexArray:ExpandBlock(int,int,ubyte,byref):Internal.NativeFormat.Vertex:this (Tier1)
          40 (4.11 % of base) : 282214.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateConstructors(System.RuntimeType+RuntimeTypeCache+Filter):System.Reflection.RuntimeConstructorInfo[]:this (Tier1-OSR)
          22 (4.00 % of base) : 335397.dasm - System.Environment:get_CurrentDirectoryCore():System.String (Tier0-FullOpts)
           5 (3.65 % of base) : 193764.dasm - System.Reflection.RuntimeParameterInfo:GetParameters(System.IRuntimeMethodInfo,System.Reflection.MemberInfo,System.Signature):System.Reflection.ParameterInfo[] (Tier1)
           5 (3.65 % of base) : 365054.dasm - System.Reflection.RuntimeParameterInfo:GetParameters(System.IRuntimeMethodInfo,System.Reflection.MemberInfo,System.Signature):System.Reflection.ParameterInfo[] (Tier1)
          33 (3.60 % of base) : 367553.dasm - Internal.JitInterface.CorInfoImpl:<IsClassPreInited>g__IsDynamicStaticsOrHasBoxedRegularStatics|47_1(Internal.TypeSystem.TypeDesc):ubyte (Tier1)
           9 (3.40 % of base) : 467993.dasm - MyCounter[System.__Canon]:Increment[System.__Canon]():this (FullOpts)
           2 (3.08 % of base) : 560493.dasm - Internal.IL.ILImporter:PropagateThisState(Internal.IL.ILImporter+BasicBlock,Internal.IL.ILImporter+BasicBlock):this (FullOpts)
           3 (2.97 % of base) : 241253.dasm - System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (Tier1)
           3 (2.97 % of base) : 370542.dasm - System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (Tier1)
           3 (2.94 % of base) : 479989.dasm - System.Runtime.Serialization.Json.JsonEncodingStreamWrapper:ReadEncoding(ubyte,ubyte):int (FullOpts)
          14 (2.89 % of base) : 277830.dasm - System.Text.UTF8Encoding:GetBytes(System.String,int,int,ubyte[],int):int:this (FullOpts)
           4 (2.88 % of base) : 252019.dasm - System.Reflection.RuntimeParameterInfo:GetParameters(System.IRuntimeMethodInfo,System.Reflection.MemberInfo,System.Signature):System.Reflection.ParameterInfo[] (Tier1)
           3 (2.56 % of base) : 366965.dasm - System.Collections.Generic.List`1+Enumerator[ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]]:MoveNext():ubyte:this (Tier1)
           3 (2.56 % of base) : 371415.dasm - System.Collections.Generic.List`1+Enumerator[ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]]:MoveNext():ubyte:this (Tier1)
           6 (2.30 % of base) : 120107.dasm - System.Reflection.Emit.SignatureHelper:SetNumberOfSignatureElements(ubyte):this (Tier1)
           6 (2.30 % of base) : 219108.dasm - System.Reflection.Emit.SignatureHelper:SetNumberOfSignatureElements(ubyte):this (Tier1)

Top method improvements (percentages):
         -42 (-52.50 % of base) : 211893.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -42 (-52.50 % of base) : 23990.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -40 (-51.28 % of base) : 205442.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -40 (-51.28 % of base) : 6765.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -40 (-51.28 % of base) : 203274.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -40 (-51.28 % of base) : 217305.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -40 (-51.28 % of base) : 205448.dasm - System.UInt32:Equals(System.Object):ubyte:this (Tier1)
         -42 (-50.00 % of base) : 205445.dasm - System.Byte:Equals(System.Object):ubyte:this (Tier1)
         -40 (-50.00 % of base) : 205443.dasm - System.Int64:Equals(System.Object):ubyte:this (Tier1)
         -40 (-50.00 % of base) : 205449.dasm - System.UInt64:Equals(System.Object):ubyte:this (Tier1)
         -41 (-49.40 % of base) : 205444.dasm - System.UInt16:Equals(System.Object):ubyte:this (Tier1)
         -41 (-48.24 % of base) : 205446.dasm - System.Int16:Equals(System.Object):ubyte:this (Tier1)
         -41 (-48.24 % of base) : 205447.dasm - System.SByte:Equals(System.Object):ubyte:this (Tier1)
         -47 (-40.17 % of base) : 203275.dasm - System.Double:Equals(System.Object):ubyte:this (Tier1)
         -47 (-40.17 % of base) : 205439.dasm - System.Single:Equals(System.Object):ubyte:this (Tier1)
         -41 (-24.70 % of base) : 513663.dasm - Runtime_40440+LargeStruct:Equals(System.Object):ubyte:this (FullOpts)
         -32 (-24.62 % of base) : 480902.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
         -25 (-23.81 % of base) : 464491.dasm - Dynamic.EventTest+DynamicEventTestHandler:TryInvoke(System.Dynamic.InvokeBinder,System.Object[],byref):ubyte:this (FullOpts)
         -27 (-21.95 % of base) : 198708.dasm - System.Boolean:Equals(System.Object):ubyte:this (Instrumented Tier1)
         -25 (-21.37 % of base) : 5634.dasm - System.Int32:Equals(System.Object):ubyte:this (Instrumented Tier1)


libraries.crossgen2.windows.x64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 39486202 (overridden on cmd)
Total bytes of diff: 39485257 (overridden on cmd)
Total bytes of delta: -945 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          48 : 92820.dasm (0.96 % of base)
          44 : 135762.dasm (9.76 % of base)
          27 : 37384.dasm (3.12 % of base)
          19 : 167335.dasm (4.00 % of base)
          18 : 8964.dasm (7.00 % of base)
          16 : 206806.dasm (2.54 % of base)
          16 : 8949.dasm (6.67 % of base)
          15 : 34917.dasm (1.27 % of base)
          12 : 103321.dasm (1.29 % of base)
          11 : 103675.dasm (1.79 % of base)
          10 : 173174.dasm (0.76 % of base)
           9 : 37751.dasm (0.44 % of base)
           9 : 221658.dasm (4.02 % of base)
           9 : 128436.dasm (1.52 % of base)
           8 : 61776.dasm (1.23 % of base)
           8 : 103677.dasm (2.26 % of base)
           7 : 162339.dasm (0.38 % of base)
           7 : 187109.dasm (0.38 % of base)
           7 : 85429.dasm (0.16 % of base)
           6 : 34652.dasm (1.97 % of base)

Top file improvements (bytes):
         -74 : 189336.dasm (-2.06 % of base)
         -56 : 4904.dasm (-1.57 % of base)
         -56 : 4946.dasm (-1.57 % of base)
         -52 : 4162.dasm (-4.53 % of base)
         -46 : 37750.dasm (-1.69 % of base)
         -37 : 2107.dasm (-4.01 % of base)
         -35 : 210848.dasm (-5.58 % of base)
         -32 : 127433.dasm (-26.02 % of base)
         -32 : 241359.dasm (-24.43 % of base)
         -31 : 235329.dasm (-7.35 % of base)
         -31 : 223470.dasm (-7.35 % of base)
         -30 : 128868.dasm (-0.27 % of base)
         -25 : 195013.dasm (-1.22 % of base)
         -24 : 93137.dasm (-2.30 % of base)
         -24 : 235016.dasm (-3.87 % of base)
         -21 : 225273.dasm (-1.05 % of base)
         -19 : 95374.dasm (-3.61 % of base)
         -19 : 136812.dasm (-1.39 % of base)
         -19 : 192529.dasm (-1.54 % of base)
         -19 : 60077.dasm (-3.41 % of base)

74 total files with Code Size differences (38 improved, 36 regressed), 20 unchanged.

Top method regressions (bytes):
          48 (0.96 % of base) : 92820.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:BetterFunctionMember[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],ubyte,byref):int:this (FullOpts)
          44 (9.76 % of base) : 135762.dasm - System.ComponentModel.AttributeCollection:FromExisting(System.ComponentModel.AttributeCollection,System.Attribute[]):System.ComponentModel.AttributeCollection (FullOpts)
          27 (3.12 % of base) : 37384.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
          19 (4.00 % of base) : 167335.dasm - System.Xml.Ucs4Decoder:Convert(ubyte[],int,int,ushort[],int,int,ubyte,byref,byref,byref):this (FullOpts)
          18 (7.00 % of base) : 8964.dasm - Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
          16 (6.67 % of base) : 8949.dasm - Microsoft.FSharp.Core.FSharpRef`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
          16 (2.54 % of base) : 206806.dasm - Xunit.Assert:Equal(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte,ubyte,ubyte) (FullOpts)
          15 (1.27 % of base) : 34917.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (FullOpts)
          12 (1.29 % of base) : 103321.dasm - Microsoft.CodeAnalysis.VisualBasic.CodeGen.CodeGenerator:EmitBinaryArithOperatorInstructionAndDowncast(Microsoft.CodeAnalysis.VisualBasic.BoundBinaryOperator):this (FullOpts)
          11 (1.79 % of base) : 103675.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation:CheckBinaryBuiltInOperator(System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+OperatorInfo) (FullOpts)
          10 (0.76 % of base) : 173174.dasm - System.Xml.XmlTextReaderImpl:ParseNumericCharRefInline(int,ubyte,System.Text.StringBuilder,byref,byref):int:this (FullOpts)
           9 (0.44 % of base) : 37751.dasm - Microsoft.VisualBasic.CompilerServices.StringType:StrLikeText(System.String,System.String):ubyte (FullOpts)
           9 (1.52 % of base) : 128436.dasm - System.DirectoryServices.SearchResultCollection+ResultsEnumerator:MoveNext():ubyte:this (FullOpts)
           9 (4.02 % of base) : 221658.dasm - System.IO.Pipelines.StreamPipeReader:TryReadInternal(System.Threading.CancellationTokenSource,byref):ubyte:this (FullOpts)
           8 (1.23 % of base) : 61776.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:BetterOperator(Microsoft.CodeAnalysis.CSharp.BinaryOperatorSignature,Microsoft.CodeAnalysis.CSharp.BinaryOperatorSignature,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression,byref):int:this (FullOpts)
           8 (2.26 % of base) : 103677.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation:CheckUnaryBuiltInOperator(System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+OperatorInfo) (FullOpts)
           7 (0.16 % of base) : 85429.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodSymbol:CheckModifiers(ubyte,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
           7 (0.38 % of base) : 162339.dasm - Microsoft.CodeAnalysis.Diagnostics.SuppressMessageAttributeState+TargetSymbolResolver:Resolve(byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ISymbol]:this (FullOpts)
           7 (0.38 % of base) : 187109.dasm - Microsoft.CodeAnalysis.Diagnostics.SuppressMessageAttributeState+TargetSymbolResolver:Resolve(byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ISymbol]:this (FullOpts)
           6 (5.45 % of base) : 37489.dasm - System.Threading.PortableThreadPool:RemoveWaitThread(System.Threading.PortableThreadPool+WaitThread):this (FullOpts)

Top method improvements (bytes):
         -74 (-2.06 % of base) : 189336.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyData[System.__Canon,System.__Canon]],int):this (FullOpts)
         -56 (-1.57 % of base) : 4946.dasm - System.Data.RBTree`1[int]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
         -56 (-1.57 % of base) : 4904.dasm - System.Data.RBTree`1[System.__Canon]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
         -52 (-4.53 % of base) : 4162.dasm - System.Data.Select:AnalyzeExpression(System.Data.BinaryNode):this (FullOpts)
         -46 (-1.69 % of base) : 37750.dasm - Microsoft.VisualBasic.CompilerServices.StringType:StrLikeBinary(System.String,System.String):ubyte (FullOpts)
         -37 (-4.01 % of base) : 2107.dasm - System.Data.Common.DataAdapter:Fill(System.Data.DataTable[],System.Data.IDataReader,int,int):int:this (FullOpts)
         -35 (-5.58 % of base) : 210848.dasm - System.Diagnostics.LegacyPropagator:TryExtractBaggage(System.String,byref):ubyte (FullOpts)
         -32 (-24.43 % of base) : 241359.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
         -32 (-26.02 % of base) : 127433.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
         -31 (-7.35 % of base) : 235329.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
         -31 (-7.35 % of base) : 223470.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
         -30 (-0.27 % of base) : 128868.dasm - System.DirectoryServices.ActiveDirectory.Utils:GetReplicaList(System.DirectoryServices.ActiveDirectory.DirectoryContext,System.String,System.String,ubyte,ubyte,ubyte):System.Collections.ArrayList (FullOpts)
         -25 (-1.22 % of base) : 195013.dasm - System.Runtime.Serialization.Json.JsonFormatWriterGenerator+CriticalHelper:WriteMembers(System.Runtime.Serialization.DataContracts.ClassDataContract,System.Reflection.Emit.LocalBuilder,System.Runtime.Serialization.DataContracts.ClassDataContract):int:this (FullOpts)
         -24 (-2.30 % of base) : 93137.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseCommaSeparatedSyntaxList[System.__Canon](byref,ushort,System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte],System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,System.__Canon],Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon],ubyte,ubyte,ubyte):Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:this (FullOpts)
         -24 (-3.87 % of base) : 235016.dasm - System.Net.HttpListenerRequest+Helpers:GetCharSetValueFromHeader(System.String):System.String (FullOpts)
         -21 (-1.05 % of base) : 225273.dasm - System.UriHelper:UnescapeString(ulong,int,int,byref,ushort,ushort,ushort,int,System.UriParser,ubyte) (FullOpts)
         -19 (-3.41 % of base) : 60077.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindArgumentAndName(Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Syntax.NameColonSyntax,ubyte):this (FullOpts)
         -19 (-1.39 % of base) : 136812.dasm - System.ComponentModel.ReflectTypeDescriptionProvider:GetExtenders(System.Collections.ICollection,System.Object,System.Collections.IDictionary):System.ComponentModel.IExtenderProvider[] (FullOpts)
         -19 (-1.54 % of base) : 192529.dasm - System.Runtime.Serialization.ReflectionXmlClassWriter:ReflectionWriteMembers(System.Runtime.Serialization.XmlWriterDelegator,System.Object,System.Runtime.Serialization.XmlObjectSerializerWriteContext,System.Runtime.Serialization.DataContracts.ClassDataContract,System.Runtime.Serialization.DataContracts.ClassDataContract,int,System.Xml.XmlDictionaryString[]):int:this (FullOpts)
         -19 (-3.61 % of base) : 95374.dasm - System.Speech.Internal.SrgsParser.XmlParser:ParseText(System.Speech.Internal.SrgsParser.IElement,System.String,System.String,System.String,float,System.Speech.Internal.SrgsParser.CreateTokenCallback) (FullOpts)

Top method regressions (percentages):
          44 (9.76 % of base) : 135762.dasm - System.ComponentModel.AttributeCollection:FromExisting(System.ComponentModel.AttributeCollection,System.Attribute[]):System.ComponentModel.AttributeCollection (FullOpts)
           3 (8.82 % of base) : 148245.dasm - System.Security.Cryptography.SHA1CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
           3 (8.82 % of base) : 148276.dasm - System.Security.Cryptography.SHA256CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
           3 (8.82 % of base) : 148307.dasm - System.Security.Cryptography.SHA384CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
           3 (8.82 % of base) : 148338.dasm - System.Security.Cryptography.SHA512CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
           3 (8.11 % of base) : 241992.dasm - System.Diagnostics.Eventing.Reader.EventLogWatcher:set_Enabled(ubyte):this (FullOpts)
          18 (7.00 % of base) : 8964.dasm - Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
           3 (6.98 % of base) : 147838.dasm - System.Security.Cryptography.KeyedHashAlgorithm:Dispose(ubyte):this (FullOpts)
          16 (6.67 % of base) : 8949.dasm - Microsoft.FSharp.Core.FSharpRef`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
           5 (6.10 % of base) : 235079.dasm - System.Net.WebSockets.HttpWebSocket:ThrowIfConnectionAborted(System.IO.Stream,ubyte) (FullOpts)
           3 (5.66 % of base) : 38492.dasm - Microsoft.VisualBasic.CompilerServices.StringType:StrLikeCompareBinary(ubyte,ubyte,ushort,ushort):ubyte (FullOpts)
           6 (5.45 % of base) : 37489.dasm - System.Threading.PortableThreadPool:RemoveWaitThread(System.Threading.PortableThreadPool+WaitThread):this (FullOpts)
           5 (4.95 % of base) : 211891.dasm - System.Security.AccessControl.CommonAcl:GetInheritanceFlagsForRemoval(System.Security.AccessControl.QualifiedAce,int,System.Guid,byref):ubyte (FullOpts)
           5 (4.76 % of base) : 211890.dasm - System.Security.AccessControl.CommonAcl:GetAccessMaskForRemoval(System.Security.AccessControl.QualifiedAce,int,System.Guid,byref):ubyte (FullOpts)
           3 (4.69 % of base) : 1895.dasm - System.Data.SqlTypes.SqlBoolean:Equals(System.Data.SqlTypes.SqlBoolean):ubyte:this (FullOpts)
           9 (4.02 % of base) : 221658.dasm - System.IO.Pipelines.StreamPipeReader:TryReadInternal(System.Threading.CancellationTokenSource,byref):ubyte:this (FullOpts)
          19 (4.00 % of base) : 167335.dasm - System.Xml.Ucs4Decoder:Convert(ubyte[],int,int,ushort[],int,int,ubyte,byref,byref,byref):this (FullOpts)
           4 (3.81 % of base) : 1761.dasm - System.Data.SqlTypes.SqlString:Equals(System.Data.SqlTypes.SqlString):ubyte:this (FullOpts)
           3 (3.80 % of base) : 238577.dasm - System.Net.Mail.AlternateView:Dispose(ubyte):this (FullOpts)
           3 (3.70 % of base) : 148512.dasm - System.Security.Cryptography.UniversalCryptoDecryptor:Dispose(ubyte):this (FullOpts)

Top method improvements (percentages):
         -32 (-26.02 % of base) : 127433.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
         -32 (-24.43 % of base) : 241359.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
         -18 (-9.73 % of base) : 179166.dasm - Microsoft.CodeAnalysis.CommandLineParser:<RemoveQuotesAndSlashesEx>g__processSlashes|43_0(System.Text.StringBuilder,System.ReadOnlySpan`1[ushort],byref) (FullOpts)
         -18 (-9.73 % of base) : 154259.dasm - Microsoft.CodeAnalysis.CommandLineParser:<RemoveQuotesAndSlashesEx>g__processSlashes|43_0(System.Text.StringBuilder,System.ReadOnlySpan`1[ushort],byref) (FullOpts)
         -15 (-9.09 % of base) : 4690.dasm - System.Data.ExpressionParser:ScanDate():this (FullOpts)
         -16 (-8.42 % of base) : 36042.dasm - System.DateTimeFormat:IsUseGenitiveForm(System.ReadOnlySpan`1[ushort],int,int,ushort):ubyte (FullOpts)
          -5 (-8.20 % of base) : 137654.dasm - System.Runtime.InteropServices.ComEventsMethod:Remove(System.Runtime.InteropServices.ComEventsMethod,System.Runtime.InteropServices.ComEventsMethod):System.Runtime.InteropServices.ComEventsMethod (FullOpts)
         -31 (-7.35 % of base) : 235329.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
         -31 (-7.35 % of base) : 223470.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
          -5 (-7.04 % of base) : 208596.dasm - System.Xml.Linq.XObject:SkipNotify():ubyte:this (FullOpts)
         -11 (-6.92 % of base) : 135441.dasm - System.Configuration.Internal.WriteFileContext:ReplaceFile(System.String,System.String):this (FullOpts)
          -8 (-6.90 % of base) : 152503.dasm - System.Transactions.CheapUnfairReaderWriterLock:EnterWriteLock():this (FullOpts)
          -5 (-6.85 % of base) : 175715.dasm - System.Xml.Serialization.XmlSchemaObjectComparer:Namespace(System.Xml.Schema.XmlSchemaObject):System.String (FullOpts)
          -5 (-6.41 % of base) : 208373.dasm - System.Xml.Linq.XObject:get_BaseUri():System.String:this (FullOpts)
          -5 (-5.88 % of base) : 137342.dasm - System.Runtime.InteropServices.ComEventsSink:Remove(System.Runtime.InteropServices.ComEventsSink,System.Runtime.InteropServices.ComEventsSink):System.Runtime.InteropServices.ComEventsSink (FullOpts)
         -16 (-5.61 % of base) : 204252.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
         -35 (-5.58 % of base) : 210848.dasm - System.Diagnostics.LegacyPropagator:TryExtractBaggage(System.String,byref):ubyte (FullOpts)
         -12 (-5.58 % of base) : 209084.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:SymmetricExceptWithSameComparer(System.__Canon[],int):this (FullOpts)
         -12 (-5.38 % of base) : 137353.dasm - System.Runtime.InteropServices.ComEventsSink:RemoveHandler(int,System.Object):this (FullOpts)
         -13 (-4.96 % of base) : 34223.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)


libraries.pmi.windows.x64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 61661352 (overridden on cmd)
Total bytes of diff: 61658816 (overridden on cmd)
Total bytes of delta: -2536 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          68 : 190557.dasm (1.29 % of base)
          54 : 158459.dasm (1.59 % of base)
          51 : 102285.dasm (3.17 % of base)
          37 : 65624.dasm (0.98 % of base)
          30 : 183519.dasm (5.48 % of base)
          30 : 205359.dasm (0.79 % of base)
          28 : 100084.dasm (1.48 % of base)
          27 : 107324.dasm (0.51 % of base)
          26 : 162023.dasm (0.81 % of base)
          22 : 163816.dasm (1.41 % of base)
          22 : 185473.dasm (1.41 % of base)
          19 : 208559.dasm (4.32 % of base)
          19 : 209858.dasm (1.44 % of base)
          15 : 197665.dasm (1.03 % of base)
          15 : 208372.dasm (0.90 % of base)
          15 : 78425.dasm (2.19 % of base)
          14 : 273808.dasm (0.65 % of base)
          14 : 78429.dasm (2.39 % of base)
          12 : 287496.dasm (1.35 % of base)
          12 : 64044.dasm (0.63 % of base)

Top file improvements (bytes):
        -172 : 7482.dasm (-19.63 % of base)
        -141 : 130701.dasm (-18.88 % of base)
        -114 : 305865.dasm (-7.29 % of base)
         -80 : 161267.dasm (-1.56 % of base)
         -57 : 7431.dasm (-18.27 % of base)
         -56 : 19363.dasm (-1.57 % of base)
         -56 : 19424.dasm (-1.57 % of base)
         -56 : 77864.dasm (-1.28 % of base)
         -54 : 7430.dasm (-10.98 % of base)
         -46 : 57606.dasm (-1.58 % of base)
         -41 : 240269.dasm (-45.56 % of base)
         -41 : 56052.dasm (-44.57 % of base)
         -40 : 131410.dasm (-31.75 % of base)
         -39 : 207692.dasm (-8.16 % of base)
         -38 : 57951.dasm (-2.01 % of base)
         -37 : 21313.dasm (-3.83 % of base)
         -36 : 270929.dasm (-3.43 % of base)
         -33 : 131406.dasm (-16.18 % of base)
         -33 : 240035.dasm (-3.74 % of base)
         -32 : 230348.dasm (-26.23 % of base)

78 total files with Code Size differences (38 improved, 40 regressed), 20 unchanged.

Top method regressions (bytes):
          68 (1.29 % of base) : 190557.dasm - System.DirectoryServices.ActiveDirectory.ActiveDirectorySite:GetBridgeheadServers():System.DirectoryServices.ActiveDirectory.ReadOnlyDirectoryServerCollection:this (FullOpts)
          54 (1.59 % of base) : 158459.dasm - Microsoft.Build.Execution.ProjectInstance:Initialize(Microsoft.Build.Construction.ProjectRootElement,System.Collections.Generic.IDictionary`2[System.String,System.String],System.String,System.String,int,Microsoft.Build.Execution.BuildParameters,Microsoft.Build.BackEnd.Logging.ILoggingService,Microsoft.Build.Framework.BuildEventContext,Microsoft.Build.BackEnd.SdkResolution.ISdkResolverService,int,System.Nullable`1[int],Microsoft.Build.Evaluation.Context.EvaluationContext):this (FullOpts)
          51 (3.17 % of base) : 102285.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.MetadataDecoder:SubstituteNoPiaLocalType(byref,ubyte,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,System.String,System.String,System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol):Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol (FullOpts)
          37 (0.98 % of base) : 65624.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:BestTypeForLambdaReturns(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.ValueTuple`3[Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte]],Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Conversions,byref):Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations (FullOpts)
          30 (5.48 % of base) : 183519.dasm - System.ComponentModel.AttributeCollection:FromExisting(System.ComponentModel.AttributeCollection,System.Attribute[]):System.ComponentModel.AttributeCollection (FullOpts)
          30 (0.79 % of base) : 205359.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:ImportDataMembers():this (FullOpts)
          28 (1.48 % of base) : 100084.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:CheckSharedSymbolAccess(Microsoft.CodeAnalysis.SyntaxNode,ubyte,byref,int,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):ubyte:this (FullOpts)
          27 (0.51 % of base) : 107324.dasm - Microsoft.CodeAnalysis.VisualBasic.CodeGen.CodeGenerator:EmitBinaryArithOperatorInstructionAndDowncast(Microsoft.CodeAnalysis.VisualBasic.BoundBinaryOperator):this (FullOpts)
          26 (0.81 % of base) : 162023.dasm - Microsoft.Build.Evaluation.Project+ProjectImpl:BuildGlobResultFromIncludeItem(Microsoft.Build.Construction.ProjectItemElement,System.Collections.Generic.IReadOnlyDictionary`2[System.String,Microsoft.Build.Evaluation.Project+ProjectImpl+CumulativeRemoveElementData]):Microsoft.Build.Evaluation.GlobResult:this (FullOpts)
          22 (1.41 % of base) : 163816.dasm - System.Configuration.ConfigurationElement:ParseLockedAttributes(System.Configuration.ConfigurationValue,int):System.Configuration.ConfigurationLockCollection:this (FullOpts)
          22 (1.41 % of base) : 185473.dasm - System.Configuration.ConfigurationElement:ParseLockedAttributes(System.Configuration.ConfigurationValue,int):System.Configuration.ConfigurationLockCollection:this (FullOpts)
          19 (4.32 % of base) : 208559.dasm - System.Xml.Ucs4Decoder:Convert(ubyte[],int,int,ushort[],int,int,ubyte,byref,byref,byref):this (FullOpts)
          19 (1.44 % of base) : 209858.dasm - System.Xml.XmlTextReaderImpl:ParseNumericCharRefInline(int,ubyte,System.Text.StringBuilder,byref,byref):int:this (FullOpts)
          15 (2.19 % of base) : 78425.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolatedStringToken>g__getCloseQuote|428_5(byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
          15 (1.03 % of base) : 197665.dasm - System.Net.Http.HttpConnection+ChunkedEncodingReadStream:ReadChunkFromConnectionBuffer(int,System.Threading.CancellationTokenRegistration):System.Nullable`1[System.ReadOnlyMemory`1[ubyte]]:this (FullOpts)
          15 (0.90 % of base) : 208372.dasm - System.Xml.XmlConvert:EncodeName(System.String,ubyte,ubyte):System.String (FullOpts)
          14 (2.39 % of base) : 78429.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolation>g__getInterpolationCloseToken|434_2(Microsoft.CodeAnalysis.GreenNode,byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
          14 (0.65 % of base) : 273808.dasm - System.DirectoryServices.Protocols.LdapSessionOptions:ProcessNotifyConnection(long,long,long,long,long,int,ulong,ulong,int):int:this (FullOpts)
          12 (0.63 % of base) : 64044.dasm - Microsoft.CodeAnalysis.CSharp.CSharpSemanticModel:GetDeclaredSymbolCore(Microsoft.CodeAnalysis.SyntaxNode,System.Threading.CancellationToken):Microsoft.CodeAnalysis.ISymbol:this (FullOpts)
          12 (1.35 % of base) : 287496.dasm - System.Net.NetworkInformation.Ping:PingCallback():this (FullOpts)

Top method improvements (bytes):
        -172 (-19.63 % of base) : 7482.dasm - Microsoft.FSharp.Core.PrintfImpl+GenericNumber:isPositive(System.Object):ubyte (FullOpts)
        -141 (-18.88 % of base) : 130701.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal:IsDefault(System.Object):ubyte (FullOpts)
        -114 (-7.29 % of base) : 305865.dasm - Xunit.Assert:Equal(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte,ubyte,ubyte) (FullOpts)
         -80 (-1.56 % of base) : 161267.dasm - Microsoft.Build.Shared.FileMatcher:GetFilesImplementation(System.String,System.String,System.Collections.Generic.List`1[System.String]):System.ValueTuple`3[System.String[],int,System.String]:this (FullOpts)
         -57 (-18.27 % of base) : 7431.dasm - Microsoft.FSharp.Core.PrintfImpl+FloatAndDecimal:isNumber(System.Object):ubyte (FullOpts)
         -56 (-1.28 % of base) : 77864.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveParser:ParsePragmaDirective(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken,ubyte):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveTriviaSyntax:this (FullOpts)
         -56 (-1.57 % of base) : 19363.dasm - System.Data.RBTree`1[System.__Canon]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
         -56 (-1.57 % of base) : 19424.dasm - System.Data.RBTree`1[ubyte]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
         -54 (-10.98 % of base) : 7430.dasm - Microsoft.FSharp.Core.PrintfImpl+FloatAndDecimal:toFormattedString(System.String,System.Object):System.String (FullOpts)
         -46 (-1.58 % of base) : 57606.dasm - Microsoft.VisualBasic.CompilerServices.StringType:StrLikeBinary(System.String,System.String):ubyte (FullOpts)
         -41 (-45.56 % of base) : 240269.dasm - ILCompiler.IBC.IBCProfileParser+IBCBlobKey:Equals(System.Object):ubyte:this (FullOpts)
         -41 (-44.57 % of base) : 56052.dasm - Microsoft.Diagnostics.Tracing.CLRRuntimeActivityComputer+IdOfIncompleteAction:Equals(System.Object):ubyte:this (FullOpts)
         -40 (-31.75 % of base) : 131410.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.TypeTable+KeyPair`2[ubyte,System.Nullable`1[int]]:Equals(System.Object):ubyte:this (FullOpts)
         -39 (-8.16 % of base) : 207692.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (FullOpts)
         -38 (-2.01 % of base) : 57951.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindingScore(System.Reflection.ParameterInfo[],int[],System.Type[],ubyte,int):int:this (FullOpts)
         -37 (-3.83 % of base) : 21313.dasm - System.Data.Common.DataAdapter:Fill(System.Data.DataTable[],System.Data.IDataReader,int,int):int:this (FullOpts)
         -36 (-3.43 % of base) : 270929.dasm - System.Diagnostics.LegacyPropagator:TryExtractBaggage(System.String,byref):ubyte (FullOpts)
         -33 (-3.74 % of base) : 240035.dasm - ILCompiler.LazyGenericsSupport+Graph`1[System.__Canon]:FindCyclesWorker(ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon],System.Collections.Generic.List`1[ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]],byref,System.Diagnostics.Stopwatch) (FullOpts)
         -33 (-16.18 % of base) : 131406.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.TypeTable+KeyPair`2[System.__Canon,System.Nullable`1[int]]:Equals(System.Object):ubyte:this (FullOpts)
         -32 (-4.23 % of base) : 240042.dasm - ILCompiler.LazyGenericsSupport+Graph`1[ubyte]:FindCyclesWorker(ILCompiler.LazyGenericsSupport+Graph`1+Edge[ubyte],System.Collections.Generic.List`1[ILCompiler.LazyGenericsSupport+Graph`1+Edge[ubyte]],byref,System.Diagnostics.Stopwatch) (FullOpts)

Top method regressions (percentages):
           3 (10.34 % of base) : 271832.dasm - System.Diagnostics.Eventing.Reader.EventLogWatcher:set_Enabled(ubyte):this (FullOpts)
           3 (8.82 % of base) : 227853.dasm - System.Security.Cryptography.SHA1CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
           3 (8.82 % of base) : 227885.dasm - System.Security.Cryptography.SHA256CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
           3 (8.82 % of base) : 227917.dasm - System.Security.Cryptography.SHA384CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
           3 (8.82 % of base) : 227949.dasm - System.Security.Cryptography.SHA512CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
           3 (6.98 % of base) : 227091.dasm - System.Security.Cryptography.HMAC:Dispose(ubyte):this (FullOpts)
           3 (6.98 % of base) : 227299.dasm - System.Security.Cryptography.KeyedHashAlgorithm:Dispose(ubyte):this (FullOpts)
           3 (5.66 % of base) : 57608.dasm - Microsoft.VisualBasic.CompilerServices.StringType:StrLikeCompareBinary(ubyte,ubyte,ushort,ushort):ubyte (FullOpts)
          30 (5.48 % of base) : 183519.dasm - System.ComponentModel.AttributeCollection:FromExisting(System.ComponentModel.AttributeCollection,System.Attribute[]):System.ComponentModel.AttributeCollection (FullOpts)
          19 (4.32 % of base) : 208559.dasm - System.Xml.Ucs4Decoder:Convert(ubyte[],int,int,ushort[],int,int,ubyte,byref,byref,byref):this (FullOpts)
           9 (4.13 % of base) : 277197.dasm - System.IO.Pipelines.StreamPipeReader:TryReadInternal(System.Threading.CancellationTokenSource,byref):ubyte:this (FullOpts)
           3 (4.00 % of base) : 228158.dasm - System.Security.Cryptography.UniversalCryptoDecryptor:Dispose(ubyte):this (FullOpts)
           3 (3.75 % of base) : 286194.dasm - System.Net.Mail.AlternateView:Dispose(ubyte):this (FullOpts)
           2 (3.64 % of base) : 198301.dasm - System.Net.Http.HttpConnectionPool:GetSslOptionsForRequest(System.Net.Http.HttpRequestMessage):System.Net.Security.SslClientAuthenticationOptions:this (FullOpts)
           3 (3.57 % of base) : 157949.dasm - Microsoft.Build.Internal.ProjectXmlUtilities:GetAttributeValue(Microsoft.Build.Construction.XmlElementWithLocation,System.String):System.String (FullOpts)
           3 (3.49 % of base) : 284923.dasm - System.Net.WebSockets.HttpWebSocket:ThrowIfConnectionAborted(System.IO.Stream,ubyte) (FullOpts)
           3 (3.33 % of base) : 227148.dasm - System.Security.Cryptography.HMACSHA1:Dispose(ubyte):this (FullOpts)
           3 (3.33 % of base) : 227168.dasm - System.Security.Cryptography.HMACSHA256:Dispose(ubyte):this (FullOpts)
           3 (3.33 % of base) : 227271.dasm - System.Security.Cryptography.HMACSHA3_512:Dispose(ubyte):this (FullOpts)
           3 (3.33 % of base) : 227188.dasm - System.Security.Cryptography.HMACSHA384:Dispose(ubyte):this (FullOpts)

Top method improvements (percentages):
         -41 (-45.56 % of base) : 240269.dasm - ILCompiler.IBC.IBCProfileParser+IBCBlobKey:Equals(System.Object):ubyte:this (FullOpts)
         -41 (-44.57 % of base) : 56052.dasm - Microsoft.Diagnostics.Tracing.CLRRuntimeActivityComputer+IdOfIncompleteAction:Equals(System.Object):ubyte:this (FullOpts)
         -40 (-31.75 % of base) : 131410.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.TypeTable+KeyPair`2[ubyte,System.Nullable`1[int]]:Equals(System.Object):ubyte:this (FullOpts)
         -29 (-26.61 % of base) : 96851.dasm - System.Speech.Synthesis.TtsEngine.ProsodyNumber:Equals(System.Object):ubyte:this (FullOpts)
         -29 (-26.61 % of base) : 96777.dasm - System.Speech.Synthesis.TtsEngine.SpeechEventInfo:Equals(System.Object):ubyte:this (FullOpts)
         -32 (-26.23 % of base) : 230348.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
         -29 (-25.00 % of base) : 96837.dasm - System.Speech.Synthesis.TtsEngine.ContourPoint:Equals(System.Object):ubyte:this (FullOpts)
         -32 (-24.62 % of base) : 296608.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
        -172 (-19.63 % of base) : 7482.dasm - Microsoft.FSharp.Core.PrintfImpl+GenericNumber:isPositive(System.Object):ubyte (FullOpts)
        -141 (-18.88 % of base) : 130701.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal:IsDefault(System.Object):ubyte (FullOpts)
         -29 (-18.71 % of base) : 96814.dasm - System.Speech.Synthesis.TtsEngine.FragmentState:Equals(System.Object):ubyte:this (FullOpts)
         -57 (-18.27 % of base) : 7431.dasm - Microsoft.FSharp.Core.PrintfImpl+FloatAndDecimal:isNumber(System.Object):ubyte (FullOpts)
         -23 (-16.55 % of base) : 269718.dasm - System.Data.Odbc.OdbcParameter:GetParameterScale(System.Object):ubyte:this (FullOpts)
         -33 (-16.18 % of base) : 131406.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.TypeTable+KeyPair`2[System.__Canon,System.Nullable`1[int]]:Equals(System.Object):ubyte:this (FullOpts)
         -13 (-12.87 % of base) : 219391.dasm - System.Xml.Serialization.XmlSchemaObjectComparer:Namespace(System.Xml.Schema.XmlSchemaObject):System.String (FullOpts)
         -24 (-11.43 % of base) : 59272.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckConstantBounds(byte,Microsoft.CodeAnalysis.ConstantValue,byref):ubyte (FullOpts)
         -23 (-11.11 % of base) : 56045.dasm - Microsoft.Diagnostics.Tracing.CLRRuntimeActivityComputer+EventUID:Equals(System.Object):ubyte:this (FullOpts)
         -54 (-10.98 % of base) : 7430.dasm - Microsoft.FSharp.Core.PrintfImpl+FloatAndDecimal:toFormattedString(System.String,System.Object):System.String (FullOpts)
         -30 (-10.91 % of base) : 267285.dasm - System.ComponentModel.Composition.Hosting.ScopingExtensions:ContainsPartMetadata[int](System.ComponentModel.Composition.Primitives.ComposablePartDefinition,System.String,int):ubyte (FullOpts)
         -21 (-10.29 % of base) : 102275.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol:this (FullOpts)


libraries_tests.run.windows.x64.Release.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 280818413 (overridden on cmd)
Total bytes of diff: 280782760 (overridden on cmd)
Total bytes of delta: -35653 (-0.01 % of base)
    diff is a regression.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         423 : 619689.dasm (13.99 % of base)
         311 : 196420.dasm (6.97 % of base)
         270 : 237710.dasm (9.20 % of base)
         268 : 65627.dasm (10.22 % of base)
         265 : 256039.dasm (6.88 % of base)
         258 : 317106.dasm (5.54 % of base)
         233 : 87886.dasm (5.17 % of base)
         215 : 53481.dasm (8.39 % of base)
         206 : 87895.dasm (8.20 % of base)
         203 : 52412.dasm (4.50 % of base)
         189 : 577672.dasm (7.41 % of base)
         188 : 619333.dasm (6.81 % of base)
         187 : 91508.dasm (1.06 % of base)
         169 : 118341.dasm (5.96 % of base)
         166 : 419254.dasm (1.75 % of base)
         158 : 90055.dasm (1.87 % of base)
         152 : 167635.dasm (4.29 % of base)
         151 : 89726.dasm (0.75 % of base)
         151 : 395476.dasm (8.18 % of base)
         151 : 405024.dasm (8.11 % of base)

Top file improvements (bytes):
        -272 : 66192.dasm (-1.89 % of base)
        -260 : 615912.dasm (-1.13 % of base)
        -209 : 445215.dasm (-1.38 % of base)
        -188 : 445202.dasm (-1.22 % of base)
        -168 : 618208.dasm (-6.45 % of base)
        -165 : 626788.dasm (-1.70 % of base)
        -157 : 616431.dasm (-2.34 % of base)
        -151 : 167712.dasm (-1.80 % of base)
        -150 : 84984.dasm (-1.24 % of base)
        -148 : 633178.dasm (-1.44 % of base)
        -144 : 528536.dasm (-1.57 % of base)
        -136 : 86434.dasm (-2.71 % of base)
        -135 : 176199.dasm (-2.59 % of base)
        -127 : 64592.dasm (-1.61 % of base)
        -122 : 622182.dasm (-2.84 % of base)
        -117 : 635091.dasm (-1.00 % of base)
        -114 : 625688.dasm (-1.44 % of base)
        -105 : 429709.dasm (-16.51 % of base)
        -104 : 591457.dasm (-1.16 % of base)
        -103 : 89742.dasm (-0.59 % of base)

80 total files with Code Size differences (47 improved, 33 regressed), 20 unchanged.

Top method regressions (bytes):
         423 (13.99 % of base) : 619689.dasm - Microsoft.CodeAnalysis.CSharp.ConversionsBase:ClassifyBuiltInConversion(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte,byref):Microsoft.CodeAnalysis.CSharp.Conversion:this (Tier1)
         311 (6.97 % of base) : 196420.dasm - Xunit.Sdk.ReflectionMethodInfo:GetParent(System.Reflection.MethodInfo):System.Reflection.MethodInfo (Tier1)
         270 (9.20 % of base) : 237710.dasm - Xunit.Sdk.ReflectionMethodInfo:GetParent(System.Reflection.MethodInfo):System.Reflection.MethodInfo (Tier1)
         268 (10.22 % of base) : 65627.dasm - Microsoft.CodeAnalysis.CSharp.ConversionsBase:ClassifyExplicitOnlyConversionFromExpression(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte,byref,ubyte):Microsoft.CodeAnalysis.CSharp.Conversion:this (Tier1)
         265 (6.88 % of base) : 256039.dasm - System.Data.ProviderBase.DbMetaDataFactory:FilterColumns(System.Data.DataTable,System.String[],System.Data.DataColumnCollection):System.Data.DataColumn[] (Tier1)
         258 (5.54 % of base) : 317106.dasm - Xunit.Sdk.ReflectionMethodInfo:GetParent(System.Reflection.MethodInfo):System.Reflection.MethodInfo (Tier1)
         233 (5.17 % of base) : 87886.dasm - Microsoft.CodeAnalysis.CSharp.ConversionsBase:AddUserDefinedConversionsToExplicitCandidateSet(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.UserDefinedConversionAnalysis],Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,ubyte,ubyte,byref):this (Tier1)
         215 (8.39 % of base) : 53481.dasm - Microsoft.CodeAnalysis.CSharp.ConversionsBase:ClassifyExplicitBuiltInOnlyConversion(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte,byref,ubyte):Microsoft.CodeAnalysis.CSharp.Conversion:this (Tier1)
         206 (8.20 % of base) : 87895.dasm - Microsoft.CodeAnalysis.CSharp.ConversionsBase:ClassifyExplicitBuiltInOnlyConversion(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte,byref,ubyte):Microsoft.CodeAnalysis.CSharp.Conversion:this (Tier1)
         203 (4.50 % of base) : 52412.dasm - Microsoft.CodeAnalysis.SyntaxValueProvider:<GetMatchingNodes>g__processMember|16_3(Microsoft.CodeAnalysis.SyntaxNode,byref) (Tier1)
         189 (7.41 % of base) : 577672.dasm - Xunit.Sdk.ReflectionMethodInfo:GetParent(System.Reflection.MethodInfo):System.Reflection.MethodInfo (Tier1)
         188 (6.81 % of base) : 619333.dasm - Microsoft.CodeAnalysis.CSharp.ConversionsBase:ClassifyExplicitBuiltInOnlyConversion(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte,byref,ubyte):Microsoft.CodeAnalysis.CSharp.Conversion:this (Tier1)
         187 (1.06 % of base) : 91508.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:MakeParameters[System.__Canon,System.__Canon,System.__Canon](Microsoft.CodeAnalysis.CSharp.Binder,System.__Canon,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon],byref,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,ubyte,ubyte,ubyte,int,System.Func`12[System.__Canon,System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,System.__Canon,ubyte,int,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,ubyte,ubyte,System.__Canon,System.__Canon],ubyte):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier1)
         169 (5.96 % of base) : 118341.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryFindMatchingConstructor(System.Type,System.Type[],byref,byref):ubyte (Tier1)
         166 (1.75 % of base) : 419254.dasm - System.Xml.Serialization.XmlSerializationWriterILGen:WriteEnumAndArrayTypes():this (Tier1)
         158 (1.87 % of base) : 90055.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:ValidateAttributeUsageAndDecodeWellKnownAttributes(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Binder],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,short):Microsoft.CodeAnalysis.WellKnownAttributeData:this (Tier1)
         152 (4.29 % of base) : 167635.dasm - Microsoft.CodeAnalysis.CSharp.ConversionsBase:AddUserDefinedConversionsToExplicitCandidateSet(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.UserDefinedConversionAnalysis],Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,ubyte,ubyte,byref):this (Tier1)
         151 (0.75 % of base) : 89726.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindAttributeCore(Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundAttribute:this (Tier1)
         151 (8.18 % of base) : 395476.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetNamedArgument[int](System.String):int:this (Tier1)
         151 (8.11 % of base) : 405024.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetNamedArgument[int](System.String):int:this (Tier1)

Top method improvements (bytes):
        -272 (-1.89 % of base) : 66192.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckValidNullableMethodOverride[System.ValueTuple`2[System.__Canon,ubyte]](Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.Symbols.ReportMismatchInReturnType`1[System.ValueTuple`2[System.__Canon,ubyte]],Microsoft.CodeAnalysis.CSharp.Symbols.ReportMismatchInParameterType`1[System.ValueTuple`2[System.__Canon,ubyte]],System.ValueTuple`2[System.__Canon,ubyte],ubyte):ubyte (Tier1)
        -260 (-1.13 % of base) : 615912.dasm - Microsoft.CodeAnalysis.CSharp.Binder:TryPerformConstructorOverloadResolution(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,System.String,Microsoft.CodeAnalysis.Location,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,byref,ubyte,ubyte):ubyte:this (Tier1)
        -209 (-1.38 % of base) : 445215.dasm - System.Xml.Tests.TCAttributeAccess:TestAttributeAccess4():int:this (Tier1)
        -188 (-1.22 % of base) : 445202.dasm - System.Xml.Tests.TCAttributeAccess:TestAttributeAccess1():int:this (Tier1)
        -168 (-6.45 % of base) : 618208.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this (Tier1)
        -165 (-1.70 % of base) : 626788.dasm - Microsoft.Cci.MetadataWriter:PopulateMethodTableRows(int[]):this (Tier1)
        -157 (-2.34 % of base) : 616431.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitArgumentsEvaluate(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitResult]):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitResult]:this (Tier1)
        -151 (-1.80 % of base) : 167712.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:ValidateAttributeUsageAndDecodeWellKnownAttributes(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Binder],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,short):Microsoft.CodeAnalysis.WellKnownAttributeData:this (Tier1)
        -150 (-1.24 % of base) : 84984.dasm - Microsoft.CodeAnalysis.CSharp.DeclarationTreeBuilder:VisitTypeDeclaration(Microsoft.CodeAnalysis.CSharp.Syntax.TypeDeclarationSyntax,ubyte):Microsoft.CodeAnalysis.CSharp.SingleTypeDeclaration:this (Tier1)
        -148 (-1.44 % of base) : 633178.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitArrayInitialization(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundArrayInitialization,ubyte):Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:this (Tier1)
        -144 (-1.57 % of base) : 528536.dasm - System.Security.Cryptography.EcDsa.Tests.ECDsaTests:SignVerify_InteroperableSameKeys_RoundTripsUnlessTampered(System.Security.Cryptography.ECDsa,System.Security.Cryptography.HashAlgorithmName):this (Tier1)
        -136 (-2.71 % of base) : 86434.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckAttributeTypeViability(Microsoft.CodeAnalysis.CSharp.Symbol,ubyte,byref,byref):ubyte:this (Tier1)
        -135 (-2.59 % of base) : 176199.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberFieldSymbol:MakeModifiers(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxTokenList,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref):uint (Tier1)
        -127 (-1.61 % of base) : 64592.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseFunctionPointerTypeSyntax():Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.FunctionPointerTypeSyntax:this (Tier1)
        -122 (-2.84 % of base) : 622182.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindArgumentAndName(Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,byref,Microsoft.CodeAnalysis.CSharp.Syntax.ArgumentSyntax,ubyte,ubyte):this (Tier1)
        -117 (-1.00 % of base) : 635091.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:TryEmitOptimizedReadonlySpanCreation(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundExpression,ubyte,Microsoft.CodeAnalysis.CSharp.BoundExpression,byref,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte:this (Tier1)
        -114 (-1.44 % of base) : 625688.dasm - Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:TryProcessDocumentationCommentTriviaNodes(Microsoft.CodeAnalysis.CSharp.Symbol,ubyte,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Syntax.DocumentationCommentTriviaSyntax],byref,byref,byref,byref,byref):ubyte:this (Tier1)
        -105 (-16.51 % of base) : 429709.dasm - System.Text.EncodingTable:InternalGetCodePageFromName(System.String):int (Tier1)
        -104 (-1.16 % of base) : 591457.dasm - System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1[System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (Tier1)
        -103 (-0.59 % of base) : 89742.dasm - Microsoft.CodeAnalysis.CSharp.Binder:TryPerformConstructorOverloadResolution(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,System.String,Microsoft.CodeAnalysis.Location,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,byref,ubyte,ubyte):ubyte:this (Tier1)

Top method regressions (percentages):
         423 (13.99 % of base) : 619689.dasm - Microsoft.CodeAnalysis.CSharp.ConversionsBase:ClassifyBuiltInConversion(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte,byref):Microsoft.CodeAnalysis.CSharp.Conversion:this (Tier1)
          32 (11.03 % of base) : 615668.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_IsDelaySigned():ubyte:this (Tier1)
         268 (10.22 % of base) : 65627.dasm - Microsoft.CodeAnalysis.CSharp.ConversionsBase:ClassifyExplicitOnlyConversionFromExpression(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte,byref,ubyte):Microsoft.CodeAnalysis.CSharp.Conversion:this (Tier1)
         270 (9.20 % of base) : 237710.dasm - Xunit.Sdk.ReflectionMethodInfo:GetParent(System.Reflection.MethodInfo):System.Reflection.MethodInfo (Tier1)
         117 (9.18 % of base) : 428083.dasm - System.Xml.Xsl.Xslt.XslAstAnalyzer:VisitChildren(System.Xml.Xsl.Xslt.XslNode):int:this (Tier1)
          50 (8.43 % of base) : 618214.dasm - Microsoft.CodeAnalysis.Compilation:get_HasStrongName():ubyte:this (Tier1)
         215 (8.39 % of base) : 53481.dasm - Microsoft.CodeAnalysis.CSharp.ConversionsBase:ClassifyExplicitBuiltInOnlyConversion(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte,byref,ubyte):Microsoft.CodeAnalysis.CSharp.Conversion:this (Tier1)
         206 (8.20 % of base) : 87895.dasm - Microsoft.CodeAnalysis.CSharp.ConversionsBase:ClassifyExplicitBuiltInOnlyConversion(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte,byref,ubyte):Microsoft.CodeAnalysis.CSharp.Conversion:this (Tier1)
         151 (8.18 % of base) : 395476.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetNamedArgument[int](System.String):int:this (Tier1)
         151 (8.11 % of base) : 405024.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetNamedArgument[int](System.String):int:this (Tier1)
         136 (7.91 % of base) : 124041.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetNamedArgument[System.__Canon](System.String):System.__Canon:this (Tier1)
          40 (7.48 % of base) : 356645.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
          10 (7.46 % of base) : 257724.dasm - System.Diagnostics.Activity:set_Current(System.Diagnostics.Activity) (Tier1)
         189 (7.41 % of base) : 577672.dasm - Xunit.Sdk.ReflectionMethodInfo:GetParent(System.Reflection.MethodInfo):System.Reflection.MethodInfo (Tier1)
         136 (7.34 % of base) : 378288.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetNamedArgument[System.__Canon](System.String):System.__Canon:this (Tier1)
         136 (7.31 % of base) : 671889.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetNamedArgument[System.__Canon](System.String):System.__Canon:this (Tier1)
         138 (7.23 % of base) : 512723.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetNamedArgument[System.__Canon](System.String):System.__Canon:this (Tier1)
           3 (6.98 % of base) : 524631.dasm - System.Security.Cryptography.HMAC:Dispose(ubyte):this (Tier1)
         311 (6.97 % of base) : 196420.dasm - Xunit.Sdk.ReflectionMethodInfo:GetParent(System.Reflection.MethodInfo):System.Reflection.MethodInfo (Tier1)
           6 (6.90 % of base) : 428544.dasm - System.Collections.Generic.List`1+Enumerator[int]:MoveNext():ubyte:this (Tier1)

Top method improvements (percentages):
         -41 (-51.90 % of base) : 678899.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -39 (-50.65 % of base) : 419423.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -39 (-50.65 % of base) : 332570.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -39 (-50.65 % of base) : 356565.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -39 (-50.65 % of base) : 594213.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -39 (-50.65 % of base) : 198247.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -39 (-50.65 % of base) : 217791.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -39 (-50.65 % of base) : 627006.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -39 (-50.65 % of base) : 604130.dasm - System.UInt32:Equals(System.Object):ubyte:this (Tier1)
         -42 (-50.00 % of base) : 442608.dasm - System.UInt16:Equals(System.Object):ubyte:this (Tier1)
         -41 (-49.40 % of base) : 164806.dasm - System.Boolean:Equals(System.Object):ubyte:this (Tier1)
         -41 (-49.40 % of base) : 44928.dasm - System.Boolean:Equals(System.Object):ubyte:this (Tier1)
         -41 (-49.40 % of base) : 640214.dasm - System.Boolean:Equals(System.Object):ubyte:this (Tier1)
         -41 (-49.40 % of base) : 106700.dasm - System.Boolean:Equals(System.Object):ubyte:this (Tier1)
         -41 (-49.40 % of base) : 595042.dasm - System.Boolean:Equals(System.Object):ubyte:this (Tier1)
         -41 (-49.40 % of base) : 84578.dasm - System.Boolean:Equals(System.Object):ubyte:this (Tier1)
         -41 (-49.40 % of base) : 506338.dasm - System.Boolean:Equals(System.Object):ubyte:this (Tier1)
         -41 (-49.40 % of base) : 442782.dasm - System.Byte:Equals(System.Object):ubyte:this (Tier1)
         -41 (-49.40 % of base) : 604063.dasm - System.Byte:Equals(System.Object):ubyte:this (Tier1)
         -39 (-49.37 % of base) : 440916.dasm - System.Int64:Equals(System.Object):ubyte:this (Tier1)


librariestestsnotieredcompilation.run.windows.x64.Release.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 137065702 (overridden on cmd)
Total bytes of diff: 137064637 (overridden on cmd)
Total bytes of delta: -1065 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         101 : 188883.dasm (3.51 % of base)
         101 : 190601.dasm (2.44 % of base)
          88 : 14110.dasm (1.47 % of base)
          78 : 49711.dasm (2.92 % of base)
          78 : 43999.dasm (2.92 % of base)
          75 : 190614.dasm (1.96 % of base)
          74 : 150118.dasm (2.27 % of base)
          74 : 190609.dasm (1.72 % of base)
          73 : 76743.dasm (1.43 % of base)
          64 : 190649.dasm (2.16 % of base)
          64 : 190359.dasm (2.02 % of base)
          55 : 190331.dasm (1.58 % of base)
          53 : 190696.dasm (1.42 % of base)
          52 : 232492.dasm (3.85 % of base)
          48 : 187432.dasm (2.48 % of base)
          43 : 282146.dasm (0.85 % of base)
          43 : 191092.dasm (1.40 % of base)
          42 : 152657.dasm (2.26 % of base)
          42 : 225001.dasm (2.97 % of base)
          42 : 5543.dasm (0.90 % of base)

Top file improvements (bytes):
        -164 : 122801.dasm (-18.89 % of base)
        -160 : 314307.dasm (-4.31 % of base)
        -132 : 190068.dasm (-1.99 % of base)
        -120 : 25548.dasm (-17.83 % of base)
        -104 : 314386.dasm (-4.47 % of base)
         -98 : 1292.dasm (-6.58 % of base)
         -74 : 222734.dasm (-7.68 % of base)
         -61 : 85852.dasm (-3.35 % of base)
         -56 : 94731.dasm (-1.57 % of base)
         -56 : 94724.dasm (-1.57 % of base)
         -46 : 60908.dasm (-1.65 % of base)
         -45 : 168774.dasm (-1.89 % of base)
         -43 : 205167.dasm (-52.44 % of base)
         -39 : 63584.dasm (-8.16 % of base)
         -38 : 60584.dasm (-2.01 % of base)
         -37 : 96728.dasm (-4.07 % of base)
         -36 : 101459.dasm (-4.03 % of base)
         -35 : 217703.dasm (-4.63 % of base)
         -33 : 168770.dasm (-1.51 % of base)
         -33 : 168874.dasm (-1.40 % of base)

80 total files with Code Size differences (36 improved, 44 regressed), 20 unchanged.

Top method regressions (bytes):
         101 (3.51 % of base) : 188883.dasm - System.Reflection.Emit.Tests.MethodBuilderDefineParameter:DefineParameter_TwoParameters():this (FullOpts)
         101 (2.44 % of base) : 190601.dasm - System.Reflection.Metadata.Tests.MetadataReaderTests:ValidateTypeDefTableMod():this (FullOpts)
          88 (1.47 % of base) : 14110.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:BetterFunctionMember[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],ubyte,byref):int:this (FullOpts)
          78 (2.92 % of base) : 49711.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (FullOpts)
          78 (2.92 % of base) : 43999.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (FullOpts)
          75 (1.96 % of base) : 190614.dasm - System.Reflection.Metadata.Tests.MetadataReaderTests:ValidateTypeDefTable():this (FullOpts)
          74 (2.27 % of base) : 150118.dasm - System.Buffers.Text.Tests.Base64DecoderUnitTests:DecodingInvalidBytesPadding(ubyte):this (FullOpts)
          74 (1.72 % of base) : 190609.dasm - System.Reflection.Metadata.Tests.MetadataReaderTests:ValidateFieldDef(System.Reflection.Metadata.MetadataReader,uint,uint,ubyte):this (FullOpts)
          73 (1.43 % of base) : 76743.dasm - System.Collections.Specialized.Tests.NameValueCollectionAddStringStringTests:Add():this (FullOpts)
          64 (2.02 % of base) : 190359.dasm - System.Reflection.Metadata.Tests.MetadataReaderTests:ValidateTypeRefTable():this (FullOpts)
          64 (2.16 % of base) : 190649.dasm - System.Reflection.Metadata.Tests.MetadataReaderTests:ValidateTypeRefTableMod():this (FullOpts)
          55 (1.58 % of base) : 190331.dasm - System.Reflection.Metadata.Tests.MetadataReaderTests:ValidateAssemblyRefTable():this (FullOpts)
          53 (1.42 % of base) : 190696.dasm - System.Reflection.Metadata.Tests.MetadataReaderTests:ValidateGenericParamTable():this (FullOpts)
          52 (3.85 % of base) : 232492.dasm - System.Security.Cryptography.Rsa.Tests.ImportExport:VerifyDValue(byref) (FullOpts)
          48 (2.48 % of base) : 187432.dasm - System.Reflection.Emit.Tests.AssemblySaveTypeBuilderTests:SaveArrayTypeSignature(int,System.String):this (FullOpts)
          43 (1.40 % of base) : 191092.dasm - System.Reflection.Metadata.Tests.AssemblyReferenceTests:ValidateAssemblyNameForMultipleAssemblyReferences():this (FullOpts)
          43 (0.85 % of base) : 282146.dasm - System.Text.RegularExpressions.Tests.RegexUnicodeCharTests+<RegexUnicodeChar>d__1:MoveNext():this (FullOpts)
          42 (0.90 % of base) : 5543.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (FullOpts)
          42 (2.26 % of base) : 152657.dasm - System.SpanTests.SpanTests:RunLastIndexOfAnyAlgComplexityTest[ushort](ushort[]) (FullOpts)
          42 (2.97 % of base) : 225001.dasm - System.Tests.DecimalTests+BigDecimal:Div(System.Tests.DecimalTests+BigDecimal,byref):System.Tests.DecimalTests+BigDecimal:this (FullOpts)

Top method improvements (bytes):
        -164 (-18.89 % of base) : 122801.dasm - Microsoft.FSharp.Core.PrintfImpl+GenericNumber:isPositive(System.Object):ubyte (FullOpts)
        -160 (-4.31 % of base) : 314307.dasm - System.Threading.Tasks.Tests.TaskRtTests_Core:RunTaskCompletionSourceTests_SetException() (FullOpts)
        -132 (-1.99 % of base) : 190068.dasm - System.Reflection.Metadata.Decoding.Tests.SignatureDecoderTests:SimpleSignatureProviderCoverage():this (FullOpts)
        -120 (-17.83 % of base) : 25548.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal:IsDefault(System.Object):ubyte (FullOpts)
        -104 (-4.47 % of base) : 314386.dasm - System.Threading.Tasks.Tests.TaskRtTests_Core:RunTaskCompletionSourceTests_CancellationTests() (FullOpts)
         -98 (-6.58 % of base) : 1292.dasm - Xunit.Assert:Equal(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte,ubyte,ubyte) (FullOpts)
         -74 (-7.68 % of base) : 222734.dasm - System.Tests.UInt16Tests:EqualsTest(ushort,System.Object,ubyte) (FullOpts)
         -61 (-3.35 % of base) : 85852.dasm - System.ComponentModel.Composition.Hosting.ScopeExtensionsTests:ContainsMetadata():this (FullOpts)
         -56 (-1.57 % of base) : 94724.dasm - System.Data.RBTree`1[int]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
         -56 (-1.57 % of base) : 94731.dasm - System.Data.RBTree`1[System.__Canon]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
         -46 (-1.65 % of base) : 60908.dasm - Microsoft.VisualBasic.CompilerServices.StringType:StrLikeBinary(System.String,System.String):ubyte (FullOpts)
         -45 (-1.89 % of base) : 168774.dasm - System.Numerics.Tensors.Tests.ConvertTests:ConvertSaturatingImpl[byte,byte]() (FullOpts)
         -43 (-52.44 % of base) : 205167.dasm - System.Runtime.Serialization.Formatters.Tests.StructContainingArraysOfOtherStructs:Equals(System.Object):ubyte:this (FullOpts)
         -39 (-8.16 % of base) : 63584.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (FullOpts)
         -38 (-2.01 % of base) : 60584.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindingScore(System.Reflection.ParameterInfo[],int[],System.Type[],ubyte,int):int:this (FullOpts)
         -37 (-4.07 % of base) : 96728.dasm - System.Data.Common.DataAdapter:Fill(System.Data.DataTable[],System.Data.IDataReader,int,int):int:this (FullOpts)
         -36 (-4.03 % of base) : 101459.dasm - System.Diagnostics.LegacyPropagator:TryExtractBaggage(System.String,byref):ubyte (FullOpts)
         -35 (-4.63 % of base) : 217703.dasm - System.Tests.CharTests:EqualsTest(ushort,System.Object,ubyte) (FullOpts)
         -33 (-1.40 % of base) : 168874.dasm - System.Numerics.Tensors.Tests.ConvertTests:ConvertCheckedImpl[ubyte,ubyte]() (FullOpts)
         -33 (-1.51 % of base) : 168770.dasm - System.Numerics.Tensors.Tests.ConvertTests:ConvertTruncatingImpl[byte,byte]() (FullOpts)

Top method regressions (percentages):
           3 (16.67 % of base) : 162064.dasm - System.Net.NetworkInformation.Tests.PingTest+FinalizingPing:Dispose(ubyte):this (FullOpts)
           3 (8.82 % of base) : 228992.dasm - System.Security.Cryptography.SHA1CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
           3 (8.82 % of base) : 229005.dasm - System.Security.Cryptography.SHA256CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
           3 (8.82 % of base) : 228999.dasm - System.Security.Cryptography.SHA384CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
           3 (8.82 % of base) : 228986.dasm - System.Security.Cryptography.SHA512CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
           3 (6.98 % of base) : 232416.dasm - System.Security.Cryptography.HMAC:Dispose(ubyte):this (FullOpts)
          25 (6.07 % of base) : 22032.dasm - System.Formats.Asn1.AsnDecoder:DecodeLength(System.ReadOnlySpan`1[ubyte],int,byref,byref):int (FullOpts)
          24 (5.87 % of base) : 196497.dasm - System.IO.Tests.PathTests:GetDirectoryName_NetFxInvalid(System.String):this (FullOpts)
          30 (5.70 % of base) : 81339.dasm - System.ComponentModel.AttributeCollection:FromExisting(System.ComponentModel.AttributeCollection,System.Attribute[]):System.ComponentModel.AttributeCollection (FullOpts)
          33 (5.67 % of base) : 216986.dasm - System.Tests.DecimalTests+BigDecimal:CompareTo(System.Tests.DecimalTests+BigDecimal):int:this (FullOpts)
           3 (5.66 % of base) : 60912.dasm - Microsoft.VisualBasic.CompilerServices.StringType:StrLikeCompareBinary(ubyte,ubyte,ushort,ushort):ubyte (FullOpts)
          23 (4.79 % of base) : 196332.dasm - System.Tests.ConvertToStringTests:FromByte() (FullOpts)
          23 (4.75 % of base) : 196289.dasm - System.Tests.ConvertToStringTests:FromUInt16Array() (FullOpts)
          22 (4.37 % of base) : 196293.dasm - System.Tests.ConvertToStringTests:FromUInt32Array() (FullOpts)
          19 (4.32 % of base) : 99235.dasm - System.Xml.Ucs4Decoder:Convert(ubyte[],int,int,ushort[],int,int,ubyte,byref,byref,byref):this (FullOpts)
           9 (4.13 % of base) : 135000.dasm - System.IO.Pipelines.StreamPipeReader:TryReadInternal(System.Threading.CancellationTokenSource,byref):ubyte:this (FullOpts)
           3 (4.11 % of base) : 183508.dasm - XmlCoreTest.Common.CustomWriter:Dispose(ubyte):this (FullOpts)
          32 (4.07 % of base) : 165896.dasm - System.Net.Tests.WebHeaderCollectionTest:Getter_Success():this (FullOpts)
           3 (4.00 % of base) : 34688.dasm - System.Security.Cryptography.UniversalCryptoDecryptor:Dispose(ubyte):this (FullOpts)
          52 (3.85 % of base) : 232492.dasm - System.Security.Cryptography.Rsa.Tests.ImportExport:VerifyDValue(byref) (FullOpts)

Top method improvements (percentages):
         -43 (-52.44 % of base) : 205167.dasm - System.Runtime.Serialization.Formatters.Tests.StructContainingArraysOfOtherStructs:Equals(System.Object):ubyte:this (FullOpts)
         -32 (-26.23 % of base) : 99226.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
         -32 (-24.62 % of base) : 32119.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
        -164 (-18.89 % of base) : 122801.dasm - Microsoft.FSharp.Core.PrintfImpl+GenericNumber:isPositive(System.Object):ubyte (FullOpts)
        -120 (-17.83 % of base) : 25548.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal:IsDefault(System.Object):ubyte (FullOpts)
         -23 (-17.04 % of base) : 97690.dasm - System.Data.Tests.DataRowTest2+Address:Equals(System.Object):ubyte:this (FullOpts)
         -23 (-11.06 % of base) : 46818.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckConstantBounds(byte,Microsoft.CodeAnalysis.ConstantValue,byref):ubyte (FullOpts)
         -23 (-11.06 % of base) : 11057.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckConstantBounds(byte,Microsoft.CodeAnalysis.ConstantValue,byref):ubyte (FullOpts)
         -23 (-11.06 % of base) : 52432.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckConstantBounds(byte,Microsoft.CodeAnalysis.ConstantValue,byref):ubyte (FullOpts)
         -15 (-9.38 % of base) : 95810.dasm - System.Data.ExpressionParser:ScanDate():this (FullOpts)
         -18 (-8.22 % of base) : 45806.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:this (FullOpts)
         -39 (-8.16 % of base) : 63584.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (FullOpts)
         -74 (-7.68 % of base) : 222734.dasm - System.Tests.UInt16Tests:EqualsTest(ushort,System.Object,ubyte) (FullOpts)
         -17 (-7.14 % of base) : 92003.dasm - System.Configuration.BaseConfigurationRecord:FindFactoryRecord(System.String,ubyte,byref):System.Configuration.FactoryRecord:this (FullOpts)
         -31 (-6.90 % of base) : 157624.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
         -31 (-6.90 % of base) : 162787.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
         -31 (-6.90 % of base) : 159451.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
          -5 (-6.76 % of base) : 762.dasm - System.Xml.Linq.XObject:SkipNotify():ubyte:this (FullOpts)
         -98 (-6.58 % of base) : 1292.dasm - Xunit.Assert:Equal(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte,ubyte,ubyte) (FullOpts)
          -5 (-6.17 % of base) : 64698.dasm - System.Xml.Linq.XObject:get_BaseUri():System.String:this (FullOpts)


realworld.run.windows.x64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 14130688 (overridden on cmd)
Total bytes of diff: 14130469 (overridden on cmd)
Total bytes of delta: -219 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          55 : 28715.dasm (1.52 % of base)
          44 : 7085.dasm (2.99 % of base)
          32 : 12919.dasm (0.75 % of base)
          30 : 17033.dasm (0.84 % of base)
          21 : 20018.dasm (2.11 % of base)
          20 : 20001.dasm (1.83 % of base)
          19 : 13347.dasm (1.44 % of base)
          18 : 25090.dasm (0.33 % of base)
          11 : 20019.dasm (2.27 % of base)
          10 : 23354.dasm (0.18 % of base)
          10 : 26490.dasm (0.83 % of base)
           9 : 8715.dasm (0.05 % of base)
           8 : 10746.dasm (0.48 % of base)
           7 : 26197.dasm (0.18 % of base)
           7 : 34669.dasm (0.13 % of base)
           6 : 9856.dasm (0.56 % of base)
           6 : 27026.dasm (0.37 % of base)
           4 : 13132.dasm (2.05 % of base)
           4 : 12880.dasm (8.00 % of base)
           4 : 14370.dasm (0.08 % of base)

Top file improvements (bytes):
        -102 : 16480.dasm (-3.57 % of base)
         -49 : 21005.dasm (-1.67 % of base)
         -42 : 6309.dasm (-50.00 % of base)
         -42 : 5999.dasm (-50.00 % of base)
         -40 : 10116.dasm (-50.00 % of base)
         -40 : 8678.dasm (-51.28 % of base)
         -25 : 23819.dasm (-0.73 % of base)
         -23 : 24394.dasm (-11.06 % of base)
         -21 : 18619.dasm (-2.64 % of base)
         -18 : 22608.dasm (-8.18 % of base)
         -15 : 20191.dasm (-1.72 % of base)
         -15 : 21841.dasm (-0.72 % of base)
         -15 : 21852.dasm (-0.96 % of base)
         -15 : 22799.dasm (-0.53 % of base)
         -14 : 34755.dasm (-0.46 % of base)
         -13 : 402.dasm (-4.96 % of base)
         -12 : 21296.dasm (-4.92 % of base)
         -10 : 24021.dasm (-0.41 % of base)
          -7 : 25810.dasm (-1.11 % of base)
          -7 : 35609.dasm (-0.52 % of base)

60 total files with Code Size differences (29 improved, 31 regressed), 20 unchanged.

Top method regressions (bytes):
          55 (1.52 % of base) : 28715.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:BestTypeForLambdaReturns(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.ValueTuple`3[Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte]],Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Conversions,byref):Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations (FullOpts)
          44 (2.99 % of base) : 7085.dasm - FSharp.Compiler.LexFilter:rulesForBothSoftWhiteAndHardWhite$cont@2481(FSharp.Compiler.LexFilter+LexFilterImpl,FSharp.Compiler.LexFilter+TokenTup,ubyte,FSharp.Compiler.LexFilter+TokenTup,Microsoft.FSharp.Core.Unit) (FullOpts)
          32 (0.75 % of base) : 12919.dasm - FSharp.Compiler.CheckExpressions:TcRecdExpr(FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.TypedTree+TType,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`5[FSharp.Compiler.Syntax.SynType,FSharp.Compiler.Syntax.SynExpr,FSharp.Compiler.Text.Range,Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[FSharp.Compiler.Text.Range,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Position]]],FSharp.Compiler.Text.Range]],Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[FSharp.Compiler.Syntax.SynExpr,System.Tuple`2[FSharp.Compiler.Text.Range,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Position]]]],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynExprRecordField],FSharp.Compiler.Text.Range):System.Tuple`2[FSharp.Compiler.TypedTree+Expr,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv] (FullOpts)
          30 (0.84 % of base) : 17033.dasm - Microsoft.ML.Internal.Utilities.VBufferUtils:ApplyInto[float,float,float](byref,byref,byref,System.Func`4[int,float,float,float]) (FullOpts)
          21 (2.11 % of base) : 20018.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolation>g__getFormatAndCloseBrace|434_1(byref):System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationFormatClauseSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken]:this (FullOpts)
          20 (1.83 % of base) : 20001.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseInterpolation(Microsoft.CodeAnalysis.CSharp.CSharpParseOptions,System.String,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer+Interpolation,int):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationSyntax (FullOpts)
          19 (1.44 % of base) : 13347.dasm - System.Xml.XmlTextReaderImpl:ParseNumericCharRefInline(int,ubyte,System.Text.StringBuilder,byref,byref):int:this (FullOpts)
          18 (0.33 % of base) : 25090.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:BetterFunctionMember[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],ubyte,byref):int:this (FullOpts)
          11 (2.27 % of base) : 20019.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolation>g__getInterpolationCloseToken|434_2(Microsoft.CodeAnalysis.GreenNode,byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
          10 (0.83 % of base) : 26490.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitObjectElementInitializer>g__visitMemberInitializer|169_0(int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundAssignmentOperator,ubyte):System.Action`2[int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]:this (FullOpts)
          10 (0.18 % of base) : 23354.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodSymbol:CheckModifiers(ubyte,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
           9 (0.05 % of base) : 8715.dasm - FSharp.Compiler.CheckExpressions:TcMethodApplication(ubyte,FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+TType]],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Expr],FSharp.Compiler.Text.Range,FSharp.Compiler.Text.Range,System.String,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+TType],FSharp.Compiler.AccessibilityLogic+AccessorDomain,FSharp.Compiler.TypedTreeOps+Mutates,ubyte,Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[FSharp.Compiler.Infos+MethInfo,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Infos+PropInfo]]],FSharp.Compiler.NameResolution+AfterResolution,FSharp.Compiler.TypedTree+ValUseFlag,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynExpr],FSharp.Compiler.ConstraintSolver+OverallTy,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+DelayedItem]):System.Tuple`2[System.Tuple`3[FSharp.Compiler.TypedTree+Expr,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.MethodCalls+CallerNamedArg`1[FSharp.Compiler.TypedTree+Expr]],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+DelayedItem]],FSharp.Compiler.CheckExpressions+UnscopedTyparEnv] (FullOpts)
           8 (0.48 % of base) : 10746.dasm - FSharp.Compiler.TypeRelations:TypesFeasiblyEquivalent[System.__Canon](ubyte,int,FSharp.Compiler.TcGlobals+TcGlobals,System.__Canon,FSharp.Compiler.Text.Range,FSharp.Compiler.TypedTree+TType,FSharp.Compiler.TypedTree+TType):ubyte (FullOpts)
           7 (0.18 % of base) : 26197.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindExtensionMethod(Microsoft.CodeAnalysis.SyntaxNode,System.String,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):Microsoft.CodeAnalysis.CSharp.MethodGroupResolution:this (FullOpts)
           7 (0.13 % of base) : 34669.dasm - System.Management.Automation.Language.PSInvokeMemberBinder:FallbackInvokeMember(System.Dynamic.DynamicMetaObject,System.Dynamic.DynamicMetaObject[],System.Dynamic.DynamicMetaObject):System.Dynamic.DynamicMetaObject:this (FullOpts)
           6 (0.56 % of base) : 9856.dasm - FSharp.Compiler.CheckDeclarations+MutRecBindingChecking:TcMutRecBindings_Phase2A_CreateRecursiveValuesAndCheckArgumentPatterns$cont@1716-1(FSharp.Compiler.TypedTree+EntityRef,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+PreCheckingRecursiveBinding],FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,int,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.CheckDeclarations+IncrClassChecking+IncrClassCtorLhs],FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.Text.Range,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynBinding],ubyte,ubyte,Microsoft.FSharp.Core.Unit):System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckDeclarations+MutRecBindingChecking+TyconBindingPhase2A],System.Tuple`5[Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.CheckDeclarations+IncrClassChecking+IncrClassCtorLhs],FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,int,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+PreCheckingRecursiveBinding]]] (FullOpts)
           6 (0.37 % of base) : 27026.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass+LocalState,System.__Canon]:VisitIsPatternExpression(Microsoft.CodeAnalysis.CSharp.BoundIsPatternExpression):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
           4 (2.05 % of base) : 13132.dasm - FSharp.Compiler.NameResolution:LookupTypeNameInEnvMaybeHaveArity(FSharp.Compiler.NameResolution+FullyQualifiedFlag,System.String,FSharp.Compiler.NameResolution+TypeNameResolutionInfo,FSharp.Compiler.NameResolution+NameResolutionEnv):Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+EntityRef] (FullOpts)
           4 (8.00 % of base) : 12880.dasm - FSharp.Compiler.NameResolution:LookupTypeNameInEnvNoArity(FSharp.Compiler.NameResolution+FullyQualifiedFlag,System.String,FSharp.Compiler.NameResolution+NameResolutionEnv):Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+EntityRef] (FullOpts)
           4 (0.76 % of base) : 19981.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolatedStringToken>g__getOpenQuote|428_1(byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)

Top method improvements (bytes):
        -102 (-3.57 % of base) : 16480.dasm - Microsoft.ML.Data.SchemaDefinition:Create(System.Type,int):Microsoft.ML.Data.SchemaDefinition (FullOpts)
         -49 (-1.67 % of base) : 21005.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (FullOpts)
         -42 (-50.00 % of base) : 6309.dasm - System.Boolean:Equals(System.Object):ubyte:this (FullOpts)
         -42 (-50.00 % of base) : 5999.dasm - System.Byte:Equals(System.Object):ubyte:this (FullOpts)
         -40 (-51.28 % of base) : 8678.dasm - System.Int32:Equals(System.Object):ubyte:this (FullOpts)
         -40 (-50.00 % of base) : 10116.dasm - System.Int64:Equals(System.Object):ubyte:this (FullOpts)
         -25 (-0.73 % of base) : 23819.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:ComputeImplementationForInterfaceMember(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,byref):Microsoft.CodeAnalysis.CSharp.Symbol (FullOpts)
         -23 (-11.06 % of base) : 24394.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckConstantBounds(byte,Microsoft.CodeAnalysis.ConstantValue,byref):ubyte (FullOpts)
         -21 (-2.64 % of base) : 18619.dasm - Roslyn.Utilities.CommandLineUtilities:SplitCommandLineIntoArguments(System.ReadOnlySpan`1[ushort],ubyte,System.Text.StringBuilder,System.Collections.Generic.List`1[System.String],byref) (FullOpts)
         -18 (-8.18 % of base) : 22608.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:this (FullOpts)
         -15 (-0.96 % of base) : 21852.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindArgumentAndName(Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Syntax.NameColonSyntax,ubyte):this (FullOpts)
         -15 (-0.72 % of base) : 21841.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetSpecialType(byte):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (FullOpts)
         -15 (-0.53 % of base) : 22799.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
         -15 (-1.72 % of base) : 20191.dasm - Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString:FromSource(System.String):Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString (FullOpts)
         -14 (-0.46 % of base) : 34755.dasm - System.Management.Automation.Adapter:FindBestMethodImpl(System.Management.Automation.MethodInformation[],System.Management.Automation.PSMethodInvocationConstraints,ubyte,System.Object[],byref,byref,byref):System.Management.Automation.MethodInformation (FullOpts)
         -13 (-4.96 % of base) : 402.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
         -12 (-4.92 % of base) : 21296.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
         -10 (-0.41 % of base) : 24021.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourcePropertySymbolBase:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
          -7 (-1.11 % of base) : 25810.dasm - Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass:LeaveParameter(Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.Location):this (FullOpts)
          -7 (-0.52 % of base) : 35609.dasm - System.Management.Automation.PowerShell:CoreInvoke[System.__Canon,System.__Canon](System.Management.Automation.PSDataCollection`1[System.__Canon],System.Management.Automation.PSDataCollection`1[System.__Canon],System.Management.Automation.PSInvocationSettings):this (FullOpts)

Top method regressions (percentages):
           4 (8.00 % of base) : 12880.dasm - FSharp.Compiler.NameResolution:LookupTypeNameInEnvNoArity(FSharp.Compiler.NameResolution+FullyQualifiedFlag,System.String,FSharp.Compiler.NameResolution+NameResolutionEnv):Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+EntityRef] (FullOpts)
           2 (3.64 % of base) : 17635.dasm - System.Net.Http.HttpConnectionPool:GetSslOptionsForRequest(System.Net.Http.HttpRequestMessage):System.Net.Security.SslClientAuthenticationOptions:this (FullOpts)
           3 (3.06 % of base) : 18179.dasm - System.Net.Http.HttpConnection+HttpContentReadStream:Dispose(ubyte):this (FullOpts)
          44 (2.99 % of base) : 7085.dasm - FSharp.Compiler.LexFilter:rulesForBothSoftWhiteAndHardWhite$cont@2481(FSharp.Compiler.LexFilter+LexFilterImpl,FSharp.Compiler.LexFilter+TokenTup,ubyte,FSharp.Compiler.LexFilter+TokenTup,Microsoft.FSharp.Core.Unit) (FullOpts)
           3 (2.34 % of base) : 24514.dasm - Microsoft.CodeAnalysis.CSharp.Binder:WithCheckedOrUncheckedRegion(ubyte):Microsoft.CodeAnalysis.CSharp.Binder:this (FullOpts)
           3 (2.34 % of base) : 34312.dasm - System.Management.Automation.CompiledScriptBlockData:Compile(ubyte):ubyte:this (FullOpts)
          11 (2.27 % of base) : 20019.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolation>g__getInterpolationCloseToken|434_2(Microsoft.CodeAnalysis.GreenNode,byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
           2 (2.15 % of base) : 34007.dasm - System.Management.Automation.LocationGlobber:IsProviderDirectPath(System.String):ubyte (FullOpts)
          21 (2.11 % of base) : 20018.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolation>g__getFormatAndCloseBrace|434_1(byref):System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationFormatClauseSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken]:this (FullOpts)
           4 (2.05 % of base) : 13132.dasm - FSharp.Compiler.NameResolution:LookupTypeNameInEnvMaybeHaveArity(FSharp.Compiler.NameResolution+FullyQualifiedFlag,System.String,FSharp.Compiler.NameResolution+TypeNameResolutionInfo,FSharp.Compiler.NameResolution+NameResolutionEnv):Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+EntityRef] (FullOpts)
           2 (2.04 % of base) : 25379.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetSymbol[System.__Canon](Microsoft.CodeAnalysis.ISymbol):System.__Canon (FullOpts)
          20 (1.83 % of base) : 20001.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseInterpolation(Microsoft.CodeAnalysis.CSharp.CSharpParseOptions,System.String,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer+Interpolation,int):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationSyntax (FullOpts)
          55 (1.52 % of base) : 28715.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:BestTypeForLambdaReturns(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.ValueTuple`3[Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte]],Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Conversions,byref):Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations (FullOpts)
          19 (1.44 % of base) : 13347.dasm - System.Xml.XmlTextReaderImpl:ParseNumericCharRefInline(int,ubyte,System.Text.StringBuilder,byref,byref):int:this (FullOpts)
           4 (0.89 % of base) : 16925.dasm - Microsoft.ML.Trainers.KMeansUtils+<>c__DisplayClass3_0:<ParallelWeightedReservoirSample>b__1(byref,int,Microsoft.ML.Internal.Utilities.Heap`1[Microsoft.ML.Trainers.KMeansUtils+WeightedPoint],System.Random):this (FullOpts)
           2 (0.88 % of base) : 35049.dasm - System.Collections.Generic.SortedSet`1+Enumerator[System.Collections.Generic.KeyValuePair`2[int,System.__Canon]]:Initialize():this (FullOpts)
          30 (0.84 % of base) : 17033.dasm - Microsoft.ML.Internal.Utilities.VBufferUtils:ApplyInto[float,float,float](byref,byref,byref,System.Func`4[int,float,float,float]) (FullOpts)
          10 (0.83 % of base) : 26490.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitObjectElementInitializer>g__visitMemberInitializer|169_0(int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundAssignmentOperator,ubyte):System.Action`2[int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]:this (FullOpts)
           2 (0.76 % of base) : 26190.dasm - System.Collections.Generic.SortedSet`1+Enumerator[System.Collections.Generic.KeyValuePair`2[int,Microsoft.CodeAnalysis.CSharp.NullableWalker+Snapshot]]:Initialize():this (FullOpts)
           4 (0.76 % of base) : 19981.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolatedStringToken>g__getOpenQuote|428_1(byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)

Top method improvements (percentages):
         -40 (-51.28 % of base) : 8678.dasm - System.Int32:Equals(System.Object):ubyte:this (FullOpts)
         -42 (-50.00 % of base) : 6309.dasm - System.Boolean:Equals(System.Object):ubyte:this (FullOpts)
         -42 (-50.00 % of base) : 5999.dasm - System.Byte:Equals(System.Object):ubyte:this (FullOpts)
         -40 (-50.00 % of base) : 10116.dasm - System.Int64:Equals(System.Object):ubyte:this (FullOpts)
         -23 (-11.06 % of base) : 24394.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckConstantBounds(byte,Microsoft.CodeAnalysis.ConstantValue,byref):ubyte (FullOpts)
         -18 (-8.18 % of base) : 22608.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:this (FullOpts)
         -13 (-4.96 % of base) : 402.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
         -12 (-4.92 % of base) : 21296.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
        -102 (-3.57 % of base) : 16480.dasm - Microsoft.ML.Data.SchemaDefinition:Create(System.Type,int):Microsoft.ML.Data.SchemaDefinition (FullOpts)
          -4 (-2.78 % of base) : 18101.dasm - System.Globalization.CultureData:GetSeparator(System.String,System.String):System.String (FullOpts)
         -21 (-2.64 % of base) : 18619.dasm - Roslyn.Utilities.CommandLineUtilities:SplitCommandLineIntoArguments(System.ReadOnlySpan`1[ushort],ubyte,System.Text.StringBuilder,System.Collections.Generic.List`1[System.String],byref) (FullOpts)
         -15 (-1.72 % of base) : 20191.dasm - Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString:FromSource(System.String):Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString (FullOpts)
         -49 (-1.67 % of base) : 21005.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (FullOpts)
          -5 (-1.36 % of base) : 27690.dasm - System.Collections.Immutable.ImmutableList`1+Enumerator[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:ResetStack():this (FullOpts)
          -2 (-1.32 % of base) : 3155.dasm - System.Globalization.Ordinal:CompareStringIgnoreCase(byref,int,byref,int):int (FullOpts)
          -5 (-1.24 % of base) : 7499.dasm - System.Xml.Linq.XContainer+<GetDescendants>d__38:MoveNext():ubyte:this (FullOpts)
          -2 (-1.11 % of base) : 660.dasm - System.Number:RoundNumber(byref,int,ubyte) (FullOpts)
          -7 (-1.11 % of base) : 25810.dasm - Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass:LeaveParameter(Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.Location):this (FullOpts)
          -6 (-1.09 % of base) : 22294.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:SetUpdatedSymbol(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)
          -4 (-1.01 % of base) : 27678.dasm - Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,ubyte]:AddNode(Microsoft.CodeAnalysis.SmallDictionary`2+AvlNode[System.__Canon,ubyte],Microsoft.CodeAnalysis.SmallDictionary`2+AvlNode[System.__Canon,ubyte],System.__Canon,ubyte):this (FullOpts)


smoke_tests.nativeaot.windows.x64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 5083011 (overridden on cmd)
Total bytes of diff: 5078698 (overridden on cmd)
Total bytes of delta: -4313 (-0.08 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          27 : 17671.dasm (3.16 % of base)
          27 : 20271.dasm (3.16 % of base)
          27 : 22931.dasm (3.16 % of base)
          27 : 2563.dasm (3.16 % of base)
          27 : 8322.dasm (3.16 % of base)
          16 : 14349.dasm (1.40 % of base)
          16 : 8632.dasm (1.40 % of base)
           8 : 22506.dasm (1.84 % of base)
           8 : 3388.dasm (0.29 % of base)
           8 : 14480.dasm (0.47 % of base)
           8 : 14467.dasm (0.29 % of base)
           8 : 17188.dasm (1.84 % of base)
           8 : 19865.dasm (1.84 % of base)
           8 : 2140.dasm (1.84 % of base)
           8 : 3442.dasm (0.46 % of base)
           8 : 6725.dasm (1.84 % of base)
           5 : 20929.dasm (0.18 % of base)
           5 : 15703.dasm (0.18 % of base)
           5 : 18342.dasm (0.18 % of base)
           5 : 459.dasm (0.18 % of base)

Top file improvements (bytes):
         -60 : 19465.dasm (-47.24 % of base)
         -60 : 19475.dasm (-47.24 % of base)
         -60 : 22067.dasm (-47.24 % of base)
         -60 : 6075.dasm (-48.39 % of base)
         -60 : 6087.dasm (-49.59 % of base)
         -60 : 9046.dasm (-49.59 % of base)
         -60 : 11271.dasm (-48.39 % of base)
         -60 : 16776.dasm (-47.24 % of base)
         -60 : 16782.dasm (-47.24 % of base)
         -60 : 22060.dasm (-47.24 % of base)
         -57 : 12859.dasm (-64.04 % of base)
         -57 : 12861.dasm (-64.04 % of base)
         -57 : 7151.dasm (-64.04 % of base)
         -57 : 7153.dasm (-64.04 % of base)
         -54 : 18575.dasm (-50.94 % of base)
         -54 : 30442.dasm (-55.10 % of base)
         -54 : 762.dasm (-50.94 % of base)
         -54 : 15934.dasm (-50.94 % of base)
         -54 : 21214.dasm (-50.94 % of base)
         -54 : 3832.dasm (-50.94 % of base)

84 total files with Code Size differences (56 improved, 28 regressed), 20 unchanged.

Top method regressions (bytes):
          27 (3.16 % of base) : 17671.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
          27 (3.16 % of base) : 20271.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
          27 (3.16 % of base) : 22931.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
          27 (3.16 % of base) : 2563.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
          27 (3.16 % of base) : 8322.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
          16 (1.40 % of base) : 14349.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (FullOpts)
          16 (1.40 % of base) : 8632.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (FullOpts)
           8 (1.84 % of base) : 22506.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
           8 (1.84 % of base) : 17188.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
           8 (1.84 % of base) : 19865.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
           8 (1.84 % of base) : 2140.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
           8 (1.84 % of base) : 6725.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
           8 (0.29 % of base) : 3388.dasm - System.Text.UnicodeEncoding:GetBytes(ulong,int,ulong,int,System.Text.EncoderNLS):int:this (FullOpts)
           8 (0.29 % of base) : 14467.dasm - System.Text.UnicodeEncoding:GetBytes(ulong,int,ulong,int,System.Text.EncoderNLS):int:this (FullOpts)
           8 (0.47 % of base) : 14480.dasm - System.Text.UTF32Encoding:GetBytes(ulong,int,ulong,int,System.Text.EncoderNLS):int:this (FullOpts)
           8 (0.46 % of base) : 3442.dasm - System.Text.UTF32Encoding:GetBytes(ulong,int,ulong,int,System.Text.EncoderNLS):int:this (FullOpts)
           5 (0.18 % of base) : 20929.dasm - System.Text.UnicodeEncoding:GetBytes(ulong,int,ulong,int,System.Text.EncoderNLS):int:this (FullOpts)
           5 (0.18 % of base) : 15703.dasm - System.Text.UnicodeEncoding:GetBytes(ulong,int,ulong,int,System.Text.EncoderNLS):int:this (FullOpts)
           5 (0.18 % of base) : 18342.dasm - System.Text.UnicodeEncoding:GetBytes(ulong,int,ulong,int,System.Text.EncoderNLS):int:this (FullOpts)
           5 (0.18 % of base) : 459.dasm - System.Text.UnicodeEncoding:GetBytes(ulong,int,ulong,int,System.Text.EncoderNLS):int:this (FullOpts)

Top method improvements (bytes):
         -60 (-47.24 % of base) : 19465.dasm - System.Double:Equals(System.Object):ubyte:this (FullOpts)
         -60 (-48.39 % of base) : 6075.dasm - System.Double:Equals(System.Object):ubyte:this (FullOpts)
         -60 (-48.39 % of base) : 11271.dasm - System.Double:Equals(System.Object):ubyte:this (FullOpts)
         -60 (-47.24 % of base) : 16776.dasm - System.Double:Equals(System.Object):ubyte:this (FullOpts)
         -60 (-47.24 % of base) : 22060.dasm - System.Double:Equals(System.Object):ubyte:this (FullOpts)
         -60 (-47.24 % of base) : 19475.dasm - System.Single:Equals(System.Object):ubyte:this (FullOpts)
         -60 (-47.24 % of base) : 22067.dasm - System.Single:Equals(System.Object):ubyte:this (FullOpts)
         -60 (-49.59 % of base) : 6087.dasm - System.Single:Equals(System.Object):ubyte:this (FullOpts)
         -60 (-49.59 % of base) : 9046.dasm - System.Single:Equals(System.Object):ubyte:this (FullOpts)
         -60 (-47.24 % of base) : 16782.dasm - System.Single:Equals(System.Object):ubyte:this (FullOpts)
         -57 (-64.04 % of base) : 12859.dasm - System.RuntimeFieldHandle:Equals(System.Object):ubyte:this (FullOpts)
         -57 (-64.04 % of base) : 7151.dasm - System.RuntimeFieldHandle:Equals(System.Object):ubyte:this (FullOpts)
         -57 (-64.04 % of base) : 12861.dasm - System.RuntimeMethodHandle:Equals(System.Object):ubyte:this (FullOpts)
         -57 (-64.04 % of base) : 7153.dasm - System.RuntimeMethodHandle:Equals(System.Object):ubyte:this (FullOpts)
         -54 (-50.94 % of base) : 18575.dasm - Internal.Reflection.Core.QScopeDefinition:Equals(System.Object):ubyte:this (FullOpts)
         -54 (-50.94 % of base) : 762.dasm - Internal.Reflection.Core.QScopeDefinition:Equals(System.Object):ubyte:this (FullOpts)
         -54 (-50.94 % of base) : 15934.dasm - Internal.Reflection.Core.QScopeDefinition:Equals(System.Object):ubyte:this (FullOpts)
         -54 (-50.94 % of base) : 21214.dasm - Internal.Reflection.Core.QScopeDefinition:Equals(System.Object):ubyte:this (FullOpts)
         -54 (-50.94 % of base) : 3832.dasm - Internal.Reflection.Core.QScopeDefinition:Equals(System.Object):ubyte:this (FullOpts)
         -54 (-55.10 % of base) : 30442.dasm - System.Runtime.Serialization.StreamingContext:Equals(System.Object):ubyte:this (FullOpts)

Top method regressions (percentages):
           3 (3.26 % of base) : 5491.dasm - System.IO.FileStream:ValidateHandle(Microsoft.Win32.SafeHandles.SafeFileHandle,int,int,ubyte) (FullOpts)
          27 (3.16 % of base) : 17671.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
          27 (3.16 % of base) : 20271.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
          27 (3.16 % of base) : 22931.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
          27 (3.16 % of base) : 2563.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
          27 (3.16 % of base) : 8322.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
           2 (3.03 % of base) : 32374.dasm - ThreadTest+Resurrector:Finalize():this (FullOpts)
           3 (2.91 % of base) : 29075.dasm - System.Threading.Tasks.Task`1[System.Threading.Tasks.VoidTaskResult]:.ctor(ubyte,System.Threading.Tasks.VoidTaskResult,int,System.Threading.CancellationToken):this (FullOpts)
           3 (2.59 % of base) : 30755.dasm - System.Threading.Tasks.Task`1[System.__Canon]:.ctor(ubyte,System.__Canon,int,System.Threading.CancellationToken):this (FullOpts)
           8 (1.84 % of base) : 22506.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
           8 (1.84 % of base) : 17188.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
           8 (1.84 % of base) : 19865.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
           8 (1.84 % of base) : 2140.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
           8 (1.84 % of base) : 6725.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
           3 (1.52 % of base) : 11333.dasm - Internal.TypeSystem.TypeSystemContext:GetArrayTypesCache(ubyte,int):Internal.TypeSystem.TypeSystemContext+RuntimeTypeHandleToParameterTypeRuntimeTypeHandleHashtable (FullOpts)
           3 (1.52 % of base) : 6003.dasm - Internal.TypeSystem.TypeSystemContext:GetArrayTypesCache(ubyte,int):Internal.TypeSystem.TypeSystemContext+RuntimeTypeHandleToParameterTypeRuntimeTypeHandleHashtable (FullOpts)
          16 (1.40 % of base) : 14349.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (FullOpts)
          16 (1.40 % of base) : 8632.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (FullOpts)
           2 (1.06 % of base) : 6408.dasm - Internal.Runtime.CompilerServices.RuntimeSignature:Equals(Internal.Runtime.CompilerServices.RuntimeSignature):ubyte:this (FullOpts)
           2 (1.06 % of base) : 11766.dasm - Internal.Runtime.CompilerServices.RuntimeSignature:Equals(Internal.Runtime.CompilerServices.RuntimeSignature):ubyte:this (FullOpts)

Top method improvements (percentages):
         -57 (-64.04 % of base) : 12859.dasm - System.RuntimeFieldHandle:Equals(System.Object):ubyte:this (FullOpts)
         -57 (-64.04 % of base) : 7151.dasm - System.RuntimeFieldHandle:Equals(System.Object):ubyte:this (FullOpts)
         -57 (-64.04 % of base) : 12861.dasm - System.RuntimeMethodHandle:Equals(System.Object):ubyte:this (FullOpts)
         -57 (-64.04 % of base) : 7153.dasm - System.RuntimeMethodHandle:Equals(System.Object):ubyte:this (FullOpts)
         -50 (-58.82 % of base) : 20556.dasm - System.Int32:Equals(System.Object):ubyte:this (FullOpts)
         -50 (-58.82 % of base) : 53.dasm - System.Int32:Equals(System.Object):ubyte:this (FullOpts)
         -50 (-58.82 % of base) : 17967.dasm - System.Int32:Equals(System.Object):ubyte:this (FullOpts)
         -50 (-58.82 % of base) : 15201.dasm - System.Int32:Equals(System.Object):ubyte:this (FullOpts)
         -50 (-58.82 % of base) : 2924.dasm - System.Int32:Equals(System.Object):ubyte:this (FullOpts)
         -50 (-58.82 % of base) : 18409.dasm - System.UInt32:Equals(System.Object):ubyte:this (FullOpts)
         -50 (-58.82 % of base) : 574.dasm - System.UInt32:Equals(System.Object):ubyte:this (FullOpts)
         -50 (-58.82 % of base) : 15873.dasm - System.UInt32:Equals(System.Object):ubyte:this (FullOpts)
         -50 (-58.82 % of base) : 21174.dasm - System.UInt32:Equals(System.Object):ubyte:this (FullOpts)
         -50 (-58.82 % of base) : 3765.dasm - System.UInt32:Equals(System.Object):ubyte:this (FullOpts)
         -50 (-57.47 % of base) : 1145.dasm - Internal.Runtime.TypeManagerHandle:Equals(System.Object):ubyte:this (FullOpts)
         -50 (-57.47 % of base) : 4421.dasm - Internal.Runtime.TypeManagerHandle:Equals(System.Object):ubyte:this (FullOpts)
         -50 (-57.47 % of base) : 3958.dasm - System.Int64:Equals(System.Object):ubyte:this (FullOpts)
         -50 (-57.47 % of base) : 902.dasm - System.Int64:Equals(System.Object):ubyte:this (FullOpts)
         -50 (-57.47 % of base) : 16086.dasm - System.Int64:Equals(System.Object):ubyte:this (FullOpts)
         -50 (-57.47 % of base) : 18737.dasm - System.UInt64:Equals(System.Object):ubyte:this (FullOpts)